java sessionid放入cookie_JAVA开发 SESSION和COOKIE的关系
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的关系相关推荐
- java sessionid放入cookie_sessionID和cookie
一.cookie机制和session机制的区别 **************************************************************************** ...
- java resource放入的文件没有生成在classes中_快速部署版@开源在线考试系统一键生成各种题型试卷且实时判卷...
首先声明此项目来自开源网,小编也是爱好者: 阅读本文之前相信已经阅读过[开源在线考试系统一键生成各种题型试卷且可以实时判卷] 开源在线考试系统一键生成各种题型试卷且可以实时判卷 本文分享快速部署版ja ...
- Java Web学习(五)session、cookie、token
一.引言 动态网页兴起后,会话管理变成开发者需要考虑的一个问题,由于HTTP请求是无状态的,为了区分每个用户,此时引入了会话标识(session id)的概念,但是存储机制也会产生不同的问题,下面就详 ...
- 浅谈Session与Cookie的关系
阅读目录 一.概念理解: 首先cookie是服务端识别客户的唯一标识的依据,客户在访问网站时候,服务端为了记住这个客户,会在服务端按照它的规则制作一个cookie数据,会将这个cookie数据保留在服 ...
- java resource放入的文件没有生成在classes中_JAVA程序员学习笔记----mybatis深入剖析...
Java中提到持久层框架,相信没有人不知道mybatis的存在,相对于JDBC她多了一份干练(jdbc工作量大),相对于Hibernate她又多了一份灵动(HQL虽然方便,但太呆板).今天我们就一起走 ...
- session和cookie的区别和联系
1.Session和Cookie的区别 对象 信息量大小 保存时间 应用范围 保存位置 Session 小量,简单的数据 用户活动时间+一段延迟时间(一般为20分钟) 单个用户 服务器端 Cookie ...
- session和cookie的区别和联系,session的生命周期,多个服务部署时session管理
Session和Cookie的区别 对象 信息量大小 保存时间 应用范围 保存位置 Session 小量,简单的数据 用户活动时间+一段延迟时间(一般为20分钟) 单个用户 服务器端 Cookie 小 ...
- 闭关修炼(二十二)session和cookie原理
文章目录 简述 cookie 如何创建cookie 如何获取cookie cookie原理 session 如何创建session 如何获取session session原理 边角料 简述 cooki ...
- Shiro 登录、退出、校验是否登录涉及到的Session和Cookie
前提 我们的使用的是DefaultWebSessionManager而不是ServletContainerSessionManager.这就意味着前者的session为Shiro的,后者的sessio ...
最新文章
- GitLab安装,导入,备份
- 创新课程管理系统数据库设计心得
- Xcode文件名后的字母含义
- 小黑小波比.保存密码加密方式
- java component创建_spring--打印hello--注解component--自动创建对象
- sell02 展现层编写
- 逻辑函数(all(),any())
- 数字图像处理实验(5):PROJECT 04-01 [Multiple Uses],Two-Dimensional Fast Fourier Transform
- selenium java session_Selenium Java浏览器会话重用
- 设置vmware vsphere web client_Arduino+前端高级应用-通过WEB网页控制Arduino开发板上的LED灯...
- MySQL学习笔记1(增删查改)
- LeetCode15:三数之和(转载思路)
- ArcGIS API For Silverlight使用在线地图的多种方法总结
- android音频测试方法,Android左右声道音频文件测试
- iPhone11因便宜销量超预期;三星手机曝高危漏洞;xUtils 3.8.3发布 | 极客头条
- 监控程序日志并发送警告邮件
- APIcloud解决检出到指定路径:false问题
- 上位机与欧姆龙PLC的Fins tcp通讯
- WIN7 64位 VS2013下载
- matlab平滑处理例题,(完整word版)matlab中smooth函数平滑处理数据实例
热门文章
- java表单重复提交_JavaWeb防止表单重复提交(转载)
- 网易云信-新增自定义消息(iOS版)
- Python学习 :格式化输出
- vue - 组件的创建
- 洛谷P2351 [SDOi2012]吊灯 【数学】
- Spring security UserDetailsService autowired注入失败错误
- js学习总结----字符串和Math综合应用-验证码(4位)
- 关于ExecuteNonQuery执行存储过程的返回值 、、实例讲解存储过程的返回值与传出参数、、、C#获取存储过程的 Return返回值和Output输出参数值...
- 3: Java虚拟机体系结构
- C++/CLI学习入门数组