0

「Page1.jsp」に「form1」があり、「page2.jsp」に「form2」があるとします。

手順は次のとおりです。

  1. form1 を送信します。

  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」に「form1」があり、「page2.jsp」に「form2」があるとします。

  1. 「form1」を送信します。
  2. 「page2.jsp」で入力テキストフィールド値「t1」を取得し、
  3. 次に、この「t1」値を保持するセッションを作成します。
  4. 「form2」を送信します。
  5. 「フォーム 2」が「page3.jsp」にリダイレクトする場合、セッション値は簡単に取得できますが、「フォーム 2」が「page2.jsp」にリダイレクトする (同じページにリダイレクトする) 場合、セッション値は空です。

非表示フィールドが取得できるのと同じページでセッション値を取得できなかったのはなぜですか? この長い質問をお許しください。しかし、私はこの背後にある概念を知りたいです。

4

1 に答える 1

1

実際、セッションは同じページで価値を得ることができます。セッションはサーバー側にあります。

JSP コンテナは、jsession_id訪問者ごとに作成し、この情報を (クエリ文字列または Cookie を介して) 応答に入れます。リクエストごとに、ブラウザはjsession_id情報を返します。サーバー側に戻ると、jsession_id をキーとして、セッションを値として持つマップがあります。JSP またはサーブレットは、このオブジェクト内の情報にアクセスできます。

ただし、もちろん、t1あなたの例のような の値は、サーバー側に送信し、セッションに入れて、将来の使用で回復する必要があります。

こちらをご覧ください

于 2012-12-13T10:47:23.210 に答える