前言:
web應用中經常需要對某些有用的信息進行存儲或者附加一些信息。本文主要介紹session,即“會話”跟蹤的幾種不同方式~
----------------------------
4種管理session的方式:
1.重寫url
通過在請求的url后面追加參數信息進行會話跟蹤。如:
"http://localhost:8080/shop/index.jsp?page=1&name=admin"
2.使用隱藏域
比如更新用戶信息時,因為id不可更改,故將傳到更新頁面的user.id設置為hidden:
<form action="${pageContext.request.contextPath}/userAction_update.action" method="post">用戶名:<input type="text" name="name" value="${requestScope.user.name }" /><br><input type="submit" value="提交" /><input type="hidden" name="id" value="${requestScope.user.id}" /></form>
3.Cookie
javax.servlet.http的package下面專門有Cookie類,通過 new Cookie()我們可以解決前面2種方式的缺陷,即不只是將信息傳送到下一個頁面或者下一個請求,而是實現將信息保存在進行多個頁面。Cookie中的信息相當于一個“信息塊”,其可以在瀏覽器和服務器之間傳送。但是,瀏覽器默認的可容納的Cookie數量有限,一般不超過20個。而且,Cookie無法準確定位。想要確認當前頁面是否含有“A”這個Cookie,必須通過枚舉才可能得知!
4.HttpSessioin
HttpSession對象是一種更強大的會話管理方式。其可通過http訪問過程中的request獲得,并將其保存到服務器中。由于其可以跨頁面保存,因此一般用于保存重要的用戶信息或者購物車信息等!
-----------------------------------
附:session與cookie的聯系與區別:
(1)聯系:
cookie與session都可以用于跨頁面的信息保存,比url重寫和hidden的方式更穩定。
(2)區別:
- cookie一般存在于客戶端的本地瀏覽器,而session存在于遠程的server端。
- cookie存儲機制不同于session。前者,每次必須遍歷完所有的cookie信息才能進行;后者可通過getAttribute(String s)來判斷當前是否存在“s”的session,因此存取session方便;
- session較cookie靈活,而且更安全。