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