Session存储在服务器端,为了防止在服务器的内存中(为了高速存取)Sessinon在用户访问第一次访问服务器时创建,
注:需要注意只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session,可调用request.getSession(true)强制生成Session。
Session什么时候失效?
1. 服务器会把长时间没有活动的Session从服务器内存中清除,此时Session便失效。Tomcat中Session的默认失效时间为20分钟。
2. 调用Session的invalidate方法。
Session相对浏览器来说: 虽然Session保存在服务器,对客户端是透明的,它的正常运行仍然需要客户端浏览器的支持。Session不能依据HTTP连接来判断是否为同一客户,可以用Cookei来作为标示,因此服务器向客户端浏览器发送一个名为JSESSIONID的Cookie,它的值为该Session的id(也就是HttpSession.getId()的返回值)。Session依据该Cookie来识别是否为同一用户。
Cookie是服务器自动生成的,仅当前浏览器内有效,并且各浏览器窗口间不共享,关闭浏览器就会失效。浏览器窗口内的链接所打开的子窗口会共享父窗口的Cookie
注:新开的浏览器窗口会生成新的Session
如果客户端浏览器将Cookie功能被禁用,或者不支持Cookie怎么办?
例如,绝大多数的手机浏览器都不支持Cookie。Java Web提供了另一种解决方案:URL地址重写