Java如何从HTTP会话中读写对象?
在本文中,您将学习如何在JavaServerPage的HTTPSession中写入和读取对象。我们正在看的第一个示例是使用经典的JSP脚本,这是使用JSP的一种非常古老的方法,但是对您了解历史很有帮助。我们在<%%>符号内编写一个JSPscriptlet。我们可以使用提供的session对象。要在会话对象中设置属性,我们使用setAttribute(Stringname,Objectvalue)方法。在示例中,我们创建了一个名为的属性loginDate,并将值设置为当前日期。
要从session对象读取值,我们使用getAttribute(Stringname)方法。此方法返回的类型Object,因此我们需要将其强制转换为原始对象。在这种情况下,我们将其转换为java.util.Date。然后我们打印出从sessionobject>读取的值。
<%@ page import="java.util.Date" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <!DOCTYPE html> <html> <head> <title>JSP - Session Write</title> </head> </html> <body> <% //创建一个名为login-date的会话属性,以存储java.util.Date。 session.setAttribute("loginDate", new Date()); //从session属性中读回java.util.Date对象。 Date loginDate = (Date) session.getAttribute("loginDate"); %> Login Date: <%= loginDate %> </body>
可以用来从session对象读取值的第二种方法是使用JSP表达式语言(EL)。看起来像下面的代码片段。您可以将sessionScope隐式对象与会话属性名称结合使用。您可以在sessionScope下面看到两种使用对象的方法。最简单的方法是将属性名称用作EL表达式,并且在可用范围内查找值看起来很聪明。
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <!DOCTYPE html> <html> <head> <title>JSP - Session Read EL</title> </head> <body> <p>Login Date: ${sessionScope.loginDate}</p> <p>Login Date: ${sessionScope["loginDate"]}</p> <p>Login Date: ${loginDate}</p> </body> </html>
您还将从会话中获得相同的值,如下图所示: