Java JSP将request.getParameter转换为实体

Java JSP将request.getParameter转换为实体,java,jsp,jakarta-ee,servlets,Java,Jsp,Jakarta Ee,Servlets,情况就是这样 这是我从中获得servlet的jsp。有一个名为CurrentUser的实体,它保存有关用户的多个信息字段。我希望以实体的形式向servlet传递有关用户的所有信息 <a href="Controller?action=profile&entity=<%=_currentUser%>"> Information about the current user, like: name, id, profile picture etc... </a&

情况就是这样

这是我从中获得servlet的jsp。有一个名为CurrentUser的实体,它保存有关用户的多个信息字段。我希望以实体的形式向servlet传递有关用户的所有信息

<a href="Controller?action=profile&entity=<%=_currentUser%>"> Information about the current user, like: name, id, profile picture etc... </a>
如果我做一个system.out来查看“entity”参数中的内容,我会得到类似于:Package的东西。CurrentUser@abc1235 ... 我不能把它铸造成一个实体来接受它

incompatible types: String cannot be converted to CurrentUser

有没有办法获取这些字段中的引用和信息

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


String id=request.getParameter(“实体”);

在JSP中,将您的
\u currentUser
实体存储到
会话中

<% session.setAttribute("entity", _currentUser); %>
<a href="Controller?action=profile">Information ... </a>
if(request.getParameter("action").equals("profile")){
    CurrentUser _currentUser= (CurrentUser) session.getAttribute("entity");
}

注意,理想情况下,将当前用户对象存储到
Session
中应该由首先将请求转发给JSP的
Servlet
完成。在JSP中使用Java代码scriptlets是不推荐的,因为JSP主要用于表示目的。

是的,这是我从一开始就在想的,但我不想将数据库用于已经存在的东西,我的意思是,如果已经加载了对象,为什么还要再次使用查询。。。这有什么解决办法吗?我不知道加载在哪里?我的意思是,这个实体是前面的Select*from结果的结果。。。一个数据库。我不想用无用的查询对数据库收费,因为我已经加载了实体,而不是对数据库收费,我想用从jsp到servlet的方法传递实体。我理解request.getSession().getAttribute(“实体”);我知道我可以对这个应用强制转换,为什么不对getParameter应用强制转换…:PI没有告诉你如何检索对象。有内存引用,你不能访问其中的数据吗…?我的意思是你在那里使用
会话
,而不是请求,对不起。由于单击链接会发出新请求,因此保存在其中的任何属性都将丢失。查询参数不起作用的原因是,使用get/post参数只能传递字符串表示形式。实体对象(实际上一直存在于服务器上)无法序列化并传递给JSP,然后通过GET请求正确返回。@RaviThapliyal,你不能将“内存位置”发送到字符串形式,然后从该位置获取对象并将其转换为类吗?不,它不是这样工作的。比如说,您可以通过某种方式检查堆内存(使用调试器或一些JVM工具),并且您知道对象位于“0xS0M3”地址;Java中没有任何东西可以让您重新创建对同一地址的引用,以便可以再次开始使用同一对象。与C/C++不同,Java不允许您自己和内存交互。
if(request.getParameter("action").equals("profile")){
    CurrentUser _currentUser= (CurrentUser) session.getAttribute("entity");
}