Servlet 過(guò)濾器是可用于 Servlet 編程的 Java 類,可以實(shí)現(xiàn)以下目的:
1. 在客戶真?zhèn)€要求訪問(wèn)后端資源之前,攔截這些要求。
2. 在服務(wù)器的響應(yīng)發(fā)送回客戶端之前,處理這些響應(yīng)。
過(guò)濾器是1個(gè)實(shí)現(xiàn)了 javax.servlet.Filter 接口的 Java 類。javax.servlet.Filter 接口定義了3個(gè)方法:init、doFilter 、destroy。
public void init(FilterConfig filterConfig)
web 利用程序啟動(dòng)時(shí),web 服務(wù)器將創(chuàng)建Filter 的實(shí)例對(duì)象,并調(diào)用其init方法,讀取web.xml配置,完成對(duì)象的初始化功能,從而為后續(xù)的用戶要求作好攔截的準(zhǔn)備工作(filter對(duì)象只會(huì)創(chuàng)建1次,init方法也只會(huì)履行1次)。開(kāi)發(fā)人員通過(guò)init方法的參數(shù),可取得代表當(dāng)前filter配置信息的FilterConfig對(duì)象。
public void doFilter (ServletRequest, ServletResponse, FilterChain)
該方法完成實(shí)際的過(guò)濾操作,當(dāng)客戶端要求方法與過(guò)濾器設(shè)置匹配的URL時(shí),Servlet容器將先調(diào)用過(guò)濾器的doFilter方法。FilterChain用戶訪問(wèn)后續(xù)過(guò)濾器。
public void destroy()
Servlet容器在燒毀過(guò)濾器實(shí)例前調(diào)用該方法,在該方法中釋放Servlet過(guò)濾器占用的資源。
需要在web.xml
中配置.
<!--過(guò)濾器 解決亂碼-->
<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⑻</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
<!--登錄過(guò)濾器-->
<filter>
<filter-name>userFilter</filter-name>
<filter-class>com.wx.login.filter.UserFilter</filter-class>
<init-param>
<param-name>Site</param-name>
<param-value>菜鳥(niǎo)網(wǎng)絡(luò)</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>userFilter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>