Web開發中的四個域物件(範圍由小到大)
簡介:
page(jsp有效) request(一次請求) session(一次會話)application(當前web應用)
page域指的是pageContext.
request域指的是requestHttpServletRequest
session 域指的是 sessionHTTPSession
application 域指的是 applicationServletContext
之所以他們是域物件,原因就是他們都內建了map集合,都有setAttribute getAttribute方法。
他們都有自己固定的生命週期和作用域。這四個物件的生命週期(生命週期就是值物件的建立到銷燬的期間):
四個域物件的宣告週期:
page:jsp頁面被執行,生命週期開始,jsp頁面執行完畢,宣告週期結束。
request:使用者傳送一個請求,開始,伺服器返回響應,請求結束,生命週期結束。
session:使用者開啟瀏覽器訪問,建立session(開始),session超時或被宣告失效,該物件生命週期結束。
application:web應用載入的時候建立。Web應用被移除或伺服器關閉,物件銷燬。[結束]。
注意:
Page只在當前jsp有效,每次請求分別對應不同的request。
Request只在當前請求有效,每次請求分別對應不同的request域。
Session只在一次會話中有效,會話結束就無法取到資料了。
四個域物件在選擇的時候,能用範圍小的絕不用範圍大的:
page:資料只是暫時存在集合,在jsp頁面的其他地方要用,用page(頁面中自定義的map)。
Request:資料只是做顯示的,看完了就沒用了。就存request域,請求轉發,Servlet產生的處理結果(資料)交給jsp顯示,資料轉發可以帶資料。
Session:資料給使用者看完了,一定還要用,會話結束了就沒用了。
使用者登入,使用者資訊發給客戶端看,看完了,一會訪問別的頁面還要看使用者資訊。
購物車,購物車成功了,給使用者看購物車,待會隨時間可以檢視購物車。
請求重定向,因為是兩次請求,每一次請求的資料,第二次請求還要看。
application:資料給一個使用者用完了,別人還要用。
聊天室,聊天記錄,需要給所有的使用者看。
統計網站線上人數,所有看到的應該是一個數。
總結:
四個域物件在選擇的時候,能用範圍小的絕不用範圍大的。需要定義Map時不如用page,請求Servlet,轉發給jsp的資料存request,請求重定向帶過去的資料存Session,全域性的資料存application。