springboot中添加Filter的方法
springboot中创建Filter有四种方法,具体如下
第一种
@WebFilter(filterName = "myFilter",urlPatterns = "/*")
public class MyFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {}@Overridepublic void destroy() {}
}@SpringBootApplication
@EnableAutoConfiguration
@EnableWebMvc
@ServletComponentScan(basePackages = "com.my.test.filter")//所扫描的包路径必须包含该Filter
public class Application {public static void main(String[] args) {SpringApplication.run(Application .class, args);}
}
特别注意:@ServletComponentScan
所扫描的包路径必须包含该Filter
第二种
@Configuration
public class FilterConfig {@Beanpublic FilterRegistrationBean filterRegistrationBean(){FilterRegistrationBean bean = new FilterRegistrationBean();bean.setFilter(new MyFilter2());bean.addUrlPatterns("/*");return bean;}
}
第三种
@Bean("proxyFilter")public Filter filter (){return new Filter() {@Overridepublic void init(javax.servlet.FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {}@Overridepublic void destroy() {}};}@Beanpublic DelegatingFilterProxyRegistrationBean delegatingFilterProxyRegistrationBean(){DelegatingFilterProxyRegistrationBean bean = new DelegatingFilterProxyRegistrationBean("proxyFilter");bean.addUrlPatterns("/*");return bean;}
方法四
@Bean("myFilter")public Filter filter (){return new Filter() {@Overridepublic void init(javax.servlet.FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {}@Overridepublic void destroy() {}};}
说明:
- 第二种和第三种类似,均实现了
AbstractFilterRegistrationBean
接口,而该接口间接实现了ServletContextInitializer
,springboot在启动容器后会查找实现该接口的bean,并调用onStartup()
方法添加自定义的Filter,两则的区别DelegatingFilterProxyRegistrationBean
通过传入的proxyFilter名字,在WebApplicationContext
查找该Fillter Bean,并通过DelegatingFilterProxy
生成基于该Bean的代理Filter对象,
而FilterRegistrationBean
则是直接设置一个Filter,因此该Filter可以有spring容器管理,也可不用spring管理
注意:如果Filter声明为一个Bean,则不需要定义为FilterRegistrationBean
,也会被spring发现并添加,就是方法四,该方式无法定义拦截规则等,默认全局,慎用
void init(FilterConfig paramFilterConfig)
– 当容器初始化 Filter 时调用,该方法在 Filter 的生命周期只会被调用一次,一般在该方法中初始化一些资源,FilterConfig 是容器提供给 Filter 的初始化参数,在该方法中可以抛出 ServletException 。init 方法必须执行成功,否则 Filter 可能不起作用,出现以下两种情况时,web 容器中 Filter 可能无效: 1)抛出 ServletException 2)超过 web 容器定义的执行时间。doFilter(ServletRequest paramServletRequest, ServletResponse paramServletResponse, FilterChain paramFilterChain)
– Web 容器每一次请求都会调用该方法。该方法将容器的请求和响应作为参数传递进来, FilterChain 用来调用下一个 Filter。
参考 :https://www.jianshu.com/p/3d421fbce734
springboot中添加Filter的方法相关推荐
- springboot在工具类中添加service的方法,显示为空的解决方案
springboot在工具类中添加service的方法,显示为空的解决方案 参考文章: (1)springboot在工具类中添加service的方法,显示为空的解决方案 (2)https://www. ...
- php xml 添加节点 出问题,PHP往XML中添加节点的方法
本文实例讲述了PHP往XML中添加节点的方法.分享给大家供大家参考.具体方法如下: 1. contacts.xml代码 复制代码 代码如下: J J J Manager National 1971-1 ...
- ppt怎么加注解文字_PPT怎么在演示稿中添加批注的方法
PPT怎么在演示稿中添加批注的方法 2017-10-24 16:46 责任编辑:老王啊 导读 / PPT如何在演示稿中添加批注?设计或制作PPT时,会遇到内容中需要特别解释或着重注意的地方,此时会用到 ...
- 在3dmax软件中添加样条的方法和详细步骤
在3dmax软件中添加样条的方法和详细步骤! 在3dmax软件中添加样条的方法和详细步骤!三dsMax是一款三建模.动画和渲染软件.借助3dsMax,可以创造一个宏伟的游戏世界,布彩的场景,实现设计可 ...
- java窗体中添加图片_在java窗体程序中添加图片的方法
在java窗体程序中添加图片的方法 发布时间:2020-06-16 11:24:13 来源:亿速云 阅读:148 作者:Leah 这篇文章主要为大家详细介绍了在java窗体程序中添加图片的方法,图文详 ...
- linux服务器怎么添加路由,linux系统中添加路由的方法
linux系统中添加路由的方法 发布时间:2020-06-17 11:38:59 来源:亿速云 阅读:95 作者:Leah 这篇文章将为大家详细讲解有关linux系统中添加路由的方法,小编觉得挺实用的 ...
- Vue之在methods中使用filter的方法
Vue之在methods中使用filter的方法 全局定义filter 在html使用filter 在methods使用filter 相关资料: 过滤器(Vue官方使用说明) 全局定义filter 在 ...
- AD 2020中添加LOGO的方法
AD 2020中添加LOGO的方法 前言 AD2020最新版PCB设计中安装logo的具体方法 一.安装脚本 文件名称:AD脚本文件 链接:https://pan.baidu.com/s/1s0TIp ...
- html表格中添加超链接,Excel表格中添加超链接的方法教程
在我们使用Excel表格的过程中,有时候需要为表格内的内容添加网站地址的超链接,以方便引入相关的内容,这个时候,我们就需要使用到添加超链接的知识了.那么,怎么在Excel表格内添加超链接呢?接下来由学 ...
最新文章
- 中医大计算机应用基础考试题6,中医大 计算机应用基础 复习题 参考资料.docx
- 网络原理题+复习资料
- Web Service 实现分布式事务
- ListView控件 1130
- springboot整合多数据源
- 如何使用SubtitleWorkshop制作字幕
- Atitit 头像文件上传功能实现目录1. 上传文件原理 11.1. 界面ui 11.2. 预览实现 21.3. 保存头像文件php 21.4. 保存文件nodejs java 32
- 计算机长宽高公式,单位换算公式大集合
- excel 某个单元格不是等于空值,Excel返回第一个与所有非空单元格及统计数量,把空单元格替换为0...
- 学习.NET好书推荐
- 2019冬令营集训1月7-10日总结
- Adobe Dreamweaver CS5和Photoshop CS5序列号
- CCF数据库专委会杜小勇:数据库40年激荡历程
- Edge 被 hao123 劫持解决方法
- 代码随想录第二十一天 LeetCode 530、501、236
- 如何使用EasyNVR+CDN突破萤石云在直播客户端数量上的限制,做到低成本高性价比的直播
- 配置ssh使用socks代理
- Kubernetes集群环境搭建全过程
- 幻影显示连接不到服务器,幻影纹章怎么进不去 无法连接服务器及解决方案
- 无接触梯控模组及设备