JavaWeb中的監聽器、過濾器、攔截器、適配器簡述

概念


context-param:

就是一些須要初始化的配置,放入context-param中,
從而被監聽器(這裏特指org.springframework.web.context.ContextLoaderListener)監聽,而後加載;

監聽器(listener):

就是對項目起到監聽的做用,它能感知到包括request(請求域),session(會話域)和applicaiton(應用程序)的初始化和屬性的變化,
活動在整個request和response週期中;

Servlet監聽器用於監聽一些重要事件的發生,監聽器對象能夠在事情發生前、發生後能夠作一些必要的處理。
下面將介紹幾種經常使用的監聽器
  • 分類及介紹:
    1. ServletContextListener:
      用於監聽WEB 應用啓動和銷燬的事件,監聽器類須要實現javax.servlet.ServletContextListener 接口。
    2. ServletContextAttributeListener:
      用於監聽WEB應用屬性改變的事件,包括:增長屬性、刪除屬性、修改屬性, 監聽器類須要實現javax.servlet.ServletContextAttributeListener接口。
    3. HttpSessionListener:
      用於監聽Session對象的建立和銷燬,監聽器類須要實現javax.servlet.http.HttpSessionListener接口 或者javax.servlet.http.HttpSessionActivationListener接口,或者兩個都實現。
    4. HttpSessionActivationListener:
      用於監聽Session對象的鈍化/活化事件,監聽器類須要實現javax.servlet.http.HttpSessionListener接口 或者javax.servlet.http.HttpSessionActivationListener接口,或者兩個都實現。(沒用過)
    5. HttpSessionAttributeListener:
      用於監聽Session對象屬性的改變事件,監聽器類須要實現javax.servlet.http.HttpSessionAttributeListener接口。 (沒用過)

過濾器(filter):

Servlet過濾器是在java servlet規範2.3中定義的,他可以對servlet容器的請求和響應對象進行檢查和修改。

過濾器是JavaEE標準,採用函數回調的方式進行。

Servlet過濾器自己並不產生請求和響應對象,他只能提供過濾做用,servlet過濾可以在servlet被調用以前檢查request對象,
修改request的header和request內容,在調用後檢查response對象,修改response的頭和內容。

Servlet過濾負責過濾的web組件能夠是servlet,jsp或html文件。
就是對請求起到過濾的做用,做用在servlet以前,對請求進行過濾;
  • 特色:
    • 過濾器能夠檢查和修改request和response對象
    • 過濾器能夠被指定url,當訪問到該url時纔會觸發過濾
    • 過濾器能夠有不少個,串聯使用,造成過濾器鏈。

servlet:

就是對request和response進行處理的容器,它在filter以後執行,servlet其中的一部分就是controller層,
還包括渲染視圖層和進入controller以前系統的一些處理部分

攔截器(interceptor):

就是對請求和響應進行攔截,它做用在servlet的內部,具體來講有三個地方:
  1. 控制層執行以前
  2. 控制層執行以後視圖層渲染以前
  3. 視圖層渲染以後servlet結束以前

HandlerInterceptor

其中preHandle、postHandle、afterComplication三個方法執行順序:preHandle——handler——postHandle——view渲染——afterComplicationhtml

總結


context-param-->listener-->filter-->servlet-->interceptor(listener貫穿servlet)java

相關文章
相關標籤/搜索