getservletcontext() を直接呼び出すことも、この req.getsession().getservletcontext() のようにすることもできます。
2つの違いと、どちらを使用する必要がありますか? どちらを使用し、もう一方を使用しないかに基づくシナリオはありますか?
ちなみに、私はWebモジュール2.5を使用しています
2つの違いは何ですか
両者に違いはなく、同じものです。
getServletContext()
直接呼び出すことができるメソッドは、コードが を拡張するクラスにある場合のみHttpServlet
です。これは、HttpServlet
基本クラスにこのメソッドが定義されているためです (実際には拡張するGenericServlet
クラスでHttpServlet
)。
このセッションが属するServletContext
req.getSession().getServletContext() is same as the one returned above.
HttpSession ServletContext` によって返されます。contains a reference to the
どちらを使用すればよいですか?どちらを使用し、もう一方を使用しないかに基づくシナリオはありますか?
コードがサーブレット クラスにある限り、両方を呼び出すことができるので、何でも使用できます。
(仮説として) サーブレットからカスタム クラスのメソッドを呼び出し、セッション オブジェクトをメソッドに渡して、セッション内のデータを処理するとします。このカスタム クラスはサーブレットを拡張しません。ServletContext
このカスタム クラスの への参照が必要です。セッションへの参照があるため、メソッドを使用して ServletContext にアクセスできますsession.getServletContext()
。
これが明確であることを願っています。
セッション変数は 1 つのブラウザーに対してのみ保存され、コンテキスト変数は 1 つのセッション内のすべてのブラウザーで使用できます。
したがって、ユーザーが 1 つのブラウザーのみを使用する場合 (ほとんどの場合)、それらの間に違いはありませんが、1 つのセッションで異なるブラウザーから作業したい場合は、Contextを使用することをお勧めします。