以往我们认为在servlet中通request.getSessioin()就可以得到session,设置一些属性,就是session的功能;当客户端关闭浏览器时,session就“消失”了。这些看上去都很合理,但有些细节必须搞清楚。
1、会话跟踪的原理。
Java Servlet API通过Session技术来跟踪会话和管理会话内容。当客户第一次连接到服务器的时候,服务器为其建立一个session(通过session.isNew()方法可以判断客户端是不是“第一次”),并分配给客户一个唯一的标识(Session ID),以后客户的每次提交请求,都要将标识一起提交(提交该标识的方法有多种),服务器根据标识找到特定的Session,用这个Session记录客户的状态。
那么,在S与B之间,是如何传送这个Session ID的呢?
有三种机制:
1)SSL会话。(略)
2)Cookies
服务器利用响应报头 Set-Cookies来发送Cookies信息。RFC2109规范中的Set-Cookies报头格式为:
- Set-Cookies: NAME=VALUE; Comment=value; Domain=value; Max-Age=value; Path=value;
- Secure; Version=1*DIGIT
如果是用于会话跟踪的Cookies,NAME的值必须是JSESSIONID。
当浏览器接受到含有这个报头的response后,就会在内存中构建一个cookies。当它给特定的服务器(由Domain和Path值来区别)发送请求时,就会在请求报头中加入这样的信息:
- Cookies: JSESSIONID=*****************************************
那么服务器就能找到对应的session,来跟踪用户了。
3)URL重写
当浏览器禁用了Cookies后,就只能借助URL重写了。URL重写就是在请求地址中直接加入JSESSIONID信息,如:
这样,服务器也能找到对应的session,来跟踪用户。
2、具体使用。
平常在编程的时候,似乎并没有刻意地去用Cookies,更没有使用URL重写了。那么session是怎么工作的呢?请看续篇:
认识session(续)——自己动手做试验
分享到:
相关推荐
### ASP.NET Session的七点认识 #### 一、ASP.NET Session概述 ASP.NET Session是Web应用程序中用于在用户的会话期间存储用户特定信息的一种机制。它允许开发人员跨多个页面请求存储和检索用户数据,从而提供了更...
以下是对ASP.NET Session的七个关键认识: 1. 值类型与引用类型的区别: 当将值类型(如int)存入Session时,Session中保存的是该值的一个拷贝。例如,`Session["__test0"] = 1`,随后对Session的读取不会影响到...
认识ZooKeeper ZooKeeper,形象地被称为“动物园管理员”,在分布式系统中扮演着至关重要的角色。随着企业级应用系统的不断扩展,传统的单体架构难以应对日益增长的性能需求和服务响应时间的要求,因此分布式系统...
以下是针对*** Session认识的详细知识点总结: 1. Session的工作机制: *** Session提供了一种在应用程序中存储用户特定信息的方式。在默认情况下,Session信息是存储在服务器端内存中,而不是客户端。每次用户对...
学习和使用"flask-session-cookie-manager",不仅可以提升我们对Flask框架的理解,还能增强对网络安全攻防的认识。在实际操作中,我们可以用它来测试应用的安全性,发现潜在漏洞,同时也能通过它来设计和解决CTF比赛...
首先,我们必须认识到物联网智能分布式传感器的关键技术要求。为了满足低功耗系统(μW)、高精度前端(SNR>90dB)以及边缘处理的需求,前端电路设计面临着前所未有的挑战。边缘处理意味着数据处理功能的集成,这就...
在微信小程序开发中,经常会遇到由于`sessionID`不一致导致的登录状态...同时,需要注意的是,微信小程序的网络请求与传统的Web开发有所不同,开发者需要对这种差异有清晰的认识,以便更好地进行小程序的开发和调试。
首先,要了解PHP中session的实现原理,需要先认识到session是一种服务器端保持用户会话数据的方式。在HTTP协议这种无状态协议下,服务器响应请求后便与浏览器失去联系,因此,为了维护用户的会话状态,需要一种方法...
在介绍HTML5 web缓存前,来认识一下cookie和session: session: 由于HTTP是无状态的,你是谁?你干了什么?抱歉服务器都是不知道的。 因此session(会话)出现了,它会在服务器上存储用户信息以便将来使用(比如...
在Web开发中,session是一种用于存储特定用户会话信息的技术,以便跟踪用户状态和识别用户身份。...这些问题的解决需要开发者对***和Flash编程有一定的了解,并且要对session管理机制有清晰的认识。
在PHP开发中,Session是一种常用的身份验证机制,用于在服务器端存储用户状态并跟踪用户身份。然而,PHP中的Session并...在实际开发中,开发者应当始终关注安全问题,对潜在的风险有充分的认识,并采取必要的预防措施。
永远不要害怕问出SB的问题,再傻的问题只要是自己认识思考就要表达出来了,同样如果碰到别人问一些简单的问题也不要不耐烦,要认真对待。 改bug或是看代码时遇到不合理的代码要善于逐步合理重构。
首先,我们来认识一下Cookie。Cookie是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。Cookie机制的优点是简便易用,可以有效地保存用户的状态...
这个环境提供了实践这些概念的机会,通过模拟真实世界的漏洞,帮助开发者提高对安全问题的认识和解决能力。通过阅读《从开发角度理解漏洞成因》等相关文章,可以深入理解每个漏洞的工作原理和防范措施。 在压缩包中...
在进行实际部署前,需要对整个集群的架构有一个清晰的认识。该集群主要包括以下几个组件: 1. **Nginx**:作为反向代理服务器,用于接收客户端请求,并根据预设规则将请求转发给后端的Tomcat服务器。 2. **...
1. CFA持证人在资产管理领域需要为不同类型的客户提供专业化的投资服务,同时要对资产配置和风险管理有足够的认识。 2. 投资银行业务中的市场做市是金融分析师需要了解的业务类型之一,它对于保持市场流动性具有...
**Hibernate Query Language(HQL)基础认识** Hibernate Query Language(HQL)是Hibernate框架中用于操作对象关系映射(ORM)的一种查询语言。它类似于SQL,但专为面向对象编程设计,使得开发者能够以类和对象的...