過濾器
作用:
- 對服務器接受的請求資源和響應給瀏覽器的資源進行管理
- 保護servlet
使用
- 創建一個Filter接口的普通java類
- 複寫接口的方法
init() 服務器啓動的時候自動調用‘’
doFilter() 主動調用chain.doFilter放行
destory() 服務器關閉的時候自動調用 - 在web.xml中配置過濾器,使服務器自動調用過濾器
<filter>
<filter-name>myFilter</filter-name>
<filter-class>edu.yjsj.filter.Filter</filter-class>
</filter>
<filter-mapping>
<filter-name>myFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
以上爲單個web.xml配置文件,其中
- url-pattern:/*表示攔截所有的請求
- url-pattern:*.do表示攔截所有.do結尾的請求,一般進行模塊化攔截處理
- url-pattern:/ts 表示攔截指定servlet的請求
過濾器生命週期
服務器啓動到關閉
執行
瀏覽器發起請求到服務器,服務器接收到請求後,根據uri在web.xml中找到對應的過濾器執行doFilter方法,該方法對此次請求經行處理後如果符合要求則放行,放行後如果還有符合要求的過濾器則繼續過濾,最終找到對應的servlet進行請求處理,service方法執行後還會返回到對應的doFilter方法中。
案例
- 統一編碼格式
- session管理
- 權限管理
- 資源管理(同一水印,和諧詞彙等等)
- 。。。
//設置編碼格式
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
//session管理
HttpSession hs = ((HttpServletRequest)request).getSession();
if(hs.getAttribute("user") == null) {
((HttpServletResponse)response).sendRedirect("/login.jsp");
}else {
//放行
chain.doFilter(request, response);
}
以上是學習過程積累,有問題歡迎指教