本文对基于Springboot Web
应用常用的Filter
做了一个总结。
具体使用的
Spring boot
版本为2.1.1
,Servlet
容器缺省为Tomcat 9.0.13
嵌入式版本,Spring Web 5.1.3
。
缺省优先级 | 名称 | 类 | 简介 |
---|---|---|---|
最高优先级 | characterEncodingFilter | org.sf.boot.web.servlet.filter.OrderedCharacterEncodingFilter | 根据配置参数决定请求/响应是否要使用指定的字符集 |
-10000 | hiddenHttpMethodFilter | org.sf.boot.web.servlet.filter.OrderedHiddenHttpMethodFilter | 将POST 表单中隐藏参数_method 的值设置为请求的HTTP method |
-9900 | formContentFilter | org.sf.boot.web.servlet.filter.OrderedFormContentFilter | 获取表单参数将其作为Servlet 请求参数 |
-105 | requestContextFilter | org.sf.boot.web.servlet.filter.OrderedRequestContextFilter | 将请求对象和请求的locale 绑定到当前请求处理线程 |
-100 | springSecurityFilterChain | org.sf.boot.web.servlet.DelegatingFilterProxyRegistrationBean$1 | Spring Security 安全过滤器链的代理,也被封装为一个Filter |
过滤器链最后一个 | Tomcat WebSocket (JSR356) Filter | org.apache.tomcat.websocket.server.WsFilter | Tomcat Servlet 容器针对Web Socket 处理的过滤器,仅在使用Tomcat Servlet 容器时才被使用该过滤器其实由 Tomcat 提供,而不是由Spring 提供 |
- 上表中
sf
是springframework
的缩写。- 上表中
Spring
提供的过滤器都带有优先级属性,并且在添加到ServletContext
时,会先增加优先级高的过滤器。而Tomcat
自己提供的Web Socket
处理过滤器是在这些过滤器添加之后最后添加的。- 请求处理时先添加的过滤器先被应用。