国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

springboot @WebFilter注解過濾器的實現(xiàn)

瀏覽:17日期:2023-05-29 11:56:02

@WebFilter注解過濾器

@WebFilter加在過濾器的注解上使用

import lombok.extern.slf4j.Slf4j;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.annotation.WebFilter;import java.io.IOException;@WebFilter(urlPatterns = '/*')@Slf4jpublic class WebFilterTest implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { log.info('WebFilterTest --- init'); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { log.info('WebFilterTest --- doFilter'); filterChain.doFilter(servletRequest,servletResponse); } @Override public void destroy() { log.info('WebFilterTest --- destroy'); }}

@WebFilter源碼:

@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface WebFilter { String description() default ''; /**Filter顯示名*/ String displayName() default ''; /**配置參數(shù)*/ WebInitParam[] initParams() default {}; /**Filter名稱*/ String filterName() default ''; String smallIcon() default ''; String largeIcon() default ''; /**指定對哪些Servlet進行過濾*/ String[] servletNames() default {}; /**指定攔截的路徑*/ String[] value() default {}; /**指定攔截的路徑*/ String[] urlPatterns() default {}; /**指定Filter對哪種方式的請求進行過濾*/ DispatcherType[] dispatcherTypes() default {DispatcherType.REQUEST}; /**指定Filter是否支持異步模式*/ boolean asyncSupported() default false;}

在springBoot的啟動類中加入注解:

import org.springframework.boot.web.servlet.ServletComponentScan;@ServletComponentScan

多個@WebFilter注解的過濾器可以配合@Order()注解實現(xiàn)執(zhí)行過濾的順序

import org.springframework.core.annotation.Order;@WebFilter(urlPatterns = '/*')@Slf4j@Order(1)public class WebFilterTest implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { log.info('WebFilterTest --- init'); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { log.info('WebFilterTest --- doFilter'); filterChain.doFilter(servletRequest,servletResponse); } @Override public void destroy() { log.info('WebFilterTest --- destroy'); }}

@WebFilter(urlPatterns = '/*')@Slf4j@Order(2)public class WebFilterTest2 implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { log.info('2---WebFilterTest2 --- init'); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { log.info('2 --- WebFilterTest2 --- doFilter'); filterChain.doFilter(servletRequest,servletResponse); } @Override public void destroy() { log.info('WebFilterTest2 --- destroy'); }}

執(zhí)行結(jié)果

WebFilterTest --- doFilter2 --- WebFilterTest2 --- doFilter

不使用注解的方式使用過濾器

創(chuàng)建過濾器類

public class WebFilterTest implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { log.info('WebFilterTest --- init'); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { log.info('WebFilterTest --- doFilter'); filterChain.doFilter(servletRequest,servletResponse); } @Override public void destroy() { log.info('WebFilterTest --- destroy'); }}

注冊過濾器

@Configurationpublic class FilterConfig { @Bean public WebFilterTest webFilterTest(){ return new WebFilterTest(); } @Bean public FilterRegistrationBean filterRegist(){ FilterRegistrationBean frBean = new FilterRegistrationBean(); frBean.setFilter(webFilterTest()); frBean.setOrder(1); frBean.addUrlPatterns('/*'); return frBean; }}

多個過濾器注冊

再添加一個過濾器:

@Slf4jpublic class WebFilterTest2 implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { log.info('2---WebFilterTest2 --- init'); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { log.info('2 --- WebFilterTest2 --- doFilter'); filterChain.doFilter(servletRequest,servletResponse); } @Override public void destroy() { log.info('WebFilterTest2 --- destroy'); }}

修改配置類:

@Configurationpublic class FilterConfig { @Bean public WebFilterTest webFilterTest(){ return new WebFilterTest(); } @Bean public WebFilterTest2 webFilterTest2(){ return new WebFilterTest2(); } @Bean public FilterRegistrationBean filterRegist(){ FilterRegistrationBean frBean = new FilterRegistrationBean(); frBean.setFilter(webFilterTest()); frBean.setOrder(1); frBean.addUrlPatterns('/*'); return frBean; } @Bean public FilterRegistrationBean filterRegist2(){ FilterRegistrationBean frBean = new FilterRegistrationBean(); frBean.setFilter(webFilterTest2()); frBean.setOrder(2); frBean.addUrlPatterns('/*'); return frBean; }}

到此這篇關于springboot @WebFilter注解過濾器的實現(xiàn)的文章就介紹到這了,更多相關springboot @WebFilter注解過濾器內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Spring
相關文章:
主站蜘蛛池模板: 芮城县| 万宁市| 沂源县| 西藏| 略阳县| 铁力市| 金乡县| 衡阳市| 天水市| 且末县| 区。| 堆龙德庆县| 邵阳市| 察隅县| 思南县| 黎川县| 卢龙县| 淮安市| 乐东| 双城市| 秦皇岛市| 九龙县| 灌云县| 南宁市| 大足县| 赤水市| 普安县| 太和县| 常州市| 清原| 肃南| 萝北县| 庆阳市| 治县。| 调兵山市| 晋州市| 岱山县| 丹江口市| 永靖县| 苍溪县| 哈巴河县|