私はタイトルをここにフレーズする方法を正確には分かりません。そのために、私は答えを探すためにどうやってどうやって行くのか本当に分かりません。Javaにリクエストコンテキストがありますか?
私はリクエストを処理するjavaサーブレットエンジンを持っています。我々はdoGetメソッドの要求を持っていると言う:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//set up user data
//do whatever the user requested
SomeClass c = new SomeClass();
c.doSomething();
}
今のdoSomethingで、私は要求を行ったユーザがアクセスできるようにしたいです。これにより
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//set up user data
MyUserObj userObj = new MyUserObj();
userObj.setId('123');
//do whatever the user requested
SomeClass c = new SomeClass(userObj);
c.doSomething();
}
が、私はMyUserObjのインスタンスへのアクセスを持って、それがさらに必要に応じて一緒に渡すことができます。今、私は、Javaオブジェクトを作成し、私は必要な場所に渡すことでそれをやっています。
これは不快です。 asp.net MVC3で(私は現在、それを学んでいる、私はJavaを学び始めた後に始まったが、これは本当に便利だと私はどのようにJavaでそれをやっていたか再考させた)私は、例えば、現在のアイテムを格納することができますこのようなスレッド:HttpContext.Current.Items.Add("myId", "123")
。 HttpContext
は、私がオブジェクトの周りを回らなくても他の機能で利用できます。
オブジェクトをパラメータとして渡さずに、要求ごとにいくつかの変数を設定する(またはMyUserObject
を後でアクセスするように設定する)方法はありますか?
これはすでによくある質問ですが、正しい方法で私を指差してください。私はそれをどのようにフレーズするかわかりませんでした。
私はあなたのタイトルを編集する自由を取った。それが良いかどうかを確認してください。 – Bozho
私は明示的にそれを渡しています。暗黙の状態と依存関係は保守性の点で悪いです。 Springのようなフレームワークは、これを明示的に行うことで定型文の一部を取り除き、混乱させる助けとなるはずです。 – millimoose
私の質問を理解していれば、あなたのタイトルの編集が私の元のタイトルよりも良いと信じています:) – Two13