`
zhuge
  • 浏览: 40994 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Servlet会话跟踪的技术

阅读更多
  HTTP协议是一种无状态的协议,而对于现在的web应用而言,我们往往需要记录从特定客户端的一系列请求间的联系。

  现在已经有很多会话跟踪的技术,但是对于程序员而言都不是很方便直接使用。servlet规范定义了一个简单的

  HttpSession接口以方便servlet容器进行会话跟踪而不需要开发者注意实现的细节。

  一般而言,有两种最常用的会话跟踪机制,一种就是URL重写。在客户端不接受cookie的情况下可以使用URL重写进行会话跟踪。

  URL重写包括向URL路径添加一些容器可以解释的数据。规范要求会话ID必须编码在URL路径中,参数名称必须是jsessionid,

  例如: http://www.myserver.com/catalog/index.html;jsessionid=1234

  另一种就是现在最常用的cookie了,规范要求所有的servlet都必须支持cookie。容器向客户端发送一个cookie,客户端在后续的处于同一个会话的请求中向服务器返回该cookie。会话跟踪cookie的名字必须是JSESSIONID。

  新出现的一种会话功能是SSL会话,SSL(Secure Sockets Layer,安全套接字层)是HTTPS协议使用的一种加密技术,内建了会话跟踪功能,servlet容器可以非常容易的使用这些数据建立会话跟踪。(但是HTTPS不是规范要求servlet必须支持的协议) 因为HTTP是一种基于请求响应的协议,因此会话只有在客户端加入它以后才被新建立。当会话跟踪信息被成功的返回给服务器以指示会话给建立时客户端才算加入了一个会话。如果客户端没有加入会话,那么下一次请求不会被认为是会话的一部分。如何客户端还不知道会话或者客户端选择不加入一个会话,那么会话被认为是新的。开发者必须自己设计自己的应用中的会话处理状态,在什么地方没有加入会话,什么地方不能加入会话以及什么地方不需要加入会话。

  规范要求HttpSession在应用或者servlet上下文级别有效,诸如cookie这样的建立会话的底层机制可以在上下文中共享,但是对于那些外露的对象,以及更重要的是对象的那些属性是不能在上下文中共享的。

  对于会话的属性的绑定而言,任何对象都可以绑定到某个命名属性。被绑定的属性对象对于其它处于相同ServletContext并且处于同一个会话处理中的其它servlet也是可见的。

  某些对象在被加入会话或者被从会话中移除时要求得到通知,这样的信息可以通过让该对象实现HttpSessionBindingListener接口得到。

  该接口定义了两个方法用以标记被绑定到会话或者从会话中被移除。 valueBound方法在对象通过getAttribute之前就被调用,而valueUnbound方法在对象已经不能通过getAttribute得到后才被调用。

  由于HTTP是无状态协议,因此客户端不再活动时没有什么明显的信号,这也就意味着只有一种机制可以用于表明客户端不再活动:超时。

  会话的缺省的时限由servlet容器定义并且可以通过HttpSession的getMaxInactiveInterval得到,开发者也可以通过使用setMaxInactiveInterval

  方法进行设置,这些方法返回的单位是秒,如果时限被设置为-1,那么意味着永远不会超时。

  通过调用HttpSession的getLastAccessedTime方法,我们可以得到在当前请求之前的访问时间。当会话中的一个请求被servlet上下文处理时会话就被认为被访问了。

  另外需要注意的就是一些很重要的会话的语义问题。

  多线程问题:多个请求线程可能会同时访问同一个会话,开发者有责任以适当的方式同步访问会话中的资源。

  分布式环境:对于被标记为可分布的应用而言,同一会话中的所有请求只能被单一的VM处理。同时,放入HttpSession中的所有对象都必须实现Serializable接口,否则容器可能会抛出IllegalArgumentException(在jboss_tomcat下没有抛出这个异常,但是如果在关闭服务器时还有未完成的会话,那么服务器在试图存储会话时会出现串行化异常,在重新启动的时候会试图回复会话,也会出现异常)。

  这个限制意味着开发者不会遇到非可分布容器中的那些并发问题。另外容器提供者可以通过将一个会话对象以及它的内容从分布式系统的一个活动节点移动到系统的其它不同节点的能力来保证可伸缩性。

  客户端的语义:基于cookie或者SSL证书通常是被web浏览器控制并且不联系到特定浏览器窗口的事实,从客户端应用的所有窗口发送到容器的请求都可能是同一个会话。为了达到最大的可移植性,开发者不能总假设特定客户端的所有窗口的请求都处于同一个会话中。
分享到:
评论

相关推荐

    基于Servlet的会话跟踪理解会话跟踪原理

    为了解决这个问题,Web开发者使用了会话跟踪技术,如Servlet中的HttpSession对象。 会话(session)是在用户与服务器交互的过程中,一系列连续的请求和响应形成的连接。例如,当用户浏览一个电子商务网站并添加商品...

    JavaWeb会话跟踪技术

    为了解决这个问题,开发者利用各种会话跟踪技术来保持用户的上下文。本篇文章将深入探讨JavaWeb中的会话跟踪技术。 首先,最常见的会话跟踪方法是使用Cookie。Cookie是由服务器发送到客户端(浏览器)的一小段数据...

    Servlet会话小例子

    总的来说,Servlet会话技术是构建动态、交互式Web应用的关键工具,它允许开发者在多个请求之间保持用户状态,从而实现诸如购物车、在线游戏等需要用户状态跟踪的功能。RequestDispatcher和ServletContext的使用则...

    jsp四种会话跟踪技术

    **JSP会话跟踪技术详解** 在Web开发中,会话跟踪是保持用户状态的关键技术。JSP提供了四种主要的会话跟踪技术,确保在多个请求之间存储和检索用户信息。 1. **Page Context(页面范围)** 页面范围是最小的范围,...

    企业Java I

    2. **Servlet会话跟踪技术**:在Web应用中,会话跟踪允许服务器在多个请求之间保持用户的状态。Servlet提供了一种名为HttpSession的机制,可以创建、检索和管理会话对象。通过调用HttpServletRequest的getSession()...

    JSP基于servlet的登录注册会话实验

    3. **会话管理**:在Web应用中,会话用于跟踪用户的活动,特别是在用户登录后。一个典型的会话管理过程包括创建会话、存储用户信息、检查会话状态以及销毁会话。在Servlet中,我们通常使用HttpSession接口来实现这一...

    深入理解和改进 jsp servlet会话管理机制

    - **会话跟踪**:除了通过Cookie进行会话跟踪外,还可以通过URL重写的方式来传递会话标识。这种方式主要用于解决那些禁用了Cookie的浏览器问题。 #### 三、存在的问题及改进方案 ##### 3.1 存在的问题 - **安全性...

    Servlet会话管理与用户认证.doc

    Servlet会话管理和用户认证是Web开发中的核心概念,特别是在基于Java的服务器端编程中。Servlet技术提供了多种方式来处理用户的身份验证和跟踪用户的行为。在文档"Servlet会话管理与用户认证.doc"中,主要讨论了两个...

    给予servelet的会话跟踪的PPT

    **Servlet的会话跟踪技术详解** 在Web开发中,Servlet是一种Java编程语言编写的服务器端程序,主要用于扩展服务器的功能,处理由HTTP协议传输的数据。在Servlet应用中,会话跟踪是实现用户会话持久化的重要手段,...

    jsp会话跟踪ppt

    【会话跟踪技术详解】 在Web开发中,服务器通常无法识别出同一个客户端的连续多次连接,因为HTTP协议本身是无状态的。为了在多个请求之间保持客户端的状态,我们需要使用会话跟踪技术。会话跟踪允许服务器识别并...

    JSP基础知识总结(JSP技术,XML配置,会话,JavaBean)

    本文通过三个部分来介绍JSP的基础知识: 第一部分为Servlet技术,包括Servelt入门,会话跟踪,JavaMal和Servlet. 第二部分就是Jsp技术,包括:jsp简介,...•3 会话跟踪技术总结 •4 构建实体Bean的原则 •5 MVC实现数据封装

    实验5 会话及其会话技术.docx

    Servlet 会话技术详解 在 Web 应用程序中,会话是一种非常重要的概念,用于记录和跟踪用户的交互行为。Servlet 提供了两种类型的会话技术,即 Cookie 和 Session,下面我们将详细介绍这两种技术的实现原理和应用...

    美斯坦福Java教程PPT

    servlet会话跟踪技术的概括性知识点,是J2EEJSP教程的基础必修课

    构建带会话跟踪的Servlet

    其关键是启用会话处理,那么 Servlet 就可以知道哪个用户在干什么。 本教程显示了一个 URL 书签系统,在这个系统中, 多个用户访问一个系统以添加、除去和更新 HTML 书签列表。 Servlet 使用 JSP 技术来处理用户...

    第5章 会话跟踪.rar

    由于HTTP请求是独立的,服务器无法知道两次请求是否相关,这就需要会话跟踪技术来保持用户的会话状态。 1. **Cookie机制**:这是最常用的会话跟踪方式。服务器在响应客户端(浏览器)时,通过Set-Cookie响应头发送...

    java web整合开发王者归来光盘代码-第五章 会话跟踪

    本资源"java web整合开发王者归来光盘代码-第五章 会话跟踪"正是针对这一主题,提供了丰富的示例和代码,帮助开发者深入理解和掌握会话跟踪技术。 会话跟踪是指在用户的多个请求之间保持某些状态信息。在无状态的...

    J2EE基础课程资料PPT课件

    **第四章 Servlet 会话跟踪技术**: 讨论了如何在多个HTTP请求间保持用户状态,如使用Session对象。 **第五章 JDBC 及其应用**: JDBC是Java访问数据库的标准API,包括连接数据库、执行SQL语句和处理结果集。 **第...

    完整版Java JSP web开发教程 03_会话跟踪简介(共22页).ppt

    3. **会话跟踪技术**:了解包括用户授权、隐藏表单域、URL重写和Cookie在内的多种会话跟踪技术。 4. **Servlet通信方法**:掌握Servlet如何在处理请求和响应时利用会话信息。 5. **Servlet上下文状态**:学习如何...

    北大青鸟javaweb

    本资源摘要信息提供了北大青鸟javaweb的相关知识点,涵盖了Servlet、会话跟踪、HTTP Servlet、Servlet 生命周期、Servlet API、会话跟踪技术、用户授权、隐藏表单域、URL 重写、Cookie 等概念。 一、Servlet * ...

Global site tag (gtag.js) - Google Analytics