2012-12-13 59 views
0

假設我們在「Page1.jsp」和「page2.jsp」中的「form2」中有「form1」。維持不同表格之間的狀態提交

步驟是:

  1. 提交Form 1中。

  2. 我們得到了「page2.jsp」輸入文本字段值「T1」和

  3. 然後使用隱藏域在「形式2」本「T1」價值傳遞給同樣的「page2.jsp」或「page3.jsp」。

  4. 提交「form2」。
  5. 通過訪問表單2重定向的頁面上的隱藏字段名稱獲取相同的值「t1」。它可以是同一頁面或某個其他頁面顯示爲「page3.jsp」。

因此,它是一種在頁面之間傳遞信息的簡單方法。在這裏看到只有隱藏領域工作但會話不能完成的區別。如果使用隱藏字段將此「t1」值傳遞給相同的「page2.jsp」。這意味着如果我們將表單2重定向到同一頁面2,即步驟如下:

假設我們在「Page1.jsp」和「page2.jsp」中的「form2」中有「form1」。

  1. 提交「form1」。
  2. 我們在「page2.jsp」中獲取輸入文本字段值「t1」,然後
  3. 然後創建一個會話以保存此「t1」值。
  4. 提交「form2」。
  5. 現在如果「表單2」重定向到「page3.jsp」,那麼我們可以很容易地獲取會話值,但是如果「表單2」重定向到「page2.jsp」(重定向到同一頁面),則會話值爲空。

爲什麼我們無法在隱藏字段所在的頁面上獲取會話值?請容忍我這個長期的問題。但我想知道這背後的概念。

回答

1

事實上,會話可以在同一頁面上獲得價值。會話駐留在服務器端。

JSP容器爲每個訪問者創建jsession_id,並將此信息作爲響應(通過查詢字符串或cookie)。對於每個請求,瀏覽器都會發回jsession_id信息。回到服務器端,有一個包含jsession_id作爲鍵和會話作爲值的映射。 JSP或servlet可以這樣訪問這個對象中的信息。

但是,當然,t1中的值(例如您的示例)應該發送到服務器端並放入會話中,以備將來使用。

See here