Session是基于Cookie的一种会话机制,Cookie是服务器返回一份数据给客户但,并且存放再客户端上,Session是数据存放在服务端上
常用方法:
request.getSession()——获取session对象
request.getSession(boolean);
request.getSession(true)相当于req.getSession()
获取session对象,如果没有则创建一个
req.getSession(false)获取当前session对象,如果没有则返回null
session.getId()——获取session的id,id由Tomcat服务器生产
session.getAttribute(key,value)——存值
session.setAttribute(key)——取值
session.removeAttribute(key)——删值
session.invalidate()——销毁session对象,销毁session对象通常用于安全退出。
Session创建的时候:如果有在servlet调用了getSeesion就会自动创建
Session对象销毁时机:
1.存活时间过期
2.服务器意外关闭
3.调用invalidate销毁session
Session设置存活时间:
默认存在时长为30分钟
可以设置session的存货时间
1.setMaxInactiveInterval(int)单位为秒
2.web.xml ,单位为分钟
3.立即销毁session
session.invalidate();
Session和Cookie的区别:
1. 如果将数据存储在客户端,每次向服务器端发请求时都将存在客户端的数据随着请求发送到服务器端,修改后再发回到客户端保存的这种模式叫做Cookie。
2. 如果将数据存储在服务器端,并且为这组数据标示一个编号,只将编号发回给客户端。
当客户端向服务器发送请求时只需要将这个编号发过来,服务器端按照这个编号找到对应的数据进行管理的这种模式叫做Session。
3. 作用域里面的存储格式,session是以String,Object的形式存储,而cookie是以String,String的形式存储
sessionid是通过cookie来传递,如果cookie没有设置有效期,关闭浏览器之后,cookie就消失了,里面的sessionid也就消失了,下一次重新访问就会没有之前的数据