java 过滤器注解_springboot @WebFilter注解过滤器的实现

@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 = "/*")

@Slf4j

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源码:

@Target({ElementType.TYPE})

@Retention(RetentionPolicy.RUNTIME)

@Documented

public @interface WebFilter {

String description() default "";

/**Filter显示名*/

String displayName() default "";

/**配置参数*/

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()注解实现执行过滤的顺序

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");

}

}

执行结果

WebFilterTest --- doFilter

2 --- WebFilterTest2 --- doFilter

不使用注解的方式使用过滤器

创建过滤器类

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");

}

}

注册过滤器

@Configuration

public 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;

}

}

多个过滤器注册

再添加一个过滤器:

@Slf4j

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");

}

}

修改配置类:

@Configuration

public 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注解过滤器的实现的文章就介绍到这了,更多相关springboot @WebFilter注解过滤器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多问

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值