`

JAVA中Session的会话状态 理解

阅读更多
会话状态的维持是开发Web应用所必须面对的问题,有多种方法可以来解决这个问题,如使用Cookies,hidden类型的表单域,或直接把状态信息加到URL中等,还有Servlet本身提供了一个HttpSession接口来支持会话状态的维持,在这里我们主要介绍基于这个接口的会话状态的管理。

  Session的发明是为了填补HTTP协议的局限。请注意HTTP协议是如何工作的--用户发出请求,服务器作出响应,这种用户端和服务器97色色端的联系就是离散的,非连续的。HTTP协议不能提供允许服务器跟踪用户请求的功能。在服务器端完成响应用户的请求之后,服务器不能继续与该浏览器继续保持连接。从服务器这端来看,每一个请求都是独立的,因此HTTP协议被认为是无状态协议,当用户在多个主页间切换时,服务器无法知道他的身份。 Session的出现就是为了弥补这个局限。利用Session,您就可以当一个用户在多个主页间切换的时候也能保存他的信息。这样很多以前根本无法去做的事情就变得简单多了。

  在访问者从到达某个特定的主页到离开为止的那段时间,每个访问者都会单独获得一个Session。

  Java Servlet定义了一个HttpSession接口,实现的Session的功能,在Servlet中使用Session的过程如下:

  (1) 使用HttpServletRequest的getSession方法得到当前存在的session,如果当前没有定义session,则创建一个新的session,还可以使用方法getSession(true)

  (2) 写session变量。可以使用方法HttpSession.setAttribute(name,value)来向Session中存储一个信息。也可以使用HttpSession.putValue(name,value),但这个方法已经过时了。

  (3)读Session变量。可以使用方法HttpSession.getAttribute(name)来读取Session中的一个变量值,如果name是一个没有定义的变量,那么返回的是null。需要注意的是,从getAttribute读出的变量类型是Object,必须使用强制类型转换,比如:

  String uid = (String) session.getAttribute("uid");

  也可以使用HttpSession.getValue(name),但是这个方法也已经过时了。

  (4) 关闭session,当时用完session后,可以使用session.invalidate()方法关闭session。但是这并不是严格要求的。因为,Servlet引擎在一段时间之后,自动关闭seesion。


分享到:
评论
1 楼 keking 2010-12-30  
[u][/u]
引用
[url][/url][flash=200,200][/flash]

相关推荐

    java中使用session模拟用户登陆

    在Java Web开发中,Session是服务器端用于跟踪用户状态的一种机制。当用户通过用户名和密码登录系统后,服务器需要一种方式来识别这个已验证的用户,以便在后续的请求中提供个性化的服务,例如访问权限控制。这时,...

    java中使用session购物车的简单例子

    在本例中,“java中使用session购物车的简单例子”是通过Servlet技术实现的一个应用场景,旨在帮助开发者理解如何利用Session来存储用户购物车的数据。 购物车功能在电商网站中非常常见,它允许用户临时保存想要...

    java session

    在Web开发中,`Java Session`是用于跟踪用户会话的一种机制。它主要用于处理客户端与服务器之间的交互过程中所产生的状态信息,例如用户的登录状态、购物车信息等。在Java Web应用中,主要通过`javax.servlet....

    JAVA的SESSION精准统计

    在Java Web开发中,Session是服务器用来跟踪用户状态的一种机制。每个用户在访问网站时,服务器会为其创建一个唯一的Session ID,存储在客户端的Cookie中,每次请求时通过这个ID来识别用户。"JAVA的SESSION精准统计...

    Java Web 会话 聊天室

    【Java Web 会话 聊天室】项目是一个典型的基于Java...通过这个项目,开发者可以深入理解Java Web开发中的关键概念,提升在网络编程、会话管理、数据库操作等方面的能力,同时还能了解到如何构建实时交互的Web应用。

    nginx+tomcat7+memcached session会话保持

    本文将详细介绍如何在Nginx、Tomcat7和Memcached的环境下实现会话保持,确保用户在多台服务器之间切换时仍能保持其会话状态。 首先,我们要理解会话保持的重要性。在分布式系统中,用户可能与集群中的任何一台...

    Java EJB中有、无状态SessionBean的两个例子.rar

    有状态SessionBean能够保持与特定客户端的会话状态。这意味着当一个客户端与SSB交互时,该Bean可以记住之前的状态信息。例如,如果一个购物车应用使用SSB,那么Bean可以跟踪用户的购物选择,直到用户完成购买。这种...

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

    会话(session)是在用户与服务器交互的过程中,一系列连续的请求和响应形成的连接。例如,当用户浏览一个电子商务网站并添加商品到购物车时,服务器需要识别这个用户,以便在后续请求中知道应该将哪些商品关联到...

    Tomcat+Redis集群实现session会话共享

    "Tomcat+Redis集群实现session会话共享"这一主题,正是关注如何在使用Tomcat作为应用服务器的环境中,通过集成Redis缓存系统来构建一个高效的、高可用的会话共享解决方案。 首先,我们来理解一下`session`。在Web...

    servlet中关于session的理解

    在Web开发领域中,Servlet技术是Java Web开发的重要组成部分,而Session机制则是处理用户会话的关键技术之一。本文将基于提供的文件内容,深入探讨Servlet中Session的工作原理、如何实现Session的跟踪机制以及...

    httpclient如何保持session会话模拟登录后的操作

    本文将详细讲解如何使用HTTPClient来保持session会话,从而实现模拟登录后的其他操作。 首先,理解session的概念至关重要。Session是服务器端用来跟踪用户状态的一种机制。在Web应用中,当用户登录后,服务器会为该...

    Java中设置session的详细解释

    Java中的Session技术主要被用于Web开发中,用来在客户端(通常是浏览器)和服务器之间保持状态。在HTTP协议的背景下,由于其无状态性,即服务器不会记住不同请求之间的信息,因此,Session机制成为了解决这个问题的...

    java基于用户会话的开发程序

    在Web应用中,当用户打开浏览器访问网站并登录后,系统会为该用户创建一个会话,这个会话包含了用户的身份信息、状态以及在网站上的操作记录等。会话的存在使得服务器能够识别和跟踪不同的用户,即使他们来自同一个...

    java Session cookie

    5. 服务器根据接收到的Session ID找到对应的Session对象,从而获取或修改用户的会话状态。 **Cookie与Session的优缺点** - **Cookie的优点**:不占用服务器资源,适合大量并发访问;可设置过期时间,支持跨域。 - *...

    java源码:Java EJB中有、无状态SessionBean的两个例子.zip

    本压缩包提供了两个关于Java EJB中状态ful(有状态)和stateless(无状态)SessionBean的实例,帮助开发者深入理解这两种类型的Bean。 一、有状态SessionBean(Stateful Session Bean) 有状态SessionBean(SFSB,...

    nginx利用redis实现session会话共享-tomcat8版本专用

    在现代Web应用开发中,session会话管理是一个关键部分,特别是在多服务器环境下,为了提供一致的用户体验,需要在不同的服务器之间共享用户会话数据。Nginx作为一个高性能的反向代理服务器,通常与Tomcat这样的Java...

    购物车 java ee session

    Session是服务器为每个浏览器会话创建的独立存储空间,可以用来保存用户状态信息。当用户添加商品时,将商品对象或ID放入Session,删除商品时从Session中移除,显示购物车时读取Session中的商品数据。 3. **数据库...

    Java EJB中有、无状态SessionBean的两个例子

    有状态SessionBean适用于需要维持客户端会话状态的业务,如购物车,而无状态SessionBean则适用于独立的、不依赖上下文的操作,如简单的计算或数据处理。理解并合理运用这两种SessionBean,可以帮助我们更好地设计和...

    session会话技术

    总的来说,session会话技术是Web开发中不可或缺的一部分,理解其原理和应用对于提升用户体验和保证应用安全至关重要。在实际项目中,应根据需求选择合适的会话管理策略,并注意资源优化,以提高系统的稳定性和性能。

Global site tag (gtag.js) - Google Analytics