从JSP one获取值到servlet one并将其发送到另一个jsp和servlet

时间:2014-12-09 07:50:48

标签: java jsp servlets

我有一个jsp说index.jsp它有一个表单,用户在其中输入详细信息。我使用one.servlet检索输入的详细信息,并验证输入的详细信息。

接下来我必须将这些值传递给另一个jsp,例如results.jsp,它会显示网页中的结果并要求确认。在这一点上,我想知道使用session或setattribute是否是一个好习惯?

此外,result.jsp会将这些详细信息发送到另一个名为two.servlet的servlet,它将这些值存储在数据库中。

所以我想知道使用会话是否会帮助我完成任务

2 个答案:

答案 0 :(得分:0)

我可以理解你的问题,但我认为你不需要两个单独的servlet(一个用于验证,另一个用于保存),而在进行验证后你可以将它保存在db上然后你可以在结果中显示结果.jsp通过会话或查询字符串

答案 1 :(得分:0)

最常见的模式如下:

  • [servlet最终准备包含表单的JSP的数据]
  • JSP显示表单
  • servlet从表单中获取元素处理它们并验证输入
    • 如果输入不可接受转发回第一个JSP
    • 如果输入可以接受,则保存到数据库并将(*)重定向到另一个页面

如果你想添加一个确认阶段,你应该把它放在中间:

  • 第一个JSP覆盖表单
  • 验证servlet验证输入,如果Ok转发到确认JSP
  • 确认JSP显示数据和一个非常简单的表单(确定/取消)
  • final servlet取第二个表单的结果,将数据保存在数据库中并重定向为简单的情况。

第二种模式的难点在于您必须将输入数据传递给最终的servlet。会话是一个选项,但如果用户采取任何其他操作,您必须始终从会话中删除陈旧数据,例如直接从URL栏(或从其收藏夹)将URL传递到应用程序的另一部分。即使它使用更多带宽,我也优先在隐藏字段中传递所有相关数据。

由于它更复杂,并且在用户首先点击提交按钮之后,通常会省略确认阶段。我真的需要它,你可以看看Spring WebFlow等专用框架。

但我必须承认所有这些只是我喜欢的方式......

(*)此POST重定向GET模式避免了浏览器询问用户是否要在按下后退箭头时再次发送数据