1. 程式人生 > >JSP中application的用法

JSP中application的用法

1 什麼是application物件 ?
    (1) 當Web伺服器啟動時,Web伺服器會自動建立一個application物件。application物件一旦建立,它將一直存在,直到Web伺服器關閉。
   一個Web伺服器通常有多個Web服務目錄 (網站),當Web伺服器啟動時,它自動為每個Web服務目錄都建立一個application物件,這些application物件各自獨立,而且和Web服務目錄一一對應。
訪問同一個網站的客戶都共享一個application物件,因此,application物件可以實現多客戶間的資料共享。
訪問不同網站的客戶,對應的application物件不同。
    (2) application物件的生命週期:從Web伺服器啟動,直到Web伺服器關閉。
注意:一個Web應用程式啟動後,將會自動建立一個application物件,而且在整個應用程式的執行過程中只有一個application物件,也即所有訪問該網站的客戶都共享一個application物件。

    (3) application物件的作用範圍:application物件是一個應用程式級的物件,它作用於當前Web應用程式,也即作用於當前網站,所有訪問當前網站的客戶都共享一個application物件。

 具體來說:不管哪個客戶來訪問網站A,也不管客戶訪問網站A下哪個頁面檔案,都可以對網站A的application物件進行操作,因為,所有訪問網站A的客戶都共用一個application物件。
因此,當在application物件中儲存資料後,所有訪問網站A的客戶都能夠對其進行訪問,實現了多客戶之間的資料共享。

    (4) application物件的基類是:javax.servlet.ServletContext類。

 注意:有些Web伺服器不直接支援使用application物件,必須用ServletContext類來宣告application物件,再呼叫getServletContext()方法來獲取當前頁面的application物件。

    (5) ServletContext類:用於表示應用程式的上下文。

一個ServletContext類的物件表示一個Web應用程式的上下文。
具體來說:在Web伺服器中,提供了一個Web應用程式的執行時環境,專門負責Web應用程式的部署、編譯、執行以及生命週期的管理,通過ServletContext類,可以獲取Web應用程式的執行時環境資訊。

 常識:JSP引擎、Servlet引擎、JSP容器和Servlet容器,都是指Web伺服器,Web伺服器用於管理所有Web應用程式。

     (6) application物件的常用方法,如下所示:

方法名描述

         String getAttribute(String name)根據屬性名稱獲取屬性值。

         Enumeration getAttributeNames()獲取所有的屬性名稱。

         void setAttribute(String name, Object object)設定屬性,指定屬性名稱和屬性值。

         void removeAttribute(String name)根據屬性名稱刪除對應的屬性。 

         ServletContext getContext(String uripath)獲取指定URL的ServletContext物件。

         String getContextPath()獲取當前Web應用程式的根目錄。

         String getInitParameter(String name)根據初始化引數名稱,獲取初始化引數值。

         int getMajorVersion()獲取Servlet API的主版本號。

         int getMinorVersion()獲取Servlet API的次版本號。

         String getMimeType(String file)獲取指定檔案的MIME 型別。

         String getServletInfo()獲取當前Web伺服器的版本資訊。

         String getServletContextName()獲取當前Web應用程式的名稱。

         void log(String message)將資訊寫入日誌檔案中。

2、session物件和application物件的比較

     (1) 兩者的作用範圍不同:
     session物件是使用者級的物件,而application物件是應用程式級的物件。
     一個使用者一個session物件,每個使用者的session物件不同,在使用者所訪問網站的多個頁面之間共享同一個session物件。
     一個Web應用程式一個application物件,每個Web應用程式的application物件不同,但一個Web應用程式的多個使用者之間共享同一個application物件。

    在同一個網站下:

    n 每個使用者的session物件不同

    n 所有使用者的application物件相同

    在不同網站下:

    n 每個使用者的session物件不同

    n 每個使用者的application物件不同

     (2) 兩者的生命週期不同:
     session物件的生命週期:使用者首次訪問網站建立,使用者離開該網站 (不一定要關閉瀏覽器) 消亡。
     application物件的生命週期:啟動Web伺服器建立,關閉Web伺服器銷燬。