`

Java中的Session

 
阅读更多

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

  Session的发明是为了填补HTTP协议的局限。请注意HTTP协议是如何工作的--用户发出请求,服务器作出响应,这种用户端和服务器端 的联系就是离散的,非连续的。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。

  下面举一个简单的例子说明session的使用

  //97色色 SessionExample.java

  import java.io.*;

  import java.util.*;

  import javax.servlet.*;

  import javax.servlet.http.*;

  //导入必要的软件包

  public class SessionExample extends HttpServlet

  {

  public void doGet(HttpServletRequest request, HttpServletResponse response)

  throws IOException, ServletException //实现doGet方法

  {

  response.setContentType("text/html"); //设置HTTP头

  PrintWriter out = response.getWriter(); //得到输出97gan

  HttpSession session = request.getSession(true);

  //得到session对象

  //打印HTML标记

  out.println("<html>");

  out.println("<head>");

  out.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\">");

  out.println("</head>");

  out.println("<body>");

  Date created = new Date(session.getCreationTime());

  //得到session对象创建的时间

  Date accessed = new Date(session.getLastAccessedTime());

  //得到最后访问该session对象的时间

  out.println("ID " + session.getId()+"<br>");

  //得到该session的id,并打印

  out.println("Created: " + created+"<br>");

  //打印session创建时间

  out.println("Last Accessed: " + accessed+"<br>");

  //打印最后访问时间

  session.setAttribute("UID","12345678");

  //在session中添加变量UID=12345678

  session.setAttribute("Name","Tom");

  //在session中添加变量Name=Tom

  Enumeration e = session.getAttributeNames();

  //得到session中变量名的枚举对象

  while (e.hasMoreElements()) { //遍历每一个变量

  String name = (String)e.nextElement(); //首先得到名字

  String value = session.getAttribute(name).toString();

  //由名字从97gan中得到值

  out.println(name + " = " + value+"<br>"); //打印

  }

  out.println("</body>"); //打印HTML标记

  out.println("</html>");

  }

  }

  }

分享到:
评论

相关推荐

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

    - 为了提高性能和扩展性,大型应用往往不直接存储大量数据在Session中,而是用Session作为用户标识,将购物车数据持久化到数据库或其他缓存系统。 在“SessionCart”这个文件中,很可能包含了实现上述功能的Servlet...

    java中使用session模拟用户登陆

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

    java_session共享配置.jar

    Java_session共享配置主要涉及到Web应用中的会话管理,特别是如何在多服务器环境下保持用户会话的一致性。这里提到的几个jar文件是实现这一目标的关键组件。下面将详细讲解每个文件的作用及其背后的原理。 首先,`...

    Java关于session的详细解释

    4. **表单数据持久化**:对于多步骤的表单,可以将用户的输入暂存于Session中,方便用户返回上一步进行修改。 #### 五、Session的生命周期 Session的生命周期通常包括以下几个阶段: 1. **创建**:当用户第一次...

    Java 使用HttpClient保持SESSION状态

    以上就是在Java中使用HttpClient保持SESSION状态的基本流程。在实际项目中,可能还需要处理重定向、超时、错误处理等复杂情况。注意,对于HTTPS站点,可能需要配置SSLContext和TrustManager,以允许HttpClient信任自...

    JAVA的SESSION精准统计

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

    java session

    如果需要将某些对象放入Session中,确保这些对象实现了`java.io.Serializable`接口。这使得这些对象可以被序列化并正确地保存和恢复。 4. **深入理解** - **`StandardManager`类**负责管理Session数据的加载和...

    java中session源码-BytecodeInstrumentationPresentation:有关Java字节码检测主题的示例应用程序

    java中session源码Java字节码检测演示 关于Java字节码检测的主题的演示。 这是我公司内每周知识共享会议的准备。 工具 Java 11 Java助手 Gradle 储存库结构 它由四个文件夹part1 , part2 , part3和presentation 。...

    理解session机制

    Session机制是Web开发中用于维持客户端(浏览器)与服务器之间状态的一种技术。在HTTP协议中,由于其无状态性,每次请求之间不会共享任何信息,因此,为了实现用户登录状态的保持或者其他需要跟踪用户行为的功能,就...

    JAVA SESSION监听器

    Java Session监听器是Java Servlet规范中提供的一种机制,用于对HttpSession对象的生命周期事件进行监听和处理。在Web应用程序中,Session是用来跟踪用户状态的重要工具,特别是在无状态的HTTP协议上。当用户登录后...

    java后台请求http并保持Session

    当用户登录时,将用户信息存储在Session中,并返回Session ID。在后台请求中,通过设置Cookie来保持Session。 ```java // 假设在Servlet或Filter中处理登录 HttpSession session = request.getSession(); session....

    JAVA之cookie与session

    ### JAVA之cookie与session #### 一、Cookie与Session的概念 **Cookie** 与 **Session** 是两种在 Web 开发中用于跟踪用户会话的重要技术。它们的主要目标是在客户端和服务端之间保持状态。 - **Cookie** 机制...

    Cookie与Session机制

    Java中Session的实现 在Java Web开发中,Session是通过`javax.servlet.http.HttpSession`接口来实现的。开发者可以通过`HttpServletRequest`的`getSession()`方法获取当前用户的Session对象,然后像操作普通的Java...

    JAVA通过Session和Cookie实现网站自动登录

    这种功能主要依赖于Java中的`Session`和`Cookie`技术来实现。 #### Session概念解析 `Session`是一种服务器端技术,用于存储特定用户的会话所需的信息。当用户访问某个应用程序时,服务器会创建一个唯一的会话ID,...

    java购物车session

    `setAttribute()`方法用来设置session中的键值对,"cart"是键,一个ArrayList是值,表示购物车。 购物车的具体实现可能包括以下步骤: 1. 用户选择商品后,将商品信息(如ID、名称、价格等)封装成CartItem对象。 2...

    JAVA通过Session和Cookie实现网站自动登录的技术

    在网站开发中,实现自动登录功能是非常重要的,JAVA 通过 Session 和 Cookie 实现网站自动登录的技术是其中的一种方法。本文将详细介绍如何使用 Session 和 Cookie 实现网站自动登录的技术。 一、什么是 Session 和...

    购物车 java ee session

    当用户添加商品时,将商品对象或ID放入Session,删除商品时从Session中移除,显示购物车时读取Session中的商品数据。 3. **数据库交互**:购物车系统通常需要与数据库进行交互,存储用户的购物车信息。这可能涉及...

    java session判断用户登录时间和点击页面次数

    2. 使用`session.setAttribute("loginTime", new Date())`将当前日期和时间(Java中的`Date`对象)存储在Session中,键为"loginTime"。 3. 每当用户访问新的页面时,检查Session中的"loginTime",以获取登录时间。 ...

    Java中设置session的详细解释

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

    了解java中的session

    了解 Java 中的 Session Java 中的 Session 是一个非常重要的概念,它允许开发者在 Web 应用程序中存储用户的信息,以便在多个页面之间共享数据。下面是 Java 中 Session 的相关知识点: Session 的定义 Session...

Global site tag (gtag.js) - Google Analytics