【JSP开发】有关session的一些重要的知识点

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();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值