维持不同表单之间的状态提交

时间:2012-12-13 10:03:03

标签: java web-applications

假设我们在“page1.jsp”中的“form1”和“page2.jsp”中的“form2”。

步骤是:

  1. 提交form1。

  2. 我们在“page2.jsp”和

  3. 中获取输入文本字段值“t1”
  4. 然后使用“表单2”中的隐藏字段将此“t1”值传递给相同的“page2.jsp”或“page3.jsp”。

  5. 提交“form2”。
  6. 通过访问表单2重定向的页面上的隐藏字段名称获取相同的值“t1”。可以是同一页面或其他页面说“page3.jsp”。
  7. 因此,它是在页面之间传递信息的简单方法。这里看到的区别只有隐藏字段有效,但会话无法做到。如果使用隐藏字段将此“t1”值传递给相同的“page2.jsp”。这意味着如果我们将表单2重定向到相同的page2,即步骤是:

    假设我们在“page2.jsp”中的“form1”和“page2.jsp”中的“form2”。

    1. 提交“form1”。
    2. 我们在“page2.jsp”和
    3. 中获取输入文本字段值“t1”
    4. 然后创建一个会话以保存此“t1”值。
    5. 提交“form2”。
    6. 现在,如果“表单2”重定向到“page3.jsp”,那么我们可以轻松获取会话值,但如果“表单2”重定向到“page2.jsp”(重定向到同一页面),则会话值为空。
    7. 为什么我们无法在隐藏字段可以的同一页面上获取会话值?这个长期的问题,请容忍我。但我想知道这背后的概念。

1 个答案:

答案 0 :(得分:1)

实际上,会话可以在同一页面上获得价值。会话驻留在服务器端。

JSP容器在jsession_id为每个访问者创建,并将此信息作为响应(通过查询字符串或cookie)。对于每个请求,浏览器都会发回jsession_id个信息。回到服务器端,有一个地图,其中jsession_id为关键,会话为值。 JSP或servlet可以访问此对象中的信息。

但是,当然,t1中的值(例如您的示例)应该发送到服务器端并放入会话中以便将来恢复使用。

See here

相关问题