向Web應用程序的請求和響應添加功能的Web組建
過濾器可以統一的集中處理請求和響應
新建 filter ,注意此時是在 src中建立的(同class的創建位置一樣)。
解決亂碼問題:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
chain.doFilter(request, response);
response.setCharacterEncoding("utf-8");
}
Web.xml
<filter>
<display-name>filter</display-name>
<filter-name>filter</filter-name>
<filter-class>com.db.news.web.fileter.filter</filter-class>
</filter>
<filter-mapping>
<filter-name>filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
具體實現步驟:
匹配順序:
1) 完全匹配 : /index.jsp
2) 目錄擴展匹配: /admin/*
3) 擴展名匹配: *.do
4) 全部匹配: /*
初始化參數和過濾器鏈
配置過濾器的初始化參數
讀取過濾器的初始化參數
多個過濾器會形成過濾器鏈,它的訪問順序根據 <filter-mapping> 中的配置從上到下依次匹配。
15.3 過濾器的生命周期1. 實例化: 開辟內存空間,只執行一次
2. 初始化: init() 只執行一次
3. 過濾: doFilter() 用戶請求頁面進行匹配
4. 消耗: destroy() 只執行一次
15.4 使用過濾器的場合對請求,響應進行統一處理
對請求進行日志記錄和審核
對數據進行屏蔽和替換
對數據進行加密和解密
15.5 監聽器在訪問資源的過程中,發生某些特定過程時進行相應的操作。
例:統計在線的人數
Javax.servlet.http.HttpsessionBindingListener;
valueBound(HttpSessionBindingEvent arg0){
//用戶對象存入session時自動調用
//用戶數量添加1
}
valueUnbound(HttpSessionBindEvent arg0){
//用戶對象從session中刪除時自動調用
//用戶數量減1
}
<listener>
<listener-class>監聽器完全限定名</listener-class>
<listener>
新聞熱點
疑難解答