博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【JSP开发】有关session的一些重要的知识点
阅读量:6521 次
发布时间:2019-06-24

本文共 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/

你可能感兴趣的文章
linux下配置网络环境
查看>>
java Windows7 下环境变量设置
查看>>
Route 排错
查看>>
缓存清理策略
查看>>
SCEA认证信息地址
查看>>
高并发之隔离术
查看>>
NBU异构还原Oracle完整备份的一些总结
查看>>
freeBSD安装详细讲解
查看>>
WSFC2016 VM弹性与存储容错
查看>>
文档管理,文本编辑控件TX Text Control .NET for WPF
查看>>
复习 Python 匿名函数 内建函数
查看>>
Security Identifiers | Win SRV2016 SID Change 修改
查看>>
看看来自日本的扫描,做网站需要注意的
查看>>
JDK 1.7+Android SDK+IntelliJ IDEA 13+Genymotion 安卓开发环境部署
查看>>
钓鱼邮件***防范指南
查看>>
session_start()放置位置的不正确引发的ROOT常量 未定义的错误
查看>>
如何设定VDP同时备份的任务数?
查看>>
ipsec的***在企业网中的经典应用
查看>>
过来人谈《去360还是留在百度?》
查看>>
mysql备份工具innobackupex,xtrabackup-2.1安装,参数详解
查看>>