springboot @WebFilter注解过滤器的实现
@WebFilter注解过滤器
@WebFilter加在过滤器的注解上使用
importlombok.extern.slf4j.Slf4j;
importjavax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
importjavax.servlet.annotation.WebFilter;
importjava.io.IOException;
@WebFilter(urlPatterns="/*")
@Slf4j
publicclassWebFilterTestimplementsFilter{
@Override
publicvoidinit(FilterConfigfilterConfig)throwsServletException{
log.info("WebFilterTest---init");
}
@Override
publicvoiddoFilter(ServletRequestservletRequest,ServletResponseservletResponse,FilterChainfilterChain)throwsIOException,ServletException{
log.info("WebFilterTest---doFilter");
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
publicvoiddestroy(){
log.info("WebFilterTest---destroy");
}
}
@WebFilter源码:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public@interfaceWebFilter{
Stringdescription()default"";
/**Filter显示名*/
StringdisplayName()default"";
/**配置参数*/
WebInitParam[]initParams()default{};
/**Filter名称*/
StringfilterName()default"";
StringsmallIcon()default"";
StringlargeIcon()default"";
/**指定对哪些Servlet进行过滤*/
String[]servletNames()default{};
/**指定拦截的路径*/
String[]value()default{};
/**指定拦截的路径*/
String[]urlPatterns()default{};
/**指定Filter对哪种方式的请求进行过滤*/
DispatcherType[]dispatcherTypes()default{DispatcherType.REQUEST};
/**指定Filter是否支持异步模式*/
booleanasyncSupported()defaultfalse;
}
在springBoot的启动类中加入注解:
importorg.springframework.boot.web.servlet.ServletComponentScan; @ServletComponentScan
多个@WebFilter注解的过滤器可以配合@Order()注解实现执行过滤的顺序
importorg.springframework.core.annotation.Order;
@WebFilter(urlPatterns="/*")
@Slf4j
@Order(1)
publicclassWebFilterTestimplementsFilter{
@Override
publicvoidinit(FilterConfigfilterConfig)throwsServletException{
log.info("WebFilterTest---init");
}
@Override
publicvoiddoFilter(ServletRequestservletRequest,ServletResponseservletResponse,FilterChainfilterChain)throwsIOException,ServletException{
log.info("WebFilterTest---doFilter");
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
publicvoiddestroy(){
log.info("WebFilterTest---destroy");
}
}
@WebFilter(urlPatterns="/*")
@Slf4j
@Order(2)
publicclassWebFilterTest2implementsFilter{
@Override
publicvoidinit(FilterConfigfilterConfig)throwsServletException{
log.info("2---WebFilterTest2---init");
}
@Override
publicvoiddoFilter(ServletRequestservletRequest,ServletResponseservletResponse,FilterChainfilterChain)throwsIOException,ServletException{
log.info("2---WebFilterTest2---doFilter");
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
publicvoiddestroy(){
log.info("WebFilterTest2---destroy");
}
}
执行结果
WebFilterTest---doFilter
2---WebFilterTest2---doFilter
不使用注解的方式使用过滤器
创建过滤器类
publicclassWebFilterTestimplementsFilter{
@Override
publicvoidinit(FilterConfigfilterConfig)throwsServletException{
log.info("WebFilterTest---init");
}
@Override
publicvoiddoFilter(ServletRequestservletRequest,ServletResponseservletResponse,FilterChainfilterChain)throwsIOException,ServletException{
log.info("WebFilterTest---doFilter");
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
publicvoiddestroy(){
log.info("WebFilterTest---destroy");
}
}
注册过滤器
@Configuration
publicclassFilterConfig{
@Bean
publicWebFilterTestwebFilterTest(){
returnnewWebFilterTest();
}
@Bean
publicFilterRegistrationBeanfilterRegist(){
FilterRegistrationBeanfrBean=newFilterRegistrationBean();
frBean.setFilter(webFilterTest());
frBean.setOrder(1);
frBean.addUrlPatterns("/*");
returnfrBean;
}
}
多个过滤器注册
再添加一个过滤器:
@Slf4j
publicclassWebFilterTest2implementsFilter{
@Override
publicvoidinit(FilterConfigfilterConfig)throwsServletException{
log.info("2---WebFilterTest2---init");
}
@Override
publicvoiddoFilter(ServletRequestservletRequest,ServletResponseservletResponse,FilterChainfilterChain)throwsIOException,ServletException{
log.info("2---WebFilterTest2---doFilter");
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
publicvoiddestroy(){
log.info("WebFilterTest2---destroy");
}
}
修改配置类:
@Configuration
publicclassFilterConfig{
@Bean
publicWebFilterTestwebFilterTest(){
returnnewWebFilterTest();
}
@Bean
publicWebFilterTest2webFilterTest2(){
returnnewWebFilterTest2();
}
@Bean
publicFilterRegistrationBeanfilterRegist(){
FilterRegistrationBeanfrBean=newFilterRegistrationBean();
frBean.setFilter(webFilterTest());
frBean.setOrder(1);
frBean.addUrlPatterns("/*");
returnfrBean;
}
@Bean
publicFilterRegistrationBeanfilterRegist2(){
FilterRegistrationBeanfrBean=newFilterRegistrationBean();
frBean.setFilter(webFilterTest2());
frBean.setOrder(2);
frBean.addUrlPatterns("/*");
returnfrBean;
}
}
到此这篇关于springboot@WebFilter注解过滤器的实现的文章就介绍到这了,更多相关springboot@WebFilter注解过滤器内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。