前言
創(chuàng)新互聯(lián)公司"三網(wǎng)合一"的企業(yè)建站思路。企業(yè)可建設(shè)擁有電腦版、微信版、手機(jī)版的企業(yè)網(wǎng)站。實(shí)現(xiàn)跨屏營(yíng)銷,產(chǎn)品發(fā)布一步更新,電腦網(wǎng)絡(luò)+移動(dòng)網(wǎng)絡(luò)一網(wǎng)打盡,滿足企業(yè)的營(yíng)銷需求!創(chuàng)新互聯(lián)公司具備承接各種類型的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作項(xiàng)目的能力。經(jīng)過10多年的努力的開拓,為不同行業(yè)的企事業(yè)單位提供了優(yōu)質(zhì)的服務(wù),并獲得了客戶的一致好評(píng)。
過濾器(Filter)是Servlet中常用的技術(shù),可以實(shí)現(xiàn)用戶在訪問某個(gè)目標(biāo)資源之前,對(duì)訪問的請(qǐng)求和響應(yīng)進(jìn)行攔截,常用的場(chǎng)景有登錄校驗(yàn)、權(quán)限控制、敏感詞過濾等,下面介紹下Spring Boot配置過濾器的兩種方式。
使用@WebFilter注解為聲明當(dāng)前類為filter,第一個(gè)參數(shù)為該filter起一個(gè)名字,第二個(gè)參數(shù)為說明要攔截的請(qǐng)求地址,當(dāng)前類需要實(shí)現(xiàn)Filter接口,里面有三個(gè)方法,分別為過濾器初始化、過濾方法和過濾器銷毀。
@Slf4j @WebFilter(filterName = "myFilter1", urlPatterns = "/*") public class MyFilter1 implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { log.info(filterConfig.getFilterName() + " init"); } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) { log.info("myFilter1 begin"); try { log.info("業(yè)務(wù)方法執(zhí)行"); chain.doFilter(request, response); } catch (Exception e) { log.error("error!", e); } log.info("myFilter1 end"); } @Override public void destroy() { } }
啟動(dòng)類添加@ServletComponentScan注解,@ServletComponentScan注解所掃描的包路徑必須包含該Filter,代碼如下:
@SpringBootApplication @ServletComponentScan(basePackages = "com.example.demo.filter") public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
新建MyFilter2.java類,不要加注解@WebFilter,代碼如下:
@Slf4j public class MyFilter2 implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { log.info(filterConfig.getFilterName() + " init"); } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) { log.info("myFilter2 begin"); try { log.info("業(yè)務(wù)方法執(zhí)行"); chain.doFilter(request, response); } catch (Exception e) { log.error("error!", e); } log.info("myFilter2 end"); } @Override public void destroy() { } }
新建配置類WebConfig.java,配置bean,代碼如下:
@Configuration public class WebConfig { @Bean public FilterRegistrationBean testFilterRegistration() { FilterRegistrationBean registration = new FilterRegistrationBean(new MyFilter2()); registration.addUrlPatterns("/test"); // registration.setName("myFilter2"); return registration; } }
項(xiàng)目啟動(dòng)后瀏覽器訪問http://localhost:8080/test,可以看到過濾器已生效,后臺(tái)打印日志如下:
[nio-8080-exec-1] com.example.demo.filter.MyFilter1 : myFilter1 begin
[nio-8080-exec-1] com.example.demo.filter.MyFilter1 : 業(yè)務(wù)方法執(zhí)行
[nio-8080-exec-1] com.example.demo.filter.MyFilter1 : myFilter1 end
到此Spring Boot配置過濾器的兩種方式已經(jīng)全部實(shí)現(xiàn),有問題歡迎留言溝通哦!
完整源碼地址: https://github.com/suisui2019/springboot-study
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)創(chuàng)新互聯(lián)的支持。