session


typora-copy-images-to: img

session

概念:服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中,HttpSession

一、HttpSession对象

object getAttribute(String name);

void setAttribute(String name,String value);

void removeAttribute(String name);

HttpSession session = request.getSession();
session.setAttribute("msg","helloWorld!");

//另外的servlet中获取
session.getAttribute("msg");

二、原理分析

在这里插入图片描述

session的实现依赖于cookie

三、细节

1.客户端关闭后,服务器不关闭,两次获取的session是同一个吗?默认不是同一个,详见原理分析。为了使其是同一个,HttpSession session = request.getSession();Cookie c = new Cookie("JSESSIONID",session.getID());c.setMaxage(1000);response.addCookie(c);

2.客户端不关闭,服务器关闭,两次获取的session是否为同一个?不是同一个。要确保数据不丢失有如下策略。

  • session的钝化:在服务器正常关闭前,将session文件持久化存储到硬盘上。
  • session的活化:在服务器关闭后,将session文件转化为内存中的session对象即可。

tomcat可以实现session钝化和活化。(钝化时session存储位置在部署目录下的work文件夹中)

Idea只能完成钝化,但是不能完成活化。(idea会在服务器重新启动时,删除掉work目录)

3.session失什么时候被销毁

  • 服务器关闭
  • session对象调用invalidate()
  • 默认失效时间是30分钟(tomcat中web.xml的session-config/session-timeout可以设置失效时间。)

四、特点

1.session是用于存储一次会话间多次请求的数据。存储在服务器端。

2.可以存储任意类型、大小的数据。

session和cookie的区别
  1. session存在服务端,cookie存在客户端
  2. session没有大小限制,cookie有限制
  3. session相对安全

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值