JSP 将 request.getParameter 投射到实体

JSP Cast request.getParameter to Entity

场景是这样

这是我到达 servlet 的 JSP。有一个名为 CurrentUser 的实体,它包含有关用户的多个信息字段。我想以实体的形式将有关用户的所有信息传递给 servlet。

<a href="Controller?action=profile&entity=<%=_currentUser%>"> Information about the current user, like: name, id, profile picture etc... </a>

servlet 内部:

if(request.getParameter("action").equals("profile")){
        CurrentUser _currentUser= (CurrentUser) request.getParameter("entity");
}

如果我执行 system.out 以查看“实体”参数中的内容,我会得到类似以下内容的信息:Package.CurrentUser@abc1235 ... 我无法将其作为实体接收。

incompatible types: String cannot be converted to CurrentUser

有什么方法可以获取该引用和这些字段中的信息吗?

不,你不应该这样做。使用引用字符串表示您无法检索对象实例。但是您可以在查询字符串中使用 String 对象的 ID 参数。然后通过 ID 检索对象。

<a href="Controller?action=profile&entity=<%=_currentUser.id%>"> Information about the current user, like: name, id, profile picture etc... </a>
String id = request.getParameter("entity");

在 JSP 中,将您的 _currentUser 实体存储到 Session 中,如

<% session.setAttribute("entity", _currentUser); %>
<a href="Controller?action=profile">Information ... </a>

现在,在 Controller Servlet 中,您可以将此 entity 检索为

if(request.getParameter("action").equals("profile")){
    CurrentUser _currentUser= (CurrentUser) session.getAttribute("entity");
}

请注意,将当前用户对象存储到 Session 理想情况下应该由首先将请求转发给 JSP 的 Servlet 完成。在 JSP 中使用 Java 代码 scriptlets <% %> 已被弃用,因为 JSPs 应该主要仅用于演示目的。