HttpSession接口封装了Session的概念,Servlet容器提供了这个接口的实现。当一个会话开始的时候,Servlet容器就创建一个HttpSession对象,在HttpSession对象中存放客户的状态信息,Servlet容器为HttpSession对象分配一个唯一的Session ID,将其作为Cookie(或者作为URL的一部分,利用URL重写机制)发送给浏览器,浏览器在内存中保存这个Cookie。当这个客户再次发送HTTP请求时,浏览器将Cookie随请求一起发送,Servlet容器从请求对象中读取Session ID,然后根据Session ID找到对应的HttpSession对象,从而得到客户的状态信息。

Cookie是在浏览器访问Web资源时,由Web服务器在HTTP响应消息中通过Set-Cookie字段发送给浏览器的一组数据。服务器利用响应报头Set-Cookie来发送Cookie信息。在Servlet规范中,用于会话跟踪的Cookie的名字必须是JSESSIONID。

为了跟踪用户的会话,服务器端在创建Session后,需要将SessionID交给客户端,在客户端下次请求时,将这个ID随请求一起发送回来。采用Cookie的方式,将SessionID发送给客户端。当客户端不接受Cookie的时候,可以使用URL重写的机制来跟踪用户的会话。

URL重写就是在URL中嵌入标示客户的Session ID。服务器将SessionID 作为URL的一部分发送给客户端,客户端在请求URL中再传回来。要跟踪客户端的会话,就需要将所有发往客户端的URL进行编码,这可以通过调用HttpServlet Response接口中的encodeURL方法和encodeRedirectURL方法来实现。

encodeURL方法和encodeRedirectURL方法在执行时,首先判断当前的Servlet是否已经执行了HttpSession对象的invalidate()方法,如果已经执行了,直接返回参数URL。接下来,判断客户端是否禁用了Cookie,如果没有禁用,则直接返回参数URL,如果禁用了Cookie,则在参数URL中附加SessionID,返回编码后的URL。

Session的超时时间间隔也可以在程序中通过调用HttpSession接口的setMaxInactiveInterval()方法来进行设置。如果想改变所有Web应用程序的Session的默认超时值,可以修改%CATALINA_HOME%\conf\web.xml文件中的设置。

Session是一种服务器端技术,Session对象在服务器端创建,在服务器端保存数据信息并通过SessionID进行跟踪。而Cookie在客户端(浏览器内存或硬盘)保存信息(解决方案:会员卡或者目标卡?)。一般来说,登录信息等重要信息存放到session内,其他信息可以放到Cookie中。

通常将用于会话跟踪的Cookie叫做会话Cookie(临时Cookie),名字为JSESSIONID,通常保存在浏览器的内存中。是不能被不同的浏览器进程所共享的。共享只能发生在同一个浏览器进程的不同窗口中。而将会话Cookie保存到硬盘上(永久Cookie)可以在多个浏览器进程之间共享。因为浏览器关闭,则意味着保存SessionID的Cookie(临时Cookie)消失,而Session仍然存在于服务器端,直到超时时间间隔发生。如果会话Cookie保存到硬盘(永久Cookie),那么将SessionID发送给服务器,再次打开的浏览器就能找到原来的Session。

java sessionid放入cookie_JAVA开发 SESSION和COOKIE的关系相关推荐

  1. java sessionid放入cookie_sessionID和cookie

    一.cookie机制和session机制的区别 **************************************************************************** ...

  2. java resource放入的文件没有生成在classes中_快速部署版@开源在线考试系统一键生成各种题型试卷且实时判卷...

    首先声明此项目来自开源网,小编也是爱好者: 阅读本文之前相信已经阅读过[开源在线考试系统一键生成各种题型试卷且可以实时判卷] 开源在线考试系统一键生成各种题型试卷且可以实时判卷 本文分享快速部署版ja ...

  3. Java Web学习(五)session、cookie、token

    一.引言 动态网页兴起后,会话管理变成开发者需要考虑的一个问题,由于HTTP请求是无状态的,为了区分每个用户,此时引入了会话标识(session id)的概念,但是存储机制也会产生不同的问题,下面就详 ...

  4. 浅谈Session与Cookie的关系

    阅读目录 一.概念理解: 首先cookie是服务端识别客户的唯一标识的依据,客户在访问网站时候,服务端为了记住这个客户,会在服务端按照它的规则制作一个cookie数据,会将这个cookie数据保留在服 ...

  5. java resource放入的文件没有生成在classes中_JAVA程序员学习笔记----mybatis深入剖析...

    Java中提到持久层框架,相信没有人不知道mybatis的存在,相对于JDBC她多了一份干练(jdbc工作量大),相对于Hibernate她又多了一份灵动(HQL虽然方便,但太呆板).今天我们就一起走 ...

  6. session和cookie的区别和联系

    1.Session和Cookie的区别 对象 信息量大小 保存时间 应用范围 保存位置 Session 小量,简单的数据 用户活动时间+一段延迟时间(一般为20分钟) 单个用户 服务器端 Cookie ...

  7. session和cookie的区别和联系,session的生命周期,多个服务部署时session管理

    Session和Cookie的区别 对象 信息量大小 保存时间 应用范围 保存位置 Session 小量,简单的数据 用户活动时间+一段延迟时间(一般为20分钟) 单个用户 服务器端 Cookie 小 ...

  8. 闭关修炼(二十二)session和cookie原理

    文章目录 简述 cookie 如何创建cookie 如何获取cookie cookie原理 session 如何创建session 如何获取session session原理 边角料 简述 cooki ...

  9. Shiro 登录、退出、校验是否登录涉及到的Session和Cookie

    前提 我们的使用的是DefaultWebSessionManager而不是ServletContainerSessionManager.这就意味着前者的session为Shiro的,后者的sessio ...

最新文章

  1. GitLab安装,导入,备份
  2. 创新课程管理系统数据库设计心得
  3. Xcode文件名后的字母含义
  4. 小黑小波比.保存密码加密方式
  5. java component创建_spring--打印hello--注解component--自动创建对象
  6. sell02 展现层编写
  7. 逻辑函数(all(),any())
  8. 数字图像处理实验(5):PROJECT 04-01 [Multiple Uses],Two-Dimensional Fast Fourier Transform
  9. selenium java session_Selenium Java浏览器会话重用
  10. 设置vmware vsphere web client_Arduino+前端高级应用-通过WEB网页控制Arduino开发板上的LED灯...
  11. MySQL学习笔记1(增删查改)
  12. LeetCode15:三数之和(转载思路)
  13. ArcGIS API For Silverlight使用在线地图的多种方法总结
  14. android音频测试方法,Android左右声道音频文件测试
  15. iPhone11因便宜销量超预期;三星手机曝高危漏洞;xUtils 3.8.3发布 | 极客头条
  16. 监控程序日志并发送警告邮件
  17. APIcloud解决检出到指定路径:false问题
  18. 上位机与欧姆龙PLC的Fins tcp通讯
  19. WIN7 64位 VS2013下载
  20. matlab平滑处理例题,(完整word版)matlab中smooth函数平滑处理数据实例

热门文章

  1. java表单重复提交_JavaWeb防止表单重复提交(转载)
  2. 网易云信-新增自定义消息(iOS版)
  3. Python学习 :格式化输出
  4. vue - 组件的创建
  5. 洛谷P2351 [SDOi2012]吊灯 【数学】
  6. Spring security UserDetailsService autowired注入失败错误
  7. js学习总结----字符串和Math综合应用-验证码(4位)
  8. 关于ExecuteNonQuery执行存储过程的返回值 、、实例讲解存储过程的返回值与传出参数、、、C#获取存储过程的 Return返回值和Output输出参数值...
  9. 3: Java虚拟机体系结构
  10. C++/CLI学习入门数组