Java JSP/Servlet验证-转发与重定向
我想完成以下几点: 我有一个用JSP表示的表单,我们称之为Java JSP/Servlet验证-转发与重定向,java,validation,servlets,redirect,forward,Java,Validation,Servlets,Redirect,Forward,我想完成以下几点: 我有一个用JSP表示的表单,我们称之为input.JSP。此表单提交给一个servlet,该servlet将在数据库中创建对象–让我们调用此CreateServlet。成功提交表单后,servlet应引导用户返回到input.jsp,并显示一条成功消息。当验证失败时,它应该重定向回input.jsp,显示错误消息,保留输入值 我可以想出几个选择: 验证失败时,我可以使用RequestDispatcher执行转发到input.jsp。这将允许我轻松显示表单中的验证错误和输入参数
input.JSP
。此表单提交给一个servlet,该servlet将在数据库中创建对象–让我们调用此CreateServlet
。成功提交表单后,servlet应引导用户返回到input.jsp
,并显示一条成功消息。当验证失败时,它应该重定向回input.jsp
,显示错误消息,保留输入值
我可以想出几个选择:
RequestDispatcher
执行转发到input.jsp
。这将允许我轻松显示表单中的验证错误和输入参数。然而,我知道,当请求成功时,我不应该做转发,而应该做重定向。重定向的问题是,除非在URL中传递属性,否则无法轻松设置属性,例如input.jsp?success=true
我使用的是普通的servlet和JSP,而不是任何类似Struts的框架。在这种情况下,推荐的做法是什么?如果我是你,我会选择第二个选项。我的理由:
- 将其作为一个对象来封装该表单中的所有输入。会的 如果需要向表单添加属性,则更易于维护李>
- 它更安全,因为您的url将从属性中清除
如果您使用像struts这样的框架,这将非常容易。一切都将由他们来处理。我在Web应用程序(使用MVC框架)中遇到了同样的问题,并使用了第二种方法(MVC框架通过提供对
HttpSession
的访问来简化,但最终就像调用HttpServletRequest#getSession
)。即使用户在同一浏览器的不同选项卡中打开同一页面,也没有问题。请使用页面级cookie而不是会话来存储消息