瀏覽器與web server之間通常是無狀態的,為了某種需求,如做購物車,需要一種有狀態的串連機智.WEB就引入了SESSION的概念.實現的方式就是SESSION TRACKONG.一般實現方法有:
1 建立含有資料的隱藏表格欄位
2 重寫URL
3 使用COOKIE
4 就是本文要討論的Servlet SESSION API問題
為了識別每個CLIENT的身份,WEB SERVER會給每個client分配一個SESSION ID,並隨網頁一起傳給CLIENT.以上四種方式處理的不同在於CLIENT下次再請求頁面時,這個SESSION ID如何傳給伺服器,以便讓伺服器知道是誰.
第一種方式的缺點是通過查看網頁原代碼就知道SESSION ID,安全隱患大,如
<form name="form" mothod=post aciton="aa.jsp">
<input type="hidden" name="name" value="aiqiuming"/>
<input type="submit" value="transmit"/>
</form>
第二種方式是把SESSION ID寫在URL上,以GET方式傳輸到伺服器,如
http://www.abc.com?sessionid=123456
同樣不安全,而且URL的長度有限制
第三種:使用COOKIE,受瀏覽器設定限制(預設是在一定的安全範圍內是可以使用的),而且不同的人用同一台電腦,可以互相看到對方的資訊,如購物車的資訊
第四種:當CLIENT不接受COOKIE的時候,就改用重寫URL方式了,解決了當不能使用COOKIE的問題.此時必須用encodeURL()或encodeRedirectURL()方法.如:
<a href=www.ezget.com.cn>優得網</a> 改為:
<a href='<%=response.encodeURL("www.ezget.com.cn)"%>優得網</a>
又如:
response.sendRedirect(www.ezget.com.cn) 改為:
response.sendRedirct(response.encodeRedirectURL(www.ezget.com.cn))