我们知道session是依赖cookie的,如果用户的浏览器使用了禁用cookie的话,相当于每一次请求会话在服务器端都是一个新的session对象,也就失去了session的意义了,有2种方式可以解决这种问题。第一种的话就是修改浏览器的配置,由于浏览器的版本非常繁多,根据自己使用的浏览器百度如何禁用cookie有很多方案,这里就不做过多赘述了。
那么接下来说说第2种方案,那就是url的重写,先来说下原理,为什么我们每次请求服务器时,他能将我们的信息记录下来,因为在第一次发送请求时,我们会通过cookie头里的信息发送到服务器,这个时候服务器会创建session对象,并在响应请求的时候会把jseesionid放入到cookie头里面,这样,在我们每次页面的跳转发送请求和接受请求时,都会携带这个jseesionid来进行验证,保证时同一个用户,而如果像前面说的,禁用了cookie的话,那么cookie头时没有任何数据的,那么自然每次访问的时候服务器都会认为是一个新的请求,每次都会新建session对象,这样seesion的数据就没有共享,为了解决这个问题,刚刚说了可以通过url的重写来解决,最简单的方式就是在url的末端加上;注意是分号而不是问号,问号就是请求参数了,然后分号后面加上jsessionid=xxx,这样就相当于模仿cookie发送请求头请求给服务器,这个是最原始的方法,而且实际中也不会这样做,我们可以在用户访问之后通过response对象返回给用户一个url链接,然后在链接里跟上这个jsessionid的值即可,那么现在问题来了,这个jsessionid的值如何获取?