[java] JSPページでのrequest.setAttributeの使用



Answers

フィルサクレの返事は正しかったですが、セッションはちょうどその地獄のために使用すべきではありません。 ユーザーのログインなど、セッションの存続期間中実際に生きる必要のある値にのみ使用してください。 セッションを過度に使用して、特にコレクションを扱うときや、ユーザーが前回訪問したページに戻るときに、前回の訪問時の値がまだ残っていることがわかった場合、セッションを過度に使用して問題が発生するのが一般的です。 スマートプログラムは可能な限り変数の範囲を最小限に抑えますが、悪いのはセッションを使いすぎてしまいます。

Question

JSPページでrequest.setAttributeを使用し、次にHTML SubmitでServletで同じリクエスト属性を取得できますか?




間違っていれば私を訂正してください...

あなたは1ページ→2ページ→3ページを横断すると思います。

ページ1のsetAttributeを使用して、getAttributeを使用してページ2で取得した値を使用してリクエストオブジェクトに値を設定し、同じリクエストオブジェクトで何かを設定してページ3で取得しようとすると、 JSPを作成した要求、およびJSPの送信時に生成される要求はまったく異なる要求であり、最初のものに置かれた属性は2番目の要求で使用できません。

私はこのような何かが2ページで失敗することを意味する:

同じことがページ1の場合にはうまくいきました:

だから私はPhillによって提案された2つの選択肢のどちらかを進める必要があると思う。




ただし、pageContext属性を使用してそれを行うことができます:

JSPでは:

<form action="Enter.do">
    <button type="SUBMIT" id="btnSubmit" name="btnSubmit">SUBMIT</button>
</form>
<% String s="opportunity";
pageContext.setAttribute("opp", s, PageContext.APPLICATION_SCOPE); %>

サーブレット( "Enter.do" url-patternにリンクされています):

String s=(String) request.getServletContext().getAttribute("opp");

SESSION_SCOPEのようなAPPLICATION_SCOPE以外のスコープもあります。 APPLICATION_SCOPEは、ServletContext属性に使用されます。




Related