本文共 1208 字,大约阅读时间需要 4 分钟。
1.session的ID
当用户在一个页面浏览并创建了一个session后,在另外一个页面得到那个session,浏览器是如何知道拿哪一个session给用户呢?原理是:
session是基于cookie的,创建session的时候会为session创建一个id号,当另外一个页面去得到session时,就会按照cookie的id号去获取相应的session。 但是要注意的是,这个cookie是没有有效期的,浏览器一旦关闭它就没有了,所以需要对这个cookie设置有效期。(可以做到用户关闭浏览器后,买的东西还在) 解决方法: 覆盖设置id号的cookie,并设置有效期 String sessionid=session.getId(); Cookie cookie=new Cookie("JSESSIONID",sessionid);//将设置session的id号的cookie覆盖(名字叫"JSESSIONID",不要弄错) cookie.setPath("/day07"); cookie.setMaxAge(30*60);//有效期半小时 response.addCookie(cookie);2.session集合技巧
比如用户买书,买来的书不能直接装进session里面,因为session里面有可能会有其他的东西存在(比如用户姓名),这样会和其他的东西混在一起,最合适的情况是,把用户所买的书封装成一个集合,之后放入session中,然后取出该类物品时,只需要取出相应的集合即可。
例子: //从session中得到用户用于保存所有书的集合(购物车) List list=(List)session.getAttribute("list"); if(list==null){ list=new ArrayList(); session.setAttribute("list", list); } list.add(book); session.setAttribute("list", list);3.session的生命周期
开始(生):第一次访问getSession代码时。(而不是访问网站时创建的)
结束(死):会话结束时(关闭浏览器)session不会立即死亡,当session在30分钟没人用的时候才会被服务器清除,如果不关闭浏览器,30分钟后session同样会被摧毁。session对象是由服务器管理的。 session的失效时间是可以控制的: 1.在web.xml里面这样配置: <session-config> <session-timeout>10</session-timeout> <session-config> 注意,<session-timeout>里面配置的是session失效的时间,以分钟为单位。 2.代码实现: session.invalidate();转载地址:http://isfbo.baihongyu.com/