SpringBoot过滤器(Filter)实现方式

SpringBoot过滤器(Filter)实现方式

过滤器依赖于servlet容器,属于Servlet中的一部分,实现是基于servlet的回调,生命周期也是由servlet容器管理。

方式有两种

两种无论哪一种都要写实现Filter的类

方式一写配置类@bean方式注入到容器中
1写实现类
public class CustomFilter implements Filter {

    Logger logger = LoggerFactory.getLogger(CustomFilter.class);

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        logger.info("CustomFilter   >>>>> init");
        logger.info("filterName:{}",filterConfig.getFilterName());
        logger.info("getInitParameterNames():{}",filterConfig.getInitParameterNames());
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        logger.info(servletRequest.getServletContext().getContextPath());
        logger.info("doFilter 》》》》》》》");
        filterChain.doFilter(servletRequest,servletResponse);
    }

    @Override
    public void destroy() {
        logger.info("destroy>>>>>>>>>");
    }
}

	2写配置类
@Configuration
public class Config {

    @Bean
    public FilterRegistrationBean registrationBean(){
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        registrationBean.setFilter(new CustomFilter());
        registrationBean.addUrlPatterns("/*");//过滤请求路径 所有请求
        registrationBean.setName("customFilter");
        registrationBean.setOrder(1);//值越小优先级越高
        return registrationBean;
    }
}
	3启动日志

在这里插入图片描述

方式二 @WebFilter注解
	写filter的实现类,主要就是又加了@Configuration 初始化容器 这个注解,会根据WebFilter生成Bean。
@Order(value = 1)//值越小优先级越高
@Configuration
@WebFilter(urlPatterns = "/*" ,filterName = "customFilter")
public class CustomFilter implements Filter {

    Logger logger = LoggerFactory.getLogger(CustomFilter.class);

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        logger.info("CustomFilter   >>>>> init");
        logger.info("filterName:{}",filterConfig.getFilterName());
        logger.info("getInitParameterNames():{}",filterConfig.getInitParameterNames());
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        logger.info(servletRequest.getServletContext().getContextPath());
        logger.info("doFilter 》》》》》》》");
        filterChain.doFilter(servletRequest,servletResponse);
    }

    @Override
    public void destroy() {
        logger.info("destroy>>>>>>>>>");
    }
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值