这里写目录标题
HttpSession
Session本意为"会话"的含义,是用来维护一个客户端和服务器关联的一种技术
·浏览器访问服务器时,服务器会为每一个浏览器都在服务器端的内存中分配一个空间,用于创建一个Session对象,该对象有一个id属性且该值唯一,我们称为SessionId,并且服务器会将这个 SessionId以Cookie方式发送给浏览器存储
·浏览器再次访问服务器时会将SessionId发送给服务器,服务器可以依据SessionId查找相对应的Session对象
每一个用户都会有一个session
另外session是一个会话的意思,代表的是多次请求和响应
HttpSession相关方法
HttpSession实现原理
HttpSession对象的创建是通过request.getSession()方法来创建的。 客户端浏览器在请求服务端资源时,如果在请求中没有JSESSIONID,getSession()方法将会为这个客户端浏览器创建一个新的HttpSession对象,并为这个HttpSession对象生成一个JSESSIONID,在响应中通过Cookie写回给客户端浏览器,如果在请求中包含了JSESSIONID,getSession()方法则根据这个ID返回与这个客户端浏览器对应的HttpSession对象,因为 jsp 里有内置对象,内置对象就是和 Server 交互的产物,所以如果你的首页是个 jsp 页的话, 即便没有HttpServletRequest.getSession(true),Session 也会创建
案例
生命周期:
在tomcat的默认生存时间30.可以修改,也可以用以上代码修改,只作用于当前项目
可以使用代码:
注意事项:
当cookie消失,那么session也会消失,接下来就会创建新的对象,不被引用的旧对象,并不会直接消失,而是根据时间
案例,实现谁登录的功能
HttpSession与Cookie总结
HttpSession与Cookie的区别:
cookie数据存放在客户的浏览器或系统的文件中,而HttpSession中的数据存放在服务器中
cookie不安全,而HttpSession是安全的
单个cookie保存的数据不能超过4K,很多浏览器都限制一个域名保存cookie的数量。而HttpSession没有容量以及数量的限制
HttpSession的使用建议:
HttpSession对象是保存在服务端的,所以安全性较高。我们可以在HttpSession对象中存储数据,但是由于HttpSession对象的生命周期不固定,所以不建议存放业务数据。一般情况下我们只是存放用户登录信息