springboot中配置过滤器以及可能出现的问题
在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中配置过滤器以及可能出现的问题相关推荐
- SpringBoot中配置拦截器时,跨域失效
SpringBoot中配置拦截器时,跨域失效 前后段分离的项目,配置了跨域后,访问正常,但是配置了拦截器以后,有的访问正常,有的出现跨域问题,发现出现跨域问题的都是拦截器里面没有放行的请求. @Con ...
- springboot中配置了拦截器后,拦截器无效的解决方案之一
springboot中配置了拦截器后,拦截器无效的解决方案之一 参考文章: (1)springboot中配置了拦截器后,拦截器无效的解决方案之一 (2)https://www.cnblogs.com/ ...
- SpringBoot中配置为开发模式,代码修改后不用重新运行
场景 SpringBoot中配置为开发模式,修改代码后不用重新运行. 实现 打开pom.xml,添加依赖 <!-- 添加如下依赖,配置为开发模式,代码做了修改,不用重新运行--><! ...
- 在web.xml中配置过滤器
在web.xml中配置过滤器 <filter> <filter-name>loginFilter</filter-name>//过滤器名称 <filter-c ...
- 全局性事务控制如何在springboot中配置
开发中,我们一般会利用AOP配置全局性的事务,对指定包下指定的方法(如add,update等)进行事务控制,在springboot中如何实现呢? @EnableTransactionManagemen ...
- springboot _配置过滤器、拦截器、使用原生servlet
配置过滤器.拦截器.使用原生servlet 过滤器和拦截器的根本区别 过滤器是servlet规范规定的,只能用于web程序中,而拦截器是在spring容器中,它不依赖servlet容器. 拦截器属于S ...
- 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 使用 ...
- springboot中配置logback实现打印控制台、写出文件,控制日志级别的方式
介绍 官方简介 Logback是由log4j创始人设计的又一个开源日志组件. logback当前分成三个模块:logback-core,logback- classic和logback-access. ...
- 学习小妙招:springboot中配置文件属性提示
当我们在springboot的配置类文件.yml文件中进行配置时候,发现我们配置属性时属性提示不出来 导致了我们很难进行有效的配置,浪费很多的时间,效率大大的降低了. 就像这样,没有提示 正常应该是这 ...
最新文章
- java byte array_Java IO: ByteArray和Filter
- python调用bat有时可以、有时不行_python编程实现对远程执行bat文件时遇到的错误...
- shell 学习笔记(18)
- 【ActiveMQ】消息生产者自动注入报错:Could not autowire. No beans of 'JmsMessagingTemplate' type found...
- vc++深入详解学习-NO.3
- REDIS 在电商中的实际应用场景(转)
- IE和火狐读取XML方法比较
- 网络编程之 创建多个子进程,避免踩坑。
- 如何获取Java用户输入?
- 如何在XML序列化时隐藏可为null的的字段(XmlElement和XmlAttribute)
- OpenCV(iOS)平滑处理(模糊,毛玻璃)(10)
- 蚂蚁金服 Service Mesh 渐进式迁移方案|Service Mesh Meetup 实录
- PRi——自行车码表
- 利用word分词来计算文本相似度
- 简单几步骤导出网易考拉海购中多个商品的图片
- 如何通过API接口,获取商品详情数据
- c语言plc库,PLC编程-C语言.ppt
- shl and shr
- Django数据库连接池(mysql)
- 凯文凯利10条人生建议,送给迷茫的你!(上)
热门文章
- 计算机专业考研学习,计算机专业考研133分复习经验谈
- mysql log error_MySQL日志之error_log
- 标题在图表上_图与表,让你的图表更简单清晰易读,告诉你怎么设置图表
- go语言和python-新学语言,选GO还是Python
- 单片机c语言二进制转10进制,51单片机用C语言怎么样把八位二进制转换成十进制...
- java二分法查找_java 中二分法查找的应用实例
- antd checkbox 默认选中_antd + select 默认选中问题?
- 高级排序之快速排序(分割与整合)
- SQLSERVER对数据表进行分区
- windows设备管理器