剛學習了過濾器Filter,感覺有必要記錄一下,後面有空了回去完善一下,明天有點兒重要的事情要辦,今晚得準備一下的,所以大概簡略的寫了下Filter的基本用法以及相關的代碼註釋。
下面是過濾器內容,注意和Servlet的區別:
import javax.servlet.Filter
public class MyFilter implements Filter {
private String filterParamValue;// 保存從web.xml中獲取的過濾器參數
// 複寫的方法,銷燬該過濾器時調用
@Override
public void destroy(){
}
// 過濾器過濾處理邏輯
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
req.setCharacterEncoding(filterParamValue);// 設置編碼格式
// 。。 可以在頁面相應之前進行用戶登錄與否的操作從而實現身份權限
chain.doFilter(req, res);// 執行頁面響應
}
// 過濾器初始化
@Override
public void init(FilterConfig cfg) throws ServletException {
String s = cfg.getInitParameter("filterparam");// 通過初始化參數名來獲取該參數的值
if(s != null || (!"".equals(s.trim()))) {// 如果參數值不爲空
filterParamValue = s;// 獲取參數
} else {
filterParamValue = "UTF-8";// 默認編碼爲UTF-8格式
}
}
}
而這的下面是Filter在web.xml中的配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID"
version="3.0">
<filter>
<filter-name>MyFilter</filter-name>
<filter-class>cn.com.dnyy.filter.MyFilter</filter-class><!-- 過濾器所在包目錄 -->
<init-param><!-- 設置初始化Filter的參數列表 -->
<param-name>filterparam</param-name><!-- 參數名 -->
<param-value>UTF-8</param-value><!-- 參數值 -->
</init-param>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name><-- 兩個filter-name要統一 -->
<url-pattern>/*</url-pattern><!-- 所有頁面均需要經過過濾器處理 -->
</filter-mapping>
</web-app>