【发布时间】:2013-06-28 05:10:45
【问题描述】:
我想完成以下工作:
我有一个用 JSP 表示的表单——我们称之为input.jsp。这个表单提交给一个 servlet,它将在 DB 中创建对象——我们称之为CreateServlet。成功提交表单后,servlet 应将用户引导回input.jsp 并显示成功消息。当验证失败时,它应该重定向回input.jsp,显示错误消息,保留输入值。
我能想到几个选项:
验证失败时,我可以使用
RequestDispatcher转发到input.jsp。这将使我能够轻松地显示表单中的验证错误和输入参数。但是,我知道a forward should not be used in the case of performing an edit operation,所以当请求成功时,我不应该进行转发,而应该进行重定向。重定向的问题是我无法轻松设置属性,除非我在 URL 中传递它,例如input.jsp?success=true.我可以在会话中存储验证消息、成功消息和输入值,并始终执行重定向。在 JSP 显示页面后,它可以从会话中删除这些属性。
我使用的是普通的 servlet 和 JSP,而不是像 Struts 这样的任何框架。在这种情况下,推荐的做法是什么?
【问题讨论】:
-
我在 Web 应用程序中遇到了同样的问题(使用 MVC 框架)并使用了第二种方法(MVC 框架通过提供对
HttpSession的访问来简化,但最终就像调用@987654330 @)。即使用户在同一浏览器的不同选项卡中打开同一页面,也没有问题。 -
使用页面级cookie而不是会话来存储消息
标签: java validation servlets redirect forward