1、是什么
是一种会话技术, 基于cookie的一种会话技术。 cookie 是可以把数据存放在客户端,下一次来访的时候,带上那个数据,服务器就知道客户端是谁。 没有安全隐患。
Session : 数据存放在服务器端,并且把这个session对应的sessionID ,传递给客户端。是通过 Cookie去传递的。下一次客户端在来访的时候,带上那个sessionID ,就可以取到以前的数据了。
2、怎么用
HttpSesssion session = request.getSession();
session.setAttribute();
session.getAttribute();
3、session什么时候创建, 什么时候销毁?
调用request.getSession 就会创建
关闭服务器即销毁, 或者会话过期,超过了设定时间,默认30分钟。
关闭浏览器, session不会销毁, 因为这个session 数据是存放在服务器的内存中的。
那么为什么再一次开启浏览器访问的时候,无法取到以前的数据。
因为session 的id是通过cookie来传递的。 但是这个cookie并没有设置有效期。 所以关闭浏览器之后, cookie就删除了。 表明里面的那个sessionID 也就没有了。下一次再来访问。 如果还想在下一次访问的时候,取到以前的数据。
session会话默认有效期 30分钟
4、 在服务器端手动设置cookie
String id = request.getSession().getId();
Cookie cookie = new Cookie("JSESSIONID",id);
cookie.setMaxAge(60*60*24*7);//7天
reponse.addCookie(cookie);
//获取session对象
HttpSession session = request.getSession();
//得到会话ID
String id = session.getId();
String name = null;
Object value =null;
//存值
session.setAttribute(name, value);
//取值
session.getAttribute(name);
//移除值
session.removeAttribute(name);