1. 程式人生 > >【轉載】servlet三大作用域:request,session,application

【轉載】servlet三大作用域:request,session,application

javaweb開發中Servlet三大域物件的應用(request、session、application(ServletContext))。

1. request
request是表示一個請求,只要發出一個請求就會建立一個request,它的作用域:僅在當前請求中有效。

用處:常用於伺服器間同一請求不同頁面之間的引數傳遞,常應用於表單的控制元件值傳遞。

方法:request.setAttribute(); request.getAttribute(); request.removeAttribute(); request.getParameter().

2. session
伺服器會為每個會話建立一個session物件,所以session中的資料可供當前會話中所有servlet共享。

會話:使用者開啟瀏覽器會話開始,直到關閉瀏覽器會話才會結束。一次會話期間只會建立一個session物件。     

用處:常用於web開發中的登陸驗證介面(當用戶登入成功後瀏覽器分配其一個session鍵值對)。

方法:session.setAttribute(); session.getAttribute(); session.removeAttribute();

獲得session物件方法:

  1. 在Servlet中:HttpSession session = request.getSession();
  2. 由於session屬於jsp九大內建物件之一,當然可以直接使用。例如:<%session.serAttribute("name","admin")%>。  

session被銷燬
          1)session超時;
          2)客戶端關閉後,再也訪問不到和該客戶端對應的session了,它會在超時之後被銷燬;
          3)呼叫session. invalidate();
備註: session是伺服器端物件,儲存在伺服器端。並且伺服器可以將建立session後產生的sessionid通過一個cookie返回給客戶端,以便下次驗證。(session底層依賴於cookie)

3. Application(ServletContext)
作用範圍:所有的使用者都可以取得此資訊,此資訊在整個伺服器上被保留。Application屬性範圍值,只要設定一次,則所有的網頁視窗都可以取得資料。ServletContext在伺服器啟動時建立,在伺服器關閉時銷燬,一個JavaWeb應用只建立一個ServletContext物件,所有的客戶端在訪問伺服器時都共享同一個ServletContext物件;ServletContext物件一般用於在多個客戶端間共享資料時使用;

獲取Application物件方法(Servlet中):  
                   ServletContext app01 = this.getServletContext();
                   app01.setAttribute("name", "kaixuan");    //設定一個值進去
           
                    ServletContext app02 = this.getServletContext();
                     app02.getAttribute("name");    //獲取鍵值對  

ServletContext同屬於JSP九大內建物件之一,故可以直接使用

備註:伺服器只會建立一個ServletContext 物件,所以app01就是app02,通過app01設定的值當然可以通過app02獲取。

 

 

總結:

1.作用域: request session application 
 *    使用作用域傳遞資料和儲存資料
 *    使用作用域傳遞資料時,必須掌握作用域對應的生命週期和作用範圍
 * 
2. * 生命週期 
 * (1)  request:只限於一次請求
 * (2)  session:一次會話(多次請求)
 *    開始 
 *      使用者向伺服器傳送請求的時候 
 *      結束
 *        客戶端
 *         丟失JsessionId值的時候(關閉瀏覽器)
 *        伺服器端 
 *            關閉伺服器 
 *            超過會話的不活動週期時間 
 *  (3) application:專案的載入到解除安裝
 *3.作用範圍 
 * (1) requset:所有被請求轉發的Servlet
 * (2) session:所有的Servlet
 *  (3)application:所有的Servlet(換一個瀏覽器演示,跟session作用域區分)
 *  
 4.*如何正確的選擇作用域
 *(1)  request:跟當前操作功能相關
 * (2) session: 跟使用者資訊相關
 * (3) application:跟專案全域性資訊相關----》京東配送地址
 *  
 * 5.如何正確的選擇作用域不正確,會出現什麼情況
 *   記憶體浪費