如何将属性从 servlet 转发到请求它的同一 JSP

Posted

技术标签:

【中文标题】如何将属性从 servlet 转发到请求它的同一 JSP【英文标题】:How do you forward attributes from a servlet to the same JSP that requested it 【发布时间】:2022-01-10 15:14:12 【问题描述】:

对于上下文,我有一个名为“withdraw.jsp”的 jsp,它调用一个处理提款的 servlet。在这个 servlet 中,如果事务成功与否,我想传递一个字符串消息,并且我想将此消息发送到调用 servlet 的同一个 jsp(它仍然是“withdraw.jsp”。这就是我所做的远

//In the servlet
RequestDispatcher view = request.getRequestDispatcher("registeredUser/withdraw.jsp");
String error = (String)ex.getMessage();
request.setAttribute("errorMessage", error);
view.include(request,response); // i also tried forward here

//In the jsp
<% if(request.getParameter("errorMessage") != null) %>
<p> <%=(String)request.getParameter("errorMessage")%> </p>
<%  %>

如果我运行此代码,jsp 将不会检索 errorMessage,因为它是空的,尽管它被 servlet 设置为属性。有什么帮助吗?

【问题讨论】:

【参考方案1】:

您将 属性参数 混淆了。

消息在您的 JSP 中始终为空,因为您在 servlet 中设置了一个属性,但在您的 JSP 中您正在寻找一个参数。 They are different things.

要做的事情:

使用RequestDispatcher.forward(...) 发送到您的JSP; 确保在 JSP 中检索属性; do not use scriptlets。根据您的 JSP 版本,您可以使用 EL expressions or JSTL。

【讨论】:

...我发誓那是 getAttribute,我想我太累了。无论如何,感谢您指出这一点!

以上是关于如何将属性从 servlet 转发到请求它的同一 JSP的主要内容,如果未能解决你的问题,请参考以下文章

Servlet中的请求转发和重定向

servlet 转发包含

如何在Glassfishv4上的另一个Servlet中创建的Servlet中恢复会话?

Servlet题1

Servlet到Servlet的请求转发与重定向的区别

Servlet转发和重定向response.sendRedirecte()区别 (转)