Session的操作、规范、细节
1.创建和获取Session对象
HttpSession session=request.getSession(true);如果当前请求中存在一个Session对象,就直接返回,如果不存在Session对象,就先创建一个再返回
HttpSession session=request.getSession(false);不存在返回null
HttpSession session=request.getSession();等价于第一个
2.往Session中存储数据
session对象.setAttribute(String name,Object value);
3.往Session中取出数据
Object value=session对象.getAttribute(String key);
4.删除Session
1):删除Session(用户注销登陆)
session.removeAttribute("currentName");
2):销毁Session对象(Session中所有的属性都不存在)
session.invalidate();
5.Session的超时管理
session.setMaxInactiveInterval(60*10);//超过10分钟,销毁Session
tomcat服务器的默认超时时间是30分钟,但是20多分钟一般就销毁了
6.URL重写
Session是一种特殊的Cookie,而浏览器可以禁用Cookie
此时,需要在每一个资源后手动携带session的ID
/session/list;jsessionid=87287754635E577453647FD6467575888
String url=response.encodeURL("/session/list");自动在资源后拼接;jsessionid=87287754635E577453647FD6467575888
注意:开发中都不会取消接收cookie的
Session的细节
1.一般的,我们存储到Session中的属性名称,要唯一,我们习惯XXX_IN_SESSION;
2.若需要把多个数据存放到Session中,一般会封装成对象
3.如果太多服务器之间需要共享Session,此时Session中的对象(如:User),必须实现java.io.Serializable(才能在网络上传播)
序列化 :把对象信息存储为二进制
反序列化:把二进制信息恢复成对象