日期:2014-05-20  浏览次数:20673 次

请教一下一个session的问题
有个session问题我还是不理解  session不是有客户端访问就被创建 而是有HttpServletRequest.getSession(true)这样的语句时才被创建
访问JSP页面会自动加这句 第一次访问资源里的HTML则不会创建
第一次我们访问jsp的时候  服务器会自动创建一个session  并给它一个sessionid  并通过response回带给浏览器缓存  不管你浏览器关不关  你得到的那个session在服务器里面 
还是存在的  只会通过三种方式消除    但是当 浏览器下次请求其他页面的时候 会带着cookie用户名是Jessionid过来  也正是因为这样 下次请求的时候
服务器才不会创建session  我百度看资料说你把浏览器关了 那个存储sessionID的cookie消失了  所以下次你去重新打开浏览器再去访问资源
又会创建session  我疑惑的是为什么把浏览器关了 那个存储 sessionID的cookie 也会消失  不是那个用户名是 jessionid的COOKie已经缓存了吗

------解决方案--------------------
引用 楼主 job920:
……
第一次我们访问jsp的时候  服务器会自动创建一个session  并给它一个sessionid  并通过response回带给浏览器缓存  不管你浏览器关不关  你得到的那个session在服务器里面还是存在的 
… …


-----
关了浏览器后, session 在服务器里面里存在,但是在浏览器里消失了。
再打开浏览器访问同一个网页时,浏览器没有 sessionid  送给服务器,于是服务器认为是初次访问,新的session生成 (旧的实际上还在,直到timeout )。

当然,如果你是一个高手,还是可以在再开浏览器访问同一个网页时,手动加进原来的 sessionid cookie, 这样,你就还是可以回到原来的 session. (在 服务器的 session timeout 之前。Hacker 常用类似方法)