天天看點

【JSP開發】解決session中cookie被禁用

大家知道,session的儲存是靠cookie儲存id的,但是有一些使用者的浏覽器設定的是"禁用cookie",那麼我們用到session的網站部署上去就會影響使用者通路session嗎?很顯然不能,是以我們要在開發階段解決這種問題的發生。

如果cookie被禁用的話,session的id号就不會被浏覽器記錄,此時使用者就看不到取得session頁面中的session資訊。

解決方法:url路徑重寫。

詳細點說就是,在頁面1使用者建立的session,并且cookie給它設定了id号,在頁面2使用此session的時候,設定點選超連結時,路徑上給一個參數帶過去(如http;//localhost:8080/day07/sessiondemo4?id=xxx)

具體實作:

//進首頁的session會用到最後

        request.getsession();

        string url1=response.encodeurl("/day07/sessiondemo1");//這個方法會自動的在url上面加上session的id号(如果cookie被禁用的話,如果cookie沒有被禁用,就不會加session的id号)

        string url2=response.encodeurl("/day07/sessiondemo2");

        out.write("<a href='"+url1+"'>購買</a></br>");

        out.write("<a href='"+url2+"'>結賬</a>");

上面url的效果:

<a href="/day07/sessiondemo1;jsessionid=572fcd20d16825556eaad9e8b1d3984d">購買</a></br>

<a href="/day07/sessiondemo2;jsessionid=572fcd20d16825556eaad9e8b1d3984d">結賬</a>

浏覽器第一次通路伺服器的時候,cookie帶值,當浏覽器第二次通路伺服器時,伺服器會向浏覽器去要cookie,如果浏覽器沒有禁用cookie,那麼伺服器就得到浏覽器相應的值,但是如果浏覽器禁用了cooki會檢視url上是否帶有擁有session的id的cookie。