13.Cookie和Session

Cookie

HTTP协议本身是无状态的。什么是无状态呢,即服务器无法判断用户身份。Cookie实际上是一小段的文本信息(key-value格式)。客户端向服务器发起请求,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。

  • Cookie是浏览器保存在本地的文本内容
  • Cookie常用于保存登录状态用户资料等小文本
  • Cookie具有时效性,Cookie内容会伴随请求发送给Tomcat

cookie的创建

		// 创建一个cookie
		Cookie cookie = new Cookie("user", "admin");
		// 设置cookie
		response.addCookie(cookie);

浏览器可以查看到:
在这里插入图片描述

读取cookie

		// 用于获取所有的Cookie信息,返回一个数组
		Cookie[] cs = request.getCookies();
		for(Cookie c : cs) {
			System.out.println(c.getName() + ":" + c.getValue());
		}
		response.getWriter().println("Cookie 读取成功");

在这里插入图片描述
在这里插入图片描述
如果不给cookie设置时间,cookie的默认时间则为当前浏览器窗口,浏览器关闭后,则销毁

cookie设置时间

cookie.setMaxAge(3600);// 单位为秒

Session

  • Seesion(用户会话)用于保存于“浏览器窗口”对应的数据
  • Seesion的数据存储在Tomcat服务器的内存中,具有时效性
  • Seesion通过浏览器Cookie的SessionId值提取用户数据

创建Session

		// 获取到用户会话Session对象
		HttpSession session = request.getSession();
		session.setAttribute("name", "张三");

提取Session

		HttpSession session = request.getSession();
		// 提取Session
		String name = (String)session.getAttribute("name");
		

获取SessionId

		String sessionId = session.getId();

sessionId 绑定浏览器窗口,浏览器窗口不同,所创建的sessionId 也不相同

从浏览器可以发现:
在浏览器中,创建了一个Cookie,存放值就是我们的SessionId
在这里插入图片描述

Session的原理

浏览器对服务器发送请求,服务器则为该Session创建了一个SessionId,并返回此SessionId给浏览器,浏览器通过Cookie保存服务器响应的SessionId,当浏览器再一次请求的时候,则会拿着Cookie中的SessionId去获取服务器里对应的Session

因此每一个Session对应的就是一个浏览器窗口,每一个浏览器窗口所存储的Session是不一样的
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

空 白

停止的只会是自己,你得追逐世界

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

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

打赏作者

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

抵扣说明:

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

余额充值