Session Tracking in Java2025年5月7日 | 阅读6分钟 在Web的世界里,Session是指两个系统相互交互的时间段。这两个系统可以相互之间建立点对点或客户端-服务器关系。然而,问题在于,在HTTP协议中,通信的状态不会被维护,也就是说,HTTP是一个无状态协议。**Java中的Session跟踪**就是利用Servlet来解决这个问题的。 Cookies为了在Java中实现Session跟踪,最常用的技术之一就是Cookies。 Cookies以键值对的形式包含信息。它由服务器发送到客户端的浏览器。它由浏览器保存在客户端系统中。然而,Cookies在跟踪Session方面效果不佳。Cookies的缺点是: 1) Cookies只能存储文本信息。 2) Cookies是浏览器相关的。因此,如果客户端禁用Cookies,Web应用程序将永远无法使用Cookies。 3) 单个Cookie不能包含大量信息。单个Cookie的大小不能超过4KB。 HttpSession接口Java Servlet提供了HttpSession接口,该接口提供了一种在多个页面请求之间识别特定用户或保存有关该用户的信息的方法。事实上,Java Servlet使用HttpSession接口在HTTP服务器和HTTP客户端之间建立连接。 HttpSession接口方便Servlet能够
下图显示了HttpSession接口在Session中的工作原理。 ![]() 用户A和用户B都请求连接到服务器。Servlet容器使用HttpSession接口通过为每个请求创建一个唯一的ID来连接到服务器。这个唯一的ID用于识别用户。这个唯一的ID可以存储在请求参数或Cookie中。 HttpSession接口的方法
Java中Session跟踪的实现以下程序展示了如何实现Session跟踪。在这个例子中,我们创建了四个文件。 1) index.html 2) web.xml 3) HTTPServletEx1.java 4) HTTPServletEx2.java 文件名: index.html 文件名: HTTPServletEx1.java 文件名: HTTPServletEx2.java 请按照以下步骤运行程序。 步骤 1: 安装Apache Tomcat应用程序。进入Tomcat应用程序的webapps文件夹,然后创建一个您喜欢的文件夹。我们创建了一个MyProject文件夹。 ![]() 步骤 2: 在MyProject文件夹内创建一个WEB-INF文件夹,并在WEB-INF文件夹内创建一个classes文件夹。 步骤 3: 现在,使用javac命令编译上述Java文件。将生成的.class文件保存在classes文件夹中。 ![]() 步骤 4: 现在,移到classes文件夹外部,并在WEB-INF文件夹中创建web.xml文件。请观察以下截图。 ![]() 步骤 5: 将index.html文件放在WEB-INF文件夹旁边。 ![]() 步骤 6: 我们的应用程序设置已准备就绪。现在,我们需要启动应用程序。为此,请导航到bin文件夹。 ![]() 步骤 7: 在bin文件夹中,单击Tomcat10.exe ![]() 步骤 8: Apache Tomcat服务器已启动。Tomcat服务器通常监听端口号8090。因此,我们必须在URL中提供相同的端口号。为此,请转到浏览器并在URL栏中输入localhost:8090,然后按Enter键。您将看到以下内容。 ![]() 步骤 9: 现在,将/MyProject添加到URL。因此,新的URL将是localhost:8090/MyProject。按下回车键后,index.html文件生效,并在浏览器上显示表单。 ![]() 步骤 10: 现在输入您选择的名称,然后单击“Press the Button”,我们会得到以下结果。 ![]() 步骤 11: 观察URL,它显示servletA。这是因为index.html文件中存在action属性。现在点击“Press Here”。 ![]() 现在,我们移到了servletB。URL确认了这一点。这是因为HTTPServletEx1.java文件中存在锚标签。 解释: 在上面的代码中,getAttribute()和setAttribute()方法来自HttpSession接口。setAttribute()方法在第一个Servlet的Session范围内创建一个属性,而getAttribute()在第二个Servlet的Session范围内接收相同的属性。这就是为什么它同时在servletA和servletB中都能反映出来。 使用Servlet中的Http Sessions的优点1) Session中可以存储各种对象,例如数据集、数据库和文本。 2) 与Cookies不同,在Session的使用中完全消除了对客户端浏览器的依赖。为了实现这一点,Session对象存储在服务器上,而不是客户端机器上。 3) Session是透明和安全的。 使用Servlet中的Http Sessions的缺点1) Session对象存储在服务器端,这会导致性能开销。 2) 数据的反序列化或序列化也会带来性能开销。 注意: .java文件中的import语句包含jakarta一词。jakarta一词依赖于servlet-api.jar文件。在我们的例子中,当我们解压servlet-api.jar文件时,我们得到了jakarta文件夹。因此,我们在import语句中提到了jakarta。tomcat服务器的其他版本可能包含servlet-api.jar文件,解压后会显示javax文件夹。在这种情况下,导入语句中的词应该使用javax而不是jakarta。下一主题使用Java查找过渡点 |
当我们谈论 Java 中的方法重载时,会出现一个问题:可以在 Java 中重载 main() 方法吗?答案是,可以。在本节中,我们将学习如何在 Java 中重载 main() 方法。...
阅读 3 分钟
在 Java 中,Gson 是由 Google 开发的一个用于 JSON(JavaScript Object Notation)序列化和反序列化的库。Gson 在 Java 中的主要目的是将 Java 对象转换为 JSON 格式,反之亦然。让我们详细了解...
7 分钟阅读
类和对象是Java编程语言的基础,因为它是一种面向对象的语言。当我们只需要在一个程序中存储一个对象时,我们使用了Object类型的变量。然而,使用项目数组更好……
阅读 3 分钟
数字图像分析和计算机视觉都严重依赖于图像处理。为了获得预期的结果,这需要图像修改。对比度增强是图像处理的基本方法,它可以突出图像中的对象,使其更加...
阅读 8 分钟
Java IntSummaryStatistics 类的 getMax() 函数用于检索此 IntSummaryStatistics 中的最大记录数。语法:public int getMax() 参数:此方法不接受任何参数。返回值:此 IntSummaryStatistics 中的最大记录数由...返回。
阅读 2 分钟
Java的一个关键特性是多线程,它允许多个线程同时运行,并通过允许任务并行完成来提高程序性能。线程管理通常需要使用同步技术来确保线程能够有效地协调它们的执行。Java...
5 分钟阅读
字符串压缩是计算机科学和编程中的一个基本问题,其目标是通过计算连续重复字符来压缩字符串。该问题的本质是更有效地表示字符串,尤其是在处理大型数据集时。这种技术在各种场景下都很有用...
7 分钟阅读
SortedSet 的 addAll() 方法通过添加给定集合中的每个元素来保留集合的唯一性和顺序。addAll(Collection C) 函数将指定集合中的所有元素追加到当前集合中。元素没有特定的集合顺序……
阅读 3 分钟
? LINQ 称为 Language Integrated Query,它出现在 .NET 3.5 和 Visual Studio 2008 中。LINQ 的优点是它能够让 .NET 语言(如 C#、VB.NET 等)创建查询以从数据源中检索数据。对于...
阅读 6 分钟
java.nio.charset.CharsetEncoder 的内置方法之一是 malformedInputAction()。对于格式错误的输入问题,CharsetEncoder 会返回此编码器的当前操作。返回的三种 CodingErrorAction 类型是 IGNORE、REPLACE 和 REPORT。不符合所用字符集预期格式的字符...
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India