天天看点

【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。