JavaWeb-会话技术

JavaWeb-会话技术


<1> Cookie—客户端会话技术

(1) 获取 Cookie

注: 只能获取到一次会话的 Cookie , 储存在客户端上

Cookie c = new Cookie("msg","hello"); // 1.创建Cookie对象
response.addCookie(c); // 2.发送Cookie
====================以下是另一个类(运行的时候运行下面这个)=========================
ookie[] cs = request.getCookies(); //3.获取Cookie
// 4.遍历Cookie  ↓
if(cs!=null){
	for(Cookie c:cs){
		String name=c.getName();
		String value=c.getValue();
		System.out.println(name+":"+value);
	}
}

(2) Cookie 的特点

① 可同时创建多个 Cookie 对象, 也可多次发送
② Cookie 在访问后会停留并积累在最新的页面中, 类似于历史记录
③ Cookie 的寿命: 默认在浏览器关闭时销毁, 但可通过 setMaxAge持久化储存:

c.setMaxAge(30); /储存Cookie 30s 后删除
值为正数:经过数值秒后删除cookie
值为负数:默认值,关闭浏览器时删除
值为0:直接删除

④ Cookie 的共享

同一服务器使用 setPath(String path) 设置 path 为 "/" , 可共享 Cookie
不同服务器使用 setDomain(String path) 设置一级域名相同, 可共享 Cookie

⑤ cookie 存储数据在客户端浏览器上, 存储用户信息, 用于服务器在不登录下对用户进行简要身份识别
⑥ cookie 中的特殊字符要转化成URL编码, 使用 URLEecoderURLDecoder

<2> Session—服务器端会话技术

(1) 共享和获取 Session

Session: 在一次会话的多次请求间多次共享数据, 并将数据保存在服务器端
只有同一个 Session 才可以互相共享数据
Session 可以存储任意类型, 任意大小的数据, 且安全性较 Cookie 高.

/共享 Session
HttpSession session = request.getSession();
session.setAttribute("msg","hello session");
====================以下是另一个类(运行的时候运行下面这个)=========================
/获取 Session
HttpSession session = request.getSession();
Object msg=session.getAttribute("msg");
System.out.println(msg);

(2) 希望客户端关闭后, session 也能相同

当客户端 (浏览器) 关闭后, 服务器不关闭, 前后两次获取的 Session 不是同一个;
但若需要二者相同, 需要创建 Cookie, 键为 JSESSIONID, 设置最大存活时间, 让 cookie 持久化保存.
注: Session 的实现依赖于 Cookie

HttpSession session = request.getSession();
System.out.println(session);
//客户端关闭后, session也能相同
Cookie c=new Cookie("JSESSIONID",session.getId());
c.setMaxAge(60*60);
response.addCookie(c);

(3) 希望服务器关闭后, 客户端不关闭, session 也能相同

服务器关闭前后, 获取到的 Session 不是同一个;
但若需要相同, 可以使用 Tomcat 自带的 Session 钝化和活化功能, 将 Session 写入文件后再读取到内存.
注意: 此方法不能使用 IDEA 运行, 需要手动运行 Tomcat !
在正常关闭时, Tomcat 会将 Session 自动存储在 work 文件夹中对应项目路径下的 ser 文件中, 再次打开时会自动恢复

(4) Session 的失效时间

① 关闭服务器
② 调用自我销毁方法: invalidate()
③ 一定时间后自动失效 (默认30分钟)

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烂糊Java汤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值