1

HttpSessionまたはHttpServletRequestまたはHttpServletResponseオブジェクトを処理する 1 つの繰り返しタスクがあるとします。この処理は、HttpSession から一部のデータを抽象化するか、HttpServletRequest/HttpServletResponse で一部の属性を設定/取得する場合があります。

ここで、アイデアの一例を挙げます。セッションから現在ログインしている UserId が必要です。そのために、Util クラスの 1 つで 1 つの Util メソッドを作成しています。

public static Integer getCurrentLoggedInUserId(HttpSession session)
{
    // here I will process session object and get first User object and
    //after that I will get id from that User Object. This is one repeated task in my app.
}

ダウンロード ファイルの 2 番目の例。

public static void downloadFile(HttpSrvletResponse response)
{
    // here I will set some attribues/parameters in response for download file.
}

今私の質問は、これを行うことに対するスレッドの安全性ですか? セッション/リクエスト/レスポンス オブジェクトをコントローラ/サーブレットから Util クラスに渡すことをお勧めしますか? そうでない場合、この種の繰り返しタスクの解決策は何ですか?

前もって感謝します。

4

2 に答える 2

0

はい。Utilクラスに状態がない場合、これはスレッドセーフになります。

通常、これは行われません。理想的には、サーブレットのみが要求/応答オブジェクトについて認識している必要があるためです。

リクエスト/レスポンス オブジェクトのみに作用するユーティリティ クラスを作成している場合は、たとえばリクエスト オブジェクトをラップしてから作用するラッパー クラスを作成することを検討してください。

この方法では、リクエストごとに新しいラッパーを作成する際に、スレッド セーフの問題が発生しません。

于 2013-09-09T07:20:07.723 に答える