四大域對象:
page ?request ?session ?application
1.page:page是指當前頁面,只對當前jsp頁面有效
:page里面的變量沒法從index.jsp傳遞到test.jsp,只要頁面跳轉了,它們就不見了
2.request:是指從http請求到服務器處理結束,返回響應的整個過程,在這個過程中使用forward方式跳轉多個jsp,在這些頁面里你都可以使用這個變量.
:request里的變量可以跨越forward的前后兩頁,但是只要重新刷新頁面,就開始重新計算
3.session:有效范圍當前會話,從瀏覽器的打開到瀏覽器的關閉
:session和application里的變量一直在累加,但是只要瀏覽器關閉,session對象就不見了
(1)設置session會話
HttpSession session=request.getSession()
session.setAttribute("user",ub);
(2)設置與上一次最長交互時間間隔 單位是秒
session.setMaxInactiveInterval(10)
(3)使session失效
session.invalidate()
4.application:它的有效范圍是整個應用
作用域里的變量,它的存活時間是最長的,如果不進行手工刪除,它們就一直可以使用
:application里的變量一直在累加,除非重啟tomcat,否則一直變大,作用域規定的是變量的有效期限
Session和Cookie
Session
Session是服務器端技術,利用這個技術,服務器在運行時可以為每一個用戶的瀏覽器創建一個其獨享的session對象,由于session為用戶瀏覽器獨享,所以用戶在訪問服務器的web資源時,可以把各自的數據放在各自的session中,當用戶再去訪問服務器中的其它web資源時,其它web資源再從用戶各自的session中取出數據為用戶服務。
Cookie
Cookie是客戶端技術,服務器把每個用戶的數據以cookie的形式寫給用戶各自的瀏覽器。當用戶使用瀏覽器再去訪問服務器中的web資源時,就會帶著各自的數據去。這樣,web資源處理的就是用戶各自的數據了。
Cookie的默認生命周期是一次會話 Cookie中有JSESSIONID
Session.getId()==cookie的JSESSIONID
只有創建Session的時候(request。getSession)時才有JSESSION,然后才將JSESSIONID存到Cookie中
cookie信息放到請求頭
服務端要JSESSIONID干什么?
請求攜帶cookie的JSESSIONID到服務端,服務端session可以通過getId獲取到JSESSIONID
與Cookie中的JSESSIONID一比較,就可以將請求和session對應上。