Java如何从HTTP会话中读写对象?

在本文中,您将学习如何在JavaServer Page的HTTP Session中写入和读取对象。我们正在看的第一个示例是使用经典的JSP脚本,这是使用JSP的一种非常古老的方法,但是对您了解历史很有帮助。我们在<% %>符号内编写一个JSP scriptlet 。我们可以使用提供的session对象。要在会话对象中设置属性,我们使用setAttribute(String name, Object value)方法。在示例中,我们创建了一个名为的属性loginDate,并将值设置为当前日期。

要从session对象读取值,我们使用getAttribute(String name)方法。此方法返回的类型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>
JSP会话读写

JSP会话读写

可以用来从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>

您还将从会话中获得相同的值,如下图所示:

使用EL进行JSP会话读取

使用EL进行JSP会话读取