1. 程式人生 > >Servlet的過濾器和監聽器

Servlet的過濾器和監聽器

過濾器

作用:對伺服器資源進行統一處理;
如:設定編碼格式,session管理、許可權管理、和諧詞彙

使用:

  1. 建立一個實現了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方法:伺服器關閉的時候被執行

  1. 在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進行呼叫;

監聽器

  1. 監聽物件:
    Request、Session、Application

  2. 監聽內容:
    建立、銷燬、屬性改變事件

  3. 監聽作用:
    在事件發生之前,之後進行一些處理

  4. 使用:
    建立一個實現了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>
  1. 案例:
    統計網站線上人數。