天天看點

jsp中 application 、EL表達式中applicationScope 、 Java中servletContext 關系

首先分别說說三者是什麼:

  ①jsp中 application:

application 對象也是在伺服器啟動就生成一個,伺服器關閉,其才釋放。保證了使用者在不同的頁面間浏覽可以擷取共享的公共資訊。

  ②EL表達式中applicationScope

 ${applicationScope.bizCodes[category]}" ------------EL表達式

   jsp中因為我們并沒有指定哪一個範圍的username,是以它會依序從Page、Request、Session、Application範圍查找。

  假如途中找到username,就直接回傳,不再繼續找下去,但是假如全部的範圍都沒有找到時,就回傳null。

 屬性範圍在EL中的名稱

         【jsp中】       【EL表達式中】                     

         Page          PageScope

         Request          RequestScope

         Session          SessionScope

         Application      ApplicationScope

  ③Java中servletContext

ServletContext,是一個全局的儲存資訊的空間,伺服器開始,其就存在,伺服器關閉,其才釋放。request,一個使用者可有多個;session,一個使用者一個;而servletContext,所有使用者共用一個。是以,為了節省空間,提高效率,ServletContext中,要放必須的、重要的、所有使用者需要共享的線程又是安全的一些資訊。

換一種方式說吧,運作在Java虛拟機中的每一個Web應用程式都有一個與之相關的Servlet上下文。ServletContext對象是Web伺服器中的一個已知路徑的根,Servlet上下文被定位于http://localhost:8080/項目名.以 /項目名 請求路徑(稱為上下文路徑)開始的所有請求被發送到與此ServletContext關聯的Web應用程式。一個ServletContext對象表示了一個Web應用程式的上下文。

Servlet上下文:Servlet上下文提供對應用程式中所有Servlet所共有的各種資源和功能的通路。Servlet上下文API用于設定應用程式中所有Servlet共有的資訊。Servlet可能需要共享他們之間的共有資訊。運作于同一伺服器的Servlet有時會共享資源,如JSP頁面、檔案和其他Servlet。

舉例:

地區資訊等,全國的省市縣市固定的,所有我們就可以伺服器啟動的時候,我們就将資料放入servletContext中,避免多次請求資料庫。

三者的差別:

其實學習前最好先學習Servlet,
是在Servlet基礎上發展而來的,jsp也是一種特殊的servlet。
其application對象在Servlet中是ServletContext的執行個體對象,
可以在你寫的Servlet中通過this.getServletContext();方法來擷取一個ServletContext執行個體對象.
比如:
 this.getServletContext().setAttribute("users",userList);

然後在顯示層調用還是使用application.getAttribute("users");
來實作.

是以全局變量在servlet中叫ServletContext;在jsp中叫application;而application在EL表達式中叫:applicationScope 。      

繼續閱讀