Servlet的過濾器和監聽器
阿新 • • 發佈:2018-12-24
過濾器
作用:對伺服器資源進行統一處理;
如:設定編碼格式,session管理、許可權管理、和諧詞彙
使用:
- 建立一個實現了Filter介面 的普通java類
覆寫Filter介面的方法
init方法:伺服器啟動的時候被執行
doFilter方法:攔截請求的方法,對資源進行管理;需要手動對資源進行放行。
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8" );
//判斷session
HttpSession hs = ((HttpServletSession) request).getSession();
if(hs.getAttribute("user")==null){
((HttpServletResponse)response).sendRedirect("login.jsp");
} else {
//放行
chan.doFilter(request, response);
}
destroy方法:伺服器關閉的時候被執行
- 在web.xml中配置Filter過濾器
<!-- 配置過濾器 -->
<filter>
<filter-name>myFilter</filter-name>
<filter-class>com.peace.filter.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>myFilter</filter-name>
<url-pattern>/*</url-pattern >
<!-- /*表示攔截所有Servlet | *.do表示攔截以.do結尾的Servlet | /uri.do表示攔截特定的Servlet-->
</filter-mapping>
總結:
程式設計師對過濾器進行宣告和配置;伺服器根據請求中的uri進行呼叫;
監聽器
-
監聽物件:
Request、Session、Application -
監聽內容:
建立、銷燬、屬性改變事件 -
監聽作用:
在事件發生之前,之後進行一些處理 -
使用:
建立一個實現了ServletRequestListener介面(監聽request物件的建立和銷燬)、ServletRequestAttributeListener介面(監聽request作用域的變更)的java類
requestIniialized方法:建立request物件
requestDestroyed方法:銷燬request物件
attributeAdded方法:request作用域增加資料
attributeRemoved方法:request作用域移除資料
attributeReplaced方法:request作用域更改資料
在web.xml中配置監聽器:
<listener>
<listener-class>com.peace.listener.MyListener</liatener-class>
</listener>
- 案例:
統計網站線上人數。