JSP_006_HttpSession之原理
HttpSession原理【依赖Cookie中的JSESSIONID来查找】
request.getSession()方法:获取Cookie中的JSESSIONID:
1)如果sessionId不存在,服务器创建session,把session保存起来,把新创建的sessionId保存到Cookie中
2)如果sessionId存在,服务器通过sessionId查找session对象,如果没有查找到,创建session,把session保存起来,把新创建的sessionId保存到Cookie中
3)如果sessionId存在,服务器通过sessionId查找到了session对象,那么就不会再创建session对象了。
4)最后,返回session
第一次:如果创建了新的session,浏览器会得到一个包含了sessionId的Cookie【基于Cookie,但是该Cookie的存活是在浏览器内,不在硬盘】
··················这个Cookie的生命为-1,即只在浏览器内存中存在,如果不关闭浏览器,那么Cookie就一直存在。
第二次:下次请求时,再次执行request.getSession()方法时,通过Cookie中的sessionId找到session对象。
··················所以与上一次请求使用的是同一session对象。
服务器不会马上给你创建session,在第一次获取session时,才会创建!request.getSession();
【第一次才创建,之后直接获取】
三个方法-------------------------------------------
1)request.getSession(false):如果session缓存中(如果cookie不存在),不存在session,那么返回null,而不会创建session对象。
2)request.getSession(true)
3)request.getSession(),2和3的方法效果相同