1. 程式人生 > >JavaWeb之Listener&Filter

JavaWeb之Listener&Filter

1. 回顧一下三個作用域

啟動tomcat時會建立ServletContext,關閉伺服器,將專案從伺服器中移除會銷燬ServletContext

請求專案中的任何資源都會建立ServletRequest,請求結束,銷燬ServletRequest

請求專案中的JSP資源會建立HttpSession,Session過期,伺服器正常或非正常退出都會銷燬HttpSession

2. Listener

監聽器,監聽某個事件的發生或狀態改變

監聽器的內部機制就是介面回撥

  • WEB監聽器

    總共有8個,劃分為三種類型

  • 監聽三個作用域的建立和銷燬

    ServletContextListener 利用它,在建立ServletContext的時候,完成初始化操作,執行任務排程

    ServletRequestListener 利用它,監聽ServletRequest的建立和銷燬

    HttpSessionListener 利用它,統計線上人數

  • 監聽三個作用域的屬性狀態變更

    可以監聽作用域中值新增|替換|移除操作

    ServletContextAttributeListener

    ServletRequestAttributeListener

    HttpSessionAttributeListener

  • 監聽HttpSession儲存值的狀態變更

    這類監聽器不用註冊

    HttpSessionBindingListener JavaBean實現該介面即可監聽,監聽物件在HttpSession中的繫結和移除

3. Filter

過濾器,就是對客戶端傳送的資料進行過濾,其實就是起到了攔截器的作用

可以對一些敏感詞彙進行過濾

統一設定編碼型別

自動登入

...

  • 如何使用過濾器?

    定義一個類,實現Filter介面
    註冊過濾器
    <filter>
      <filter-name>FilterDemo</filter-name>
      <filter-class>com.kernel.filter.FilterDemo</filter-class>
    </filter>
    <filter-mapping>
      <filter-name>FilterDemo</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>
  • Filter生命週期

    在伺服器啟動時,建立Filter,當伺服器停止,Filter銷燬

  • Filter執行順序

    客戶端發出請求,經過過濾器,過濾器通過chain.doFilter()方法放行後,才能到達Servlet,如果有多個過濾器,按照註冊的順序,一次經過每個過濾器,只有所有過濾器放行後,才會到達Servlet

  • dispatcher

    REQUEST 攔截所有請求

    FOWORD 攔截所有轉發

    ERROR 攔截頁面出錯

    INCLUDE 攔截包含頁面