伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

springboot|springboot配置Filter过滤器

来源:本站原创 浏览:91次 时间:2022-10-06

在阅读本文前,强烈建议大家先阅读前一篇
springboot|springboot配置拦截器

同样强烈建议先阅读官方文档:
https://docs.spring.io/spring/docs/5.2.1.RELEASE/spring-framework-reference/web.html#filters

https://docs.spring.io/spring-boot/docs/2.2.1.RELEASE/reference/html/howto.html#howto-add-a-servlet-filter-or-listener

https://docs.spring.io/spring-boot/docs/2.2.1.RELEASE/reference/html/spring-boot-features.html#boot-features-embedded-container

配置过滤器需要以下几步:

  1. 添加相关的依赖

  2. 配置过滤器Bean及相应的配置

  3. 编写相关的依赖
添加相关的依赖

同样,只需要引入web依赖就可以了

implementation 'org.springframework.boot:spring-boot-starter-web'
配置过滤器Bean及相应配置

添加过滤器的Bean代码如下

/** * 这里要注意两点,一个是 @WebFilter注解, 一个是实现了Filter接口 * @Author https://www.javastudy.cloud * @CreateTime 2019/11/8 **/@WebFilter("/test/*")public class TestFilter implements Filter {    @Override    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {        // 进行逻辑处理        System.out.println("in doFilter");        // 一定要记得这个,逻辑处理完之后,调用过滤器链,去进入到下一个过滤器        chain.doFilter(request,response);    }}

在Main函数类上的配置如下:

/** * 只需要在这里面加上一个@ServletComponentScan这个注解就可以了 */@SpringBootApplication@ServletComponentScanpublic class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);  }}

用于测试的Controller代码:

/** * @Author https://www.javastudy.cloud * @CreateTime 2019/11/8 **/@RestControllerpublic class TestController {    @RequestMapping("test/testFilter")    public String testFilter(){        System.out.println("in test method");        return "";    }    @RequestMapping("pass/testPass")    public String testPass(){        System.out.println("in pass method");        return "";    }}
输出结果


引用第三方的过滤器

有种情况是jar包里面提供了第三方的过滤器,我们没有办法加WebFilter注解,这时候就要用另外一种方式添加了,如这里有个ThirdFilter:

/** * 这是一个第三方的Filter,只实现了Filter,没有添加WebFilter注解 * @Author https://www.javastudy.cloud * @CreateTime 2019/11/8 **/public class ThirdFilter implements Filter {    @Override    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {        // 进行逻辑处理        System.out.println("in ThirdFilter");        // 一定要记得这个,逻辑处理完之后,调用过滤器链,去进入到下一个过滤器        chain.doFilter(request,response);    }}

需要在Main函数的类里面添另一个Bean,把这个过滤器包装成一个Bean

/** * 只需要在这里面加上一个@ServletComponentScan这个注解就可以了 */@SpringBootApplication@ServletComponentScanpublic class DemoApplication {public static void main(String[] args) {    SpringApplication.run(DemoApplication.class, args);  }/**   * 把第三方的过滤器包装成一个Spring的Bean   * @return   */@Beanpublic FilterRegistrationBean thirdFilter() {    FilterRegistrationBean bean = new FilterRegistrationBean<>(new ThirdFilter());    bean.setName("ThirdFilter");    bean.addUrlPatterns("/test/*");    bean.setOrder(0);return bean;  }}
结果输出

DEMO总评

过滤器是WEB中的一大重要组件,和拦载器不同的是,过滤器是Servlet的组件,而拦截器是spring的组件. 过滤器会对所有的请求有效,如js,css这些,都会进到过滤器里面,所以我们常用过滤器进行字符转码,或者监控请求时间,登录等等. 加油吧,少年!!

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net