Springboot实现过滤器

举报
yd_249383650 发表于 2023/03/27 15:09:07 2023/03/27
【摘要】 ​ Springboot实现过滤器有以下俩种方式,第一种方式俩步走,即向spring容器注册filter第一种:1.Filter过滤器具体实现类@Component@Slf4jpublic class MyTestFilter implements Filter { @Override public void init(FilterConfig filterConfig) thr...

 Springboot实现过滤器有以下俩种方式,第一种方式俩步走,即向spring容器注册filter

第一种:

1.Filter过滤器具体实现类

@Component
@Slf4j
public class MyTestFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        log.info("[ {} ] 创建啦...", this.getClass().getSimpleName());
    }
 
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        log.info("[ {} ] 执行啦...", this.getClass().getSimpleName());
 
        chain.doFilter(request, response);
    }
 
    @Override
    public void destroy() {
        log.info("[ {} ] 被摧毁啦...", this.getClass().getSimpleName());
    }
}

2.向spring容器注册filter

@Configuration
public class FilterConfig {
 
    @Resource
    private MyTestFilter myTestFilter;
 
    @Bean
    public FilterRegistrationBean testFilterRegistration() {
        FilterRegistrationBean registration = new FilterRegistrationBean(myTestFilter);
        registration.addUrlPatterns("/filter/*");
        registration.setName("testFilter");
        registration.setOrder(1);
        return registration;
    }
}

 第二种:

通过@WebFilter 注解来配置

@Component
@WebFilter(urlPatterns = "/filter/*", filterName = "myTestFilter") 
@Slf4
public class MyTestFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        log.info("[ {} ] 创建啦...", this.getClass().getSimpleName());
    }
 
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        log.info("[ {} ] 执行啦...", this.getClass().getSimpleName());
 
        chain.doFilter(request, response);
    }
 
    @Override
    public void destroy() {
        log.info("[ {} ] 被摧毁啦...", this.getClass().getSimpleName());
    }
}

还需要在 SpringBootApplication 上使用@ServletComponentScan

注解后
Servlet可以直接通过@WebServlet注解自动注册
Filter可以直接通过@WebFilter注解自动注册
Listener可以直接通过@WebListener 注解自动注册

 


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。