您好,登錄后才能下訂單哦!
前言
過(guò)濾器(Filter)是Servlet中常用的技術(shù),可以實(shí)現(xiàn)用戶在訪問(wèn)某個(gè)目標(biāo)資源之前,對(duì)訪問(wèn)的請(qǐng)求和響應(yīng)進(jìn)行攔截,常用的場(chǎng)景有登錄校驗(yàn)、權(quán)限控制、敏感詞過(guò)濾等,下面介紹下Spring Boot配置過(guò)濾器的兩種方式。
使用@WebFilter注解為聲明當(dāng)前類為filter,第一個(gè)參數(shù)為該filter起一個(gè)名字,第二個(gè)參數(shù)為說(shuō)明要攔截的請(qǐng)求地址,當(dāng)前類需要實(shí)現(xiàn)Filter接口,里面有三個(gè)方法,分別為過(guò)濾器初始化、過(guò)濾方法和過(guò)濾器銷毀。
@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)后瀏覽器訪問(wèn)http://localhost:8080/test,可以看到過(guò)濾器已生效,后臺(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配置過(guò)濾器的兩種方式已經(jīng)全部實(shí)現(xiàn),有問(wèn)題歡迎留言溝通哦!
完整源碼地址: https://github.com/suisui2019/springboot-study
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。