会话状态的维持是开发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>");
}
}
}
相关推荐
- 为了提高性能和扩展性,大型应用往往不直接存储大量数据在Session中,而是用Session作为用户标识,将购物车数据持久化到数据库或其他缓存系统。 在“SessionCart”这个文件中,很可能包含了实现上述功能的Servlet...
在Java Web开发中,Session是服务器端用于跟踪用户状态的一种机制。当用户通过用户名和密码登录系统后,服务器需要一种方式来识别这个已验证的用户,以便在后续的请求中提供个性化的服务,例如访问权限控制。这时,...
Java_session共享配置主要涉及到Web应用中的会话管理,特别是如何在多服务器环境下保持用户会话的一致性。这里提到的几个jar文件是实现这一目标的关键组件。下面将详细讲解每个文件的作用及其背后的原理。 首先,`...
4. **表单数据持久化**:对于多步骤的表单,可以将用户的输入暂存于Session中,方便用户返回上一步进行修改。 #### 五、Session的生命周期 Session的生命周期通常包括以下几个阶段: 1. **创建**:当用户第一次...
以上就是在Java中使用HttpClient保持SESSION状态的基本流程。在实际项目中,可能还需要处理重定向、超时、错误处理等复杂情况。注意,对于HTTPS站点,可能需要配置SSLContext和TrustManager,以允许HttpClient信任自...
在Java Web开发中,Session是服务器用来跟踪用户状态的一种机制。每个用户在访问网站时,服务器会为其创建一个唯一的Session ID,存储在客户端的Cookie中,每次请求时通过这个ID来识别用户。"JAVA的SESSION精准统计...
如果需要将某些对象放入Session中,确保这些对象实现了`java.io.Serializable`接口。这使得这些对象可以被序列化并正确地保存和恢复。 4. **深入理解** - **`StandardManager`类**负责管理Session数据的加载和...
java中session源码Java字节码检测演示 关于Java字节码检测的主题的演示。 这是我公司内每周知识共享会议的准备。 工具 Java 11 Java助手 Gradle 储存库结构 它由四个文件夹part1 , part2 , part3和presentation 。...
Session机制是Web开发中用于维持客户端(浏览器)与服务器之间状态的一种技术。在HTTP协议中,由于其无状态性,每次请求之间不会共享任何信息,因此,为了实现用户登录状态的保持或者其他需要跟踪用户行为的功能,就...
Java Session监听器是Java Servlet规范中提供的一种机制,用于对HttpSession对象的生命周期事件进行监听和处理。在Web应用程序中,Session是用来跟踪用户状态的重要工具,特别是在无状态的HTTP协议上。当用户登录后...
当用户登录时,将用户信息存储在Session中,并返回Session ID。在后台请求中,通过设置Cookie来保持Session。 ```java // 假设在Servlet或Filter中处理登录 HttpSession session = request.getSession(); session....
### JAVA之cookie与session #### 一、Cookie与Session的概念 **Cookie** 与 **Session** 是两种在 Web 开发中用于跟踪用户会话的重要技术。它们的主要目标是在客户端和服务端之间保持状态。 - **Cookie** 机制...
Java中Session的实现 在Java Web开发中,Session是通过`javax.servlet.http.HttpSession`接口来实现的。开发者可以通过`HttpServletRequest`的`getSession()`方法获取当前用户的Session对象,然后像操作普通的Java...
这种功能主要依赖于Java中的`Session`和`Cookie`技术来实现。 #### Session概念解析 `Session`是一种服务器端技术,用于存储特定用户的会话所需的信息。当用户访问某个应用程序时,服务器会创建一个唯一的会话ID,...
`setAttribute()`方法用来设置session中的键值对,"cart"是键,一个ArrayList是值,表示购物车。 购物车的具体实现可能包括以下步骤: 1. 用户选择商品后,将商品信息(如ID、名称、价格等)封装成CartItem对象。 2...
在网站开发中,实现自动登录功能是非常重要的,JAVA 通过 Session 和 Cookie 实现网站自动登录的技术是其中的一种方法。本文将详细介绍如何使用 Session 和 Cookie 实现网站自动登录的技术。 一、什么是 Session 和...
当用户添加商品时,将商品对象或ID放入Session,删除商品时从Session中移除,显示购物车时读取Session中的商品数据。 3. **数据库交互**:购物车系统通常需要与数据库进行交互,存储用户的购物车信息。这可能涉及...
2. 使用`session.setAttribute("loginTime", new Date())`将当前日期和时间(Java中的`Date`对象)存储在Session中,键为"loginTime"。 3. 每当用户访问新的页面时,检查Session中的"loginTime",以获取登录时间。 ...
Java中的Session技术主要被用于Web开发中,用来在客户端(通常是浏览器)和服务器之间保持状态。在HTTP协议的背景下,由于其无状态性,即服务器不会记住不同请求之间的信息,因此,Session机制成为了解决这个问题的...
了解 Java 中的 Session Java 中的 Session 是一个非常重要的概念,它允许开发者在 Web 应用程序中存储用户的信息,以便在多个页面之间共享数据。下面是 Java 中 Session 的相关知识点: Session 的定义 Session...