request,session,application三者關系


 
對象 生效時間 作用域  實現接口
request HTTP請求開始到結束這段時間 在當前請求中有效  HttpServletRequest
session  HTTP會話開始到結束這段時間 在當前會話中有效  HttpSession
application 服務器啟動到停止這段時間 在所有應用程序中有效  ServletContext
 
 
 
 
 

request:

Servlet之間的信息共享是通過HttpServletRequest接口的兩個方法來實現的:
1. void setAttribute(String name, Object value) :將對象 value 以 name 為名稱保存到request作用域中。

    Object getAttribute(String name) :從request作用域中取得指定名字的信息。

2. doGet()、doPost() 函數的第一個參數就是 HttpServletRequest 對象, 使用這個對象的 setAttribute 即可傳遞信息。
  那么設置好信息之后,要用到 RequestDispatcher 接口的 forward 方法,將請求轉發給其他Servlet。

session:
session作用域比較容易理解,同一瀏覽器訪問多次,在這多次訪問之間傳遞信息,就是session作用域。

session是通過HttpSession接口實現的。

Object HttpSession.getAttribute(String name) :從session中獲取信息

void HttpSession.setAttribute(String name, Object value): 向session中保存信息

而通過HttpServletRequest.getSession()方法可以獲得HttpSession對象。

HttpSession HttpServletRequest.getSession() 獲取當前請求所在的session的對象。session的開始容易判斷(瀏覽器發出第一個HTTP請求即可認為會話開始), 但結束就不好判斷了(因為瀏覽器關閉時不會通知服務器“我關了,會話可以結束了”), 所以只能通過這種方法判斷:如果一定的時間內客戶端沒有反應,則認為會話結束。 Tomcat的默認值為120分鍾,但這個值也可以通過 HttpSession 的 setMaxInactiveInterval 方法來設置。
void setMaxInactiveInterval(int interval) 設置繪畫的超時值。如果想主動讓會話結束,如用戶單擊“注銷”的時候,可以使用 HttpSession 的 invalidate 方法:
vooid invalidate() 強制結束當前session。

application:

application作用域上的信息傳遞就是通過ServetContext實現的。
Object getAttribute(String name) 從application中獲取信息。

void setAttribute(String name, Object value) 向application作用域中設置信息。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM