栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

会话技术从使用到细节的处理

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

会话技术从使用到细节的处理

会话技术是什么

会话:一次会话(浏览器一次给服务器发送多次请求,会话建立,直到有一方断开连接)中包含多次请求和响应

功能:在一次会话中共享多次请求间的数据

分类:
1.客户端会话技术:cookie
2.服务器端会话技术:Session
客户端会话技术

1.基本使用

创建cookie对象,绑定数据,是一个键值对的形式,值得注意的是cookie的构造方法传入的两个参数都是字符串,cookie并不允许存储除字符串以外的数据。

new cookie(String name, String value);
// 设置头
setName(String name);
// 设置值
setValue(String value);

2.发送cookie对象给客户端保存

response.addcookie(cookie cookie);

3.获取客户端存储的cookie对象,返回一个数组

cookie[]	request.getcookies();
cookie的细节
1、一次可以发送多个cookie,只需要都给它使用addcookie方法就行 2、 cookie在浏览器中可以保存多久的是时间?

       在默认情况下,当关闭浏览器后,cookie将被销毁

3、持久化存储

       调用方法cookie对象的方法setMaxAge(int seconds),单位时秒,有三种结果

正数:表示将cookie数据写入硬盘文件文件中,持久化存储,当到达指定的时间后cookie文件自动销毁负数:默认值,当浏览器被关闭时自动销毁0:删除cookie信息

4、cookie能不能存储中文?

       在tomcat8.0之前,cookie是不能存储中文的,8.0以后的版本是支持中文的

5、cookie共享问题

假设在一个tomcat服务器中,部署了多个项目,那么在这些项目中cookie是否能被共享?
       在默认情况下是不能被共享的,共享需要设置cookie的获取范围,语法:setPath(String path),默认情况下它的是是当期目录,将它的值设置为"/",表示根目录不同tomcat服务器间cookie共享问题
       语法:setDomain(String path),如果设置一级域名相同,那么多个服务器之间就可以共享,如:setDomain(".baidu.com") 就是一级域名

注:cookie存储数据在客户端的浏览器上;浏览器对单个cookie大小有一定的限制(约4kb左右),同一域名下的总cookie数量也有一定的限制(20个);最后cookie一般存储小量不太敏感的数据,可以用于在不登录的情况下服务器对客户端身份的识别

服务器会话技术
    基本语法
// 通过request获取Session
Session session = request.getSession();

//  获取指定键的值,
Object	session.getAttribute(String name);

// 存储一组数据,Session对存储的值没有类型的限制,大小同样没有,但不建议存储大型数据
setAttribute(Sring name, Object value);

// 通过键删除指定的键值对
removeAttribute(String name)

注:是根据当期浏览器存储,不会出现多个浏览器共享的情况

Session的细节处理
1、在客户端关闭后,服务器不关闭,两次获取的Session为同一个?

       在默认情况下不是。如果需要相同则需要先创建一个cookie对象,将其的键设置为“JSESSIONID”,设置一下cookie的存活时间 (因为这样会关闭浏览器,在默认情况下当浏览器被关闭时cookie对象就会被销毁) ,语法为:

cookie cookie = new cookie("JSESSIONID", session.getID);
// 设置存活时间为1小时
cookie.setMaxAge(60 * 60);
// 将创建的cookie对象发送给浏览器
response.addcookie(sookie);

实现原理:在获取Session对象时如果响应头中没有指定“JSESSIONID”,那么就会创建一个新的Session对象,如果使用cookie将原本的“JSESSIONID“存储起来,那么在获取时响应头发现了存储在里面的Session对象的id,那么它就会去找到指定的那个Session对象将其返回

2、客户端不关闭,服务器关闭,两次获取的session对象还是一个吗?

        不是,但会确保数据不丢失。tomcat会自动完成对应的工作:1.session钝化,在服务器正常关闭前,会将session对象序列化到硬盘上;2.session活化,在服务器启动后,会将钝化好的session文件转换后加载到内存中
注:idea并不能完成活化的过程,钝化是可以的。原因:在运行过程中产生的临时文件会放在work目录下,而idea会将上次的work文件先删除掉,再创建一个新的

3、session在什么时候被销毁

       1.服务器关闭
       2.session调用invalidate();
       3.session过失效时间(设置其失效时间方法setMaxInactiveInterval(int time)),默认时间时30分钟

cookie与Session的区别

1.session存储数据在服务器端,cookie在客户端
2.session没有数据大小,Cookir有
3.session数据安全,cookie相对

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

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

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