2016-06-27 14 views
0

response.sendRedirectを使用して隠しパラメータを渡す必要があります(場合によっては転送を使用したくありません)。Response.sendRedirect()を使用した隠れたパラメータのための私のメソッドは、それは大丈夫ですか?

私はPAR1 = val1と& PAR2 = val2の&のようなパラメータGET使用したくないので、...私はこのようなセッションオブジェクトを使用しています:?を

session.setAttribute("error_message", "Error: e-mail is null"); 
response.sendRedirect(targetURL); 

のとき "のTargetURL"ロードされた(これはJSPファイルになります)、私は値を読んで、私はそのセッション属性を削除されています。あなたはそれは私が必要とする何の合理的/信頼性のようなものだ

if(session.getAttribute("error_message") != null) {%> 
    <h4><%=session.getAttribute("error_message").toString()%></h4> <% 
    session.removeAttribute("error_message"); 
} 
%> 

と思いますか?パフォーマンスが悪いですか?あなたはそれについてどう思いますか?それを維持するか、そのコードをスラッシュ?

ありがとうございました!

答えて

1

あなたのケースでは、セッションを使用しても問題ありません。 あなたが覚えておく必要があるのは、セッションがスレッドセーフではないことです。同じブラウザウィンドウ内の別のタブが属性を削除すると、ユーザーはエラーになります。

パフォーマンスに悪影響はありません。

URLでデータを渡したくない場合は、response.sendRedirect()を使用している場合は、セッションスコープが適しています。

+0

ありがとう、@アンドリューリベイ! :-) – Ommadawn

+0

ロックを使ってセッションをクエリ/変更する部分をラップするのは合理的でしょうか? – Ommadawn

+0

完全に、セッションスコープはスレッドセーフではありません。よく使用されるのは[同期](https://docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html)メソッド –

関連する問題