在springboot添加过滤器有两种方式:

    1、通过创建FilterRegistrationBean的方式(建议使用此种方式,统一管理,且通过注解的方式若不是本地调试,如果在filter中需要增加cookie可能会存在写不进前端情况)

    2、通过注解@WebFilter的方式

  通过创建FilterRegistrationBean的方式创建多个filter以及设置执行顺序:

     1、创建两个实现Filter接口的类TestFilter1 、TestFilter2

package com.aoxun.core.filter;import java.io.IOException;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;public class TestFilter1 implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {chain.doFilter(request, response);}@Overridepublic void destroy() {}}

package com.aoxun.core.filter;import java.io.IOException;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;public class TestFilter2 implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {chain.doFilter(request, response);}@Overridepublic void destroy() {}}

    2、创建配置类

      有多个filter就创建多个FilterRegistrationBean ,若需注明filter的执行顺序,可通过registration.setOrder(FilterRegistrationBean.LOWEST_PRECEDENCE - 1)配置,值越大,执行顺序越靠后

package com.aoxun.config.web;import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import com.aoxun.core.filter.TestFilter1;
import com.aoxun.core.filter.TestFilter2;/*** filter配置* @author zcj**/
@Configuration
public class FilterConfig2 {@Beanpublic FilterRegistrationBean companyUrlFilterRegister() {FilterRegistrationBean registration = new FilterRegistrationBean();//注入过滤器registration.setFilter(new TestFilter1());//拦截规则registration.addUrlPatterns("/*");//过滤器名称registration.setName("testFilter1");//过滤器顺序
        registration.setOrder(FilterRegistrationBean.LOWEST_PRECEDENCE);return registration;}@Beanpublic FilterRegistrationBean outLinkSecurityFilterRegister() {FilterRegistrationBean registration = new FilterRegistrationBean();//注入过滤器registration.setFilter(new TestFilter2());//拦截规则registration.addUrlPatterns("/*");//过滤器名称registration.setName("testFilter2");//过滤器顺序registration.setOrder(FilterRegistrationBean.LOWEST_PRECEDENCE - 1);return registration;}}

    

    通过注解@WebFilter的方式

     1、在启动类上增加@ServletComponentScan注解,自动扫描带有过滤器注解的包

        2、在类上使用@WebFilter和@Order组合实现

    

package com.aoxun.core.filter;import java.io.IOException;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 org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.core.annotation.Order;@WebFilter(filterName="testFilter1",urlPatterns= {"/*"})
@Order(FilterRegistrationBean.LOWEST_PRECEDENCE)
public class TestFilter1 implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {// TODO Auto-generated method stub
}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {chain.doFilter(request, response);}@Overridepublic void destroy() {// TODO Auto-generated method stub
}}

    

转载于:https://www.cnblogs.com/begin2016/p/8947887.html

springboot中配置过滤器以及可能出现的问题相关推荐

  1. SpringBoot中配置拦截器时,跨域失效

    SpringBoot中配置拦截器时,跨域失效 前后段分离的项目,配置了跨域后,访问正常,但是配置了拦截器以后,有的访问正常,有的出现跨域问题,发现出现跨域问题的都是拦截器里面没有放行的请求. @Con ...

  2. springboot中配置了拦截器后,拦截器无效的解决方案之一

    springboot中配置了拦截器后,拦截器无效的解决方案之一 参考文章: (1)springboot中配置了拦截器后,拦截器无效的解决方案之一 (2)https://www.cnblogs.com/ ...

  3. SpringBoot中配置为开发模式,代码修改后不用重新运行

    场景 SpringBoot中配置为开发模式,修改代码后不用重新运行. 实现 打开pom.xml,添加依赖 <!-- 添加如下依赖,配置为开发模式,代码做了修改,不用重新运行--><! ...

  4. 在web.xml中配置过滤器

    在web.xml中配置过滤器 <filter> <filter-name>loginFilter</filter-name>//过滤器名称 <filter-c ...

  5. 全局性事务控制如何在springboot中配置

    开发中,我们一般会利用AOP配置全局性的事务,对指定包下指定的方法(如add,update等)进行事务控制,在springboot中如何实现呢? @EnableTransactionManagemen ...

  6. springboot _配置过滤器、拦截器、使用原生servlet

    配置过滤器.拦截器.使用原生servlet 过滤器和拦截器的根本区别 过滤器是servlet规范规定的,只能用于web程序中,而拦截器是在spring容器中,它不依赖servlet容器. 拦截器属于S ...

  7. springboot中配置多数据源mybatisPlus

    文章目录 1 背景 2 版本 3 配置 3.1 pom配置 3.1.1 父类pom 3.1.2 pom依赖 3.1.3 插件 3.2 application.yml配置 3.3 启动类配置 4 使用 ...

  8. springboot中配置logback实现打印控制台、写出文件,控制日志级别的方式

    介绍 官方简介 Logback是由log4j创始人设计的又一个开源日志组件. logback当前分成三个模块:logback-core,logback- classic和logback-access. ...

  9. 学习小妙招:springboot中配置文件属性提示

    当我们在springboot的配置类文件.yml文件中进行配置时候,发现我们配置属性时属性提示不出来 导致了我们很难进行有效的配置,浪费很多的时间,效率大大的降低了. 就像这样,没有提示 正常应该是这 ...

最新文章

  1. java byte array_Java IO: ByteArray和Filter
  2. python调用bat有时可以、有时不行_python编程实现对远程执行bat文件时遇到的错误...
  3. shell 学习笔记(18)
  4. 【ActiveMQ】消息生产者自动注入报错:Could not autowire. No beans of 'JmsMessagingTemplate' type found...
  5. vc++深入详解学习-NO.3
  6. REDIS 在电商中的实际应用场景(转)
  7. IE和火狐读取XML方法比较
  8. 网络编程之 创建多个子进程,避免踩坑。
  9. 如何获取Java用户输入?
  10. 如何在XML序列化时隐藏可为null的的字段(XmlElement和XmlAttribute)
  11. OpenCV(iOS)平滑处理(模糊,毛玻璃)(10)
  12. 蚂蚁金服 Service Mesh 渐进式迁移方案|Service Mesh Meetup 实录
  13. PRi——自行车码表
  14. 利用word分词来计算文本相似度
  15. 简单几步骤导出网易考拉海购中多个商品的图片
  16. 如何通过API接口,获取商品详情数据
  17. c语言plc库,PLC编程-C语言.ppt
  18. shl and shr
  19. Django数据库连接池(mysql)
  20. 凯文凯利10条人生建议,送给迷茫的你!(上)

热门文章

  1. 计算机专业考研学习,计算机专业考研133分复习经验谈
  2. mysql log error_MySQL日志之error_log
  3. 标题在图表上_图与表,让你的图表更简单清晰易读,告诉你怎么设置图表
  4. go语言和python-新学语言,选GO还是Python
  5. 单片机c语言二进制转10进制,51单片机用C语言怎么样把八位二进制转换成十进制...
  6. java二分法查找_java 中二分法查找的应用实例
  7. antd checkbox 默认选中_antd + select 默认选中问题?
  8. 高级排序之快速排序(分割与整合)
  9. SQLSERVER对数据表进行分区
  10. windows设备管理器