【问题标题】:JSP/Servlet validation - forward vs redirectJSP/Servlet 验证 - 转发与重定向
【发布时间】:2013-06-28 05:10:45
【问题描述】:

我想完成以下工作:

我有一个用 JSP 表示的表单——我们称之为input.jsp。这个表单提交给一个 servlet,它将在 DB 中创建对象——我们称之为CreateServlet。成功提交表单后,servlet 应将用户引导回input.jsp 并显示成功消息。当验证失败时,它应该重定向回input.jsp,显示错误消息,保留输入值。

我能想到几个选项:

  1. 验证失败时,我可以使用RequestDispatcher 转发到input.jsp。这将使我能够轻松地显示表单中的验证错误和输入参数。但是,我知道a forward should not be used in the case of performing an edit operation,所以当请求成功时,我不应该进行转发,而应该进行重定向。重定向的问题是我无法轻松设置属性,除非我在 URL 中传递它,例如input.jsp?success=true.

  2. 我可以在会话中存储验证消息、成功消息和输入值,并始终执行重定向。在 JSP 显示页面后,它可以从会话中删除这些属性。

我使用的是普通的 servlet 和 JSP,而不是像 Struts 这样的任何框架。在这种情况下,推荐的做法是什么?

【问题讨论】:

  • 我在 Web 应用程序中遇到了同样的问题(使用 MVC 框架)并使用了第二种方法(MVC 框架通过提供对HttpSession 的访问来简化,但最终就像调用@987654330 @)。即使用户在同一浏览器的不同选项卡中打开同一页面,也没有问题。
  • 使用页面级cookie而不是会话来存储消息

标签: java validation servlets redirect forward


【解决方案1】:

如果我是你,我会选择第二个选项。我的理由:

  • 使其成为一个对象,以封装该表单中的所有输入。它会 如果我需要向表单添加属性,则更易于维护。
  • 它更安全,因为您的 url 将从属性中清除。

如果你使用像struts这样的框架会很容易。一切都将由他们处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 2013-05-27
    相关资源
    最近更新 更多