Spring boot Servlet Web 應用常用的過濾器
阿新 • • 發佈:2019-01-12
本文對基於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
處理過濾器是在這些過濾器新增之後最後新增的。- 請求處理時先新增的過濾器先被應用。