当前位置:新闻中心行业动态 → 正文

Java Web 应用程序中怎么样进行会话管理

责任编辑:editor006 作者:三文鱼 |来源:企业网D1Net  2017-10-31 16:00:09 本文摘自:it168网站

Java Web应用程序的会话管理崩溃会涉及到以下几点:一般流程、Cookie使用情况、URL重写和会话销毁。

本文将介绍在Java Web app中会话管理的工作原理。为了了解流程的工作原理,先从下面这个图开始:

Java Web 应用程序中怎样进行会话管理

1. 用户提交一个网页请求。

2. 浏览器将请求发送到Web服务器。

3. 服务器识别到请求中没有“会话相关信息/标识符”。所以它创建了一个新的会话(和一个新的会话标识符-JSESSIONID)。

4. 服务器将JSESSIONID发送回客户端。

5. 这时,服务器和客户端都具有与它们相同的会话标识符(JSESSIONID)。

6. 从这里开始,当浏览器向服务器发送附加请求时,必须将会话标识符(JSESSIONID)作为请求的一部分发送。(注意:每当浏览器向Web服务器发送请求时,同一服务器设置的所有Cookie将自动发送到请求中,因此JSESSIONID cookie也会自动发送到服务器上)

7. 当服务器获得请求时,它会检查浏览器是否将会话标识符作为请求的一部分发送。如果是,则服务器将请求视为同一会话的一部分。

8. 这种关联关系会持续进行,直到会话被破坏(或直到它到期)为止。

如果Cookie被阻截怎么办?

有时,用户/浏览器可能不接受某些服务器的Cookie(出于安全/隐私的原因)。为了处理这种情况,Web服务器还支持在URL中传递会话标识符(URL重写):

1. 当服务器创建会话时,它“必须”以某种方式将会话标识符发送给客户端(以便客户端可以在后续请求期间将其发送回服务器)。

2. 最初,服务器不知道客户端是否已经阻截了cookie。所以它以两种方式将JSESSIONID发送给客户端:

A. 在一个cookie中

B. 作为网址参数(例如http://www.abc.com; jsessionid = 123xyz)。

3. 当服务器从同一客户端获取后续请求时:

A. 如果请求包含了JSESSIONID cookie,则表示客户端确实接受了Cookie。因此,服务器可以依靠Cookie进行会话管理并继续。

B. 如果没有,服务器就会知道Cookie被阻截了,并继续使用URL参数方法(“URL重写”)。

会话是如何被摧毁的?

1. 超时:如果服务器在一段时间内没有收到给定会话的任何请求,则将使会话无效。当用户关闭浏览器或将其打开而没有任何活动时,就会发生这种情况。

2. 显式注销页面:Servlets / JSP可以使用session.invalidate()使会话无效。

浏览器关闭时会发生什么?

1. Cookie方法:JSESSIONID Cookie是一个“仅限会话”的Cookie,因此浏览器关闭后浏览器会将其删除。因此,如果您打开另一个窗口并访问相同的Web应用程序,则服务器将该请求视为不属于任何会话的全新请求。

2. URL重写方法:如果您使用JSESSIONID复制URL,请关闭浏览器,打开一个新的浏览器窗口并使用复制的URL。前提是会话没有超时。但这也带来安全风险(JSESSIONID的完整URL被盗用)。这就是为什么Cookie优先于URL重写的原因之一。

关键字:会话 Cookie Java

本文摘自:it168网站

Java Web 应用程序中怎么样进行会话管理 扫一扫
分享本文到朋友圈

关于我们联系我们版权声明友情链接广告服务会员服务投稿中心招贤纳士

企业网版权所有©2010-2018 京ICP备09108050号-6

^