1. 程式人生 > >JavaWeb的三大元件 Servlet、Listener、Filter

JavaWeb的三大元件 Servlet、Listener、Filter

1.Servlet

Servlet 是一個 Java程式,是在伺服器上執行以處理客戶端請求並做出響應的程式

 Servlet的生命週期

是一個servlet的從初始化(出生)到銷燬(死亡)。

  Init() -> service() -> destroy().

載入型別:載入class檔案

例項化型別:Servlet 容器建立 Servlet 的例項

初始化:該容器呼叫 init() 方法

請求處理:如果請求 Servlet,則容器呼叫 service() 方法

服務終止:銷燬例項之前呼叫 destroy() 方法

Servlet的繼承層次

ServletConfig

ServletConfig物件: 主要是用於載入servlet的初始化引數。在一個web應用可以存在多個ServletConfig物件(一個Servlet對應一個ServletConfig物件)

建立時機: 在建立完servlet物件之後,在呼叫init方法之前建立。

得到物件: 直接從有引數的init方法中得到!!!

ServletContext

ServletContext物件 ,叫做Servlet的上下文物件。表示一個當前的web應用環境。

一個web應用中只有一個ServletContext物件。

ServletContext就是一個域物件!

 

儲存資料:void setAttribute(java.lang.String name, java.lang.Object object)

獲取資料: java.lang.Object getAttribute(java.lang.String name)  

刪除資料: void removeAttribute(java.lang.String name) 

ServletContext域物件:作用範圍在整個web應用中有效!

所有域物件:

HttpServletRequet 域物件

ServletContext域物件

HttpSession 域物件

PageContext域物件

2.過濾器

,它與Servlet很相似!不它過濾器是用來攔截請求的,而不是處理請求的。

當用戶請求某個Servlet時,會先執行部署在這個請求上的Filter,如果Filter“放行”,那麼會繼承執行使用者請求的Servlet;如果Filter不“放行”,那麼就不會執行使用者請求的Servlet。

其實可以這樣理解,當用戶請求某個Servlet時,Tomcat會去執行註冊在這個請求上的Filter,然後是否“放行”由Filter來決定。可以理解為,Filter來決定是否呼叫Servlet!當執行完成Servlet的程式碼後,還會執行Filter後面的程式碼。

      1. Filter作用

   1:可以攔截請求(request)

   2:也可以攔截響應(response)

   3:放行,同意通過聯結器

   4:統計

3.Listener

1:監聽器就是 j2EE中的一個類(介面)

2:監聽什麼物件,主要是監聽 三大域物件request,session,application (ServletRequest,HttpSession,ServletContext)

3:監聽什麼內容:

       A: 監聽域物件的建立與銷燬  也就是生命週期監聽

       B: 監聽域物件的屬性新增,更新,移除動作

       C:監聽 被加入域物件中的物件 

ServletRequest物件:

       生命週期監聽:ServletRequestListener

       屬性監聽:ServletRequestAttributeListener

HttSession物件:

       生命週期監聽:HttpSessionListener

       屬性監聽:HttpSessionAttributeListener

       物件繫結監聽1:HttpSessionBindingListener

物件鈍化活化監聽2:HttpSessionActivationListener

ServletContext物件:

     生命週期監聽:ServletContextListener

     屬性監聽:ServletContextAttributeListener