概念
Servlet 過濾器是可用於 Servlet 編程的 Java 類,可以實現以下目的:
1. 在客戶端的請求訪問後端資源之前,攔截這些請求。
2. 在服務器的響應發送回客戶端之前,處理這些響應。
方法
過濾器是一個實現了 javax.servlet.Filter 接口的 Java 類。javax.servlet.Filter 接口定義了三個方法:init、doFilter 、destroy。
init
public void init(FilterConfig filterConfig)
web 應用程序啓動時,web 服務器將創建Filter 的實例對象,並調用其init方法,讀取web.xml配置,完成對象的初始化功能,從而爲後續的用戶請求作好攔截的準備工作(filter對象只會創建一次,init方法也只會執行一次)。開發人員通過init方法的參數,可獲得代表當前filter配置信息的FilterConfig對象。
doFilter
public void doFilter (ServletRequest, ServletResponse, FilterChain)
該方法完成實際的過濾操作,當客戶端請求方法與過濾器設置匹配的URL時,Servlet容器將先調用過濾器的doFilter方法。FilterChain用戶訪問後續過濾器。
destroy
public void destroy()
Servlet容器在銷燬過濾器實例前調用該方法,在該方法中釋放Servlet過濾器佔用的資源。
配置
需要在web.xml
中配置.
解決編碼
<!--過濾器 解決亂碼-->
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
自定義過濾器
<!--登錄過濾器-->
<filter>
<filter-name>userFilter</filter-name>
<filter-class>com.wx.login.filter.UserFilter</filter-class>
<init-param>
<param-name>Site</param-name>
<param-value>菜鳥網絡</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>userFilter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>