【问题标题】:Passing customized messages from Servlet to a JSP page?将自定义消息从 Servlet 传递到 JSP 页面?
【发布时间】:2010-07-14 07:17:47
【问题描述】:

我是 JSP 和 Servlet 的新手。

我想知道将一些自定义消息传递到客户端网页的最佳方式。

例如假设我有一个网页说 student.jsp 有一个表格,要注册一个新学生到我们的在线应用程序。成功插入表格的所有字段后, 用户提交表单并将数据提交给我们的 servlet 进行进一步处理。现在,Servlet 验证它并将其添加到我们的数据库中。所以,现在 servlet 应该发送一条消息,指示 将最终用户输入的数据成功插入到最终用户(在我们的例子中是 student.jsp)。

所以,我可以将这种类型的消息传递给任何客户端网页。

我不想将此消息作为 URL 查询字符串传递。

有没有其他更好、更安全的方式来传递这些类型的消息...

【问题讨论】:

    标签: java jsp servlets


    【解决方案1】:

    使用request.setAttribute("message", yourMessage),然后转发(request.getRequestDispatcher("targetPage.jsp").forward())到结果页面。

    然后您可以通过 JSTL (<c:out value="${message}" />) 或通过request.getAttribute(..) 读取目标页面中的消息(这不是可取的 - 在 jsp 中应避免使用 scriptlet)

    如果你真的需要response.sendRedirect(..),那么你可以将消息放在会话中,取回后将其移除。为此,您可能有一个自定义标记,以便您的 jsp 代码看起来不会太“难看”。

    【讨论】:

    • 感谢这个好建议。但是如果我使用 response.sendRedirect 而不是 request.getRequestDispacther 会怎样。我可以将属性方法与 sendRedirect 一起使用吗?使用属性方法有什么特别的好处??谢谢 Mihir Parekh
    • 重定向发出另一个请求,因此属性丢失。
    • 感谢您的回复。但是您能建议一种在我使用 response.sendRedirect 时向客户端发送消息的方法吗??
    • 放置在会话中,然后从中删除。
    【解决方案2】:

    我认为它在 JSTL 中看起来像这样:

    <c:remove var="message" scope="session" />

    我也觉得,如果“message”是Java String,可以这样使用后设置为空字符串:

    <c:set var="message" scope="session" value="" />

    实际上,如果“消息”是一个 Java 字符串数组,它看起来也可以工作:String[]...

    【讨论】:

    • 感谢您的回答,尽管我投了您一票。
    猜你喜欢
    • 2011-01-16
    • 2013-08-24
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多