栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Session的使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Session的使用

文章目录
  • Session的使用
    • 获取Session对象
    • Session的原理分析
    • Session钝化与活化、有效时间
    • Session销毁
  • Cookie和Session小结

Session的使用

Session:服务端会话跟踪技术,将数据保存到服务端。

  • Session是存储在服务端而Cookie是存储在客户端;
  • 存储在客户端的数据容易被窃取和截获,存在很多不安全的因素;
  • 存储在服务端的数据相比于客户端来说就更安全;
获取Session对象

Session使用的是request对象。

HttpSession session = request.getSession();

Session对象提供的功能

1.存储数据到 session 域中

void setAttribute(String key, Object o)

2.根据 key,获取值

Object getAttribute(String key)

3.根据 key,删除该键值对

void removeAttribute(String key)
Session的原理分析

Session是基于Cookie实现的,Session实现的也是一次会话中的多次请求之间的数据共享。即关闭浏览器现有的Session就会被销毁。

Session一次会话多次请求之间,多次请求获取Session的对象是同一个。

Session如何保证在一次会话中获取的Session对象是同一个
在第一次获取session对象的时候,session对象会有一个唯一的标识id,假如是id:10。在生成session的Java类处理完请求后,需要通过Tomcat服务器响应结果给浏览器。Tomcat服务器发现业务处理中使用了session对象,就会把session的唯一标识id:10当做一个cookie,添加Set-Cookie:JESSIONID=10到响应头中,并响应给浏览器。

浏览器接收到响应结果后,会把响应头中的coookie数据存储到浏览器的内存中,再次访问同一网站时,浏览器就 会把cookie中的数据按照cookie: JESSIONID=10的格式添加到请求头中并发送给服务器Tomcat。

需要读取session的Java类就会从请求头中就读取cookie中的JSESSIONID值为10,然后就会到服务器内存中寻找id:10的session对象,如果找到了,就直接返回该对象,如果没有则新创建一个session对象。

Session钝化与活化、有效时间

服务器重启后,Session中的数据是否还在?
服务器正常关闭时,Tomcat会将Session对象序列化保存到本地,下次启动时再读入内存中。

钝化
在服务器正常关闭后,Tomcat会自动将Session数据写入硬盘的文件中。
钝化的数据路径为:项目目录targettomcatworkTomcatlocalhost项目名称SESSIONS.ser

活化
再次启动服务器后,从文件中加载数据到Session中,数据加载到Session中后,路径中的SESSIONS.ser文件会被删除掉。

生存周期
关闭浏览器现有的Session就会被销毁。session的数据要想共享,浏览器不能关闭,所以session数据不能长期保存数据。
cookie是存储在客户端,是可以长期保存。

Session销毁

session的销毁会有两种方式:

1.默认情况下,无操作,30分钟自动销毁,可以在项目的web.xml中配置




    
    	//设置有效期为100分钟
        100
    

如果没有配置,默认是30分钟,默认值是在Tomcat的web.xml配置文件中的固定值。

2.调用Session对象的invalidate()进行销毁

session.invalidate();
Cookie和Session小结

Cookie 和 Session 都是来完成一次会话内多次请求间数据共享的。

  • 区别:
    • 存储位置:Cookie 是将数据存储在客户端,Session 将数据存储在服务端
    • 安全性:Cookie不安全,Session安全
    • 数据大小:Cookie最大3KB,Session无大小限制
    • 存储时间:Cookie可以通过setMaxAge()长期存储,Session默认30分钟
    • 服务器性能:Cookie不占服务器资源,Session占用服务器资源

使用场景

  • Cookie是用来保证用户在未登录情况下的身份识别
  • Session是用来保存用户登录后的数据

介绍完Cookie和Session以后,具体用哪个还是需要根据具体的业务进行具体分析。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1013609.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号