Servlet的session問題

來源:互聯網
上載者:User
瀏覽器與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)) 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.