Java Web学习之HttpSession

一、前言

本篇文章主要介绍一些session的概念,实现原理以及session和cookie的区别和联系。

二、Session

Session翻译成中文意思是会话,Session在Web开发环境下是指 一类用来在客户端与服务器端保持状态的解决方案。有时候Session也用来指这种解决方案的存储结构。

Session机制采用的是 在服务器端保持HTTP状态信息的方案。

底层的实现原理: 当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了sessionid,如果已包含则说明以前已经为此客户端创建过session,服务器就按照sessionid把这个session检索出来使用(检索不到,会新建一个),如果客户端请求不包含sessionid,则为此客户端创建一个session并且生成一个与此session相关联的sessionId,sessionId的值是一个既不会重复,又不容易被找到规律以仿造的字符串,这个sessionId将被在本次响应中返回给客户端保存。
在这里插入图片描述

三、Session与Cookie的区别和联系

  1. cookie数据保存在客户端,session数据保存在服务器端,这里需要注意的是 cookie的产生是在服务端产生的。
  2. 什么东西可以让你每次请求都把sessionid自动带到服务器呢?显然就是cookie了。 这里可以理解为:session是以cookie为基础实现的。
  3. cookie不会占服务器资源,是存在客户端内存或者一个cookie的文本文件中;而session则会占用服务器资源。所以,尽量不要使用session,而使用cookie。但是我们一般认为cookie是不可靠的,session是可靠的,但是目前很多著名的站点也都以来cookie。有时候为了解决禁用cookie后的页面处理,通常采用url重写技术,调用session中大量有用的方法从session中获取数据后置入页面。
  4. session和cookie的存储都存在时效性,这是很有必要的。
  5. 单个cookie保存的数据不能超过4kb,很多浏览器都限制了一个站点最多保存20个cookie。

四、可以使Sessionid持久化

sessionid是存储于浏览器内存中的,并不是写到硬盘上的。(这里需要注意:我说的是 sessionid 而不是 session,所以session是存储在服务器上的,而这里我说的sessionid是存储于浏览器内存中的),我们可以使sessionid持久化。 即 持久化后,即便我们关闭了浏览器,当我们再次打开时,我们还是能找到那个sessionid。

<body>
	<%
		Cookie cookie = new Cookie("JSESSIONID", session.getId());
		cookie.setMaxAge(5);
		response.addCookie(cookie);
	%>
</body>

sessionid针对某一次会话而言,会话结束sessionid也就随着消失了。

关闭浏览器,只会是浏览器端内存里的sessionid消失,但不会使保存在服务器端的session对象消失,同样也不会使已经保存到硬盘上的持久化sessionid消失。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值