java web開發(fā)中servlet三大作用域?qū)ο鬄閞equest、session和application(ServletContext)
1.request
request表示一個請求,只要發(fā)出一個請求就會創(chuàng)建一個request。
作用域:
僅在當前請求中有效。
用處:
常用于服務(wù)器間同一請求不同頁面之間的參數(shù)傳遞。常用于表單的控件值傳遞。
方法:
request.setAttribute();request.getAttribute();request.removeAttribute();request.getParameter().
2.session
服務(wù)器會為每個會話創(chuàng)建一個session對象,所以session中的數(shù)據(jù)可供當前會話中所有Servlet共享。
作用域:
用戶打開瀏覽器會話開始,直到關(guān)閉瀏覽器會話才結(jié)束。一次會話期間只會創(chuàng)建一個session對象。
用處:
常用于web開發(fā)中的登錄驗證頁面(當用戶登錄成功后瀏覽器分配其一個session鍵值對)
方法:
session.setAttribute(); session.getAttribute(); session.removeAttribute();
獲得session對象方法:
在Servlet中:HttpSession session = request.getSession();
由于session屬于jsp九大內(nèi)置對象之一,當然可以直接使用。例如:<%session.serAttribute("name","admin")%>。
session是服務(wù)器對象,保存在服務(wù)器端。并且服務(wù)器可以將創(chuàng)建session后產(chǎn)生的sessionId通過一個cookie返回給客戶端,方便下次驗證。
3.application(ServletContext)
作用域:
所有的用戶都可以取得這個信息,此信息在整個服務(wù)器中被保留。application屬性范圍值,只要設(shè)置一次,則所有的網(wǎng)頁窗口都可以取得數(shù)據(jù)。
ServletContext在服務(wù)器啟動時創(chuàng)建,在服務(wù)器關(guān)閉時銷毀,一個javaweb應(yīng)用只能創(chuàng)建一個ServletContext對象。所有客戶端在訪問服務(wù)器時共享同一個ServletContext對象。
獲取application對象方法(Servlet中):
ServletContext app01 = this.getServletContext();
app01.setAttribute("name", "kaixuan");??? //設(shè)置一個值進去
ServletContext app02 = this.getServletContext();
app02.getAttribute("name");??? //獲取鍵值對
4.如何正確的選擇作用域
*(1)? request:跟當前操作功能相關(guān)
* (2) session: 跟用戶信息相關(guān)
* (3) application:跟項目全局信息相關(guān)----》淘寶配送地址