6

getservletcontext() を直接呼び出すことも、この req.getsession().getservletcontext() のようにすることもできます。

2つの違いと、どちらを使用する必要がありますか? どちらを使用し、もう一方を使用しないかに基づくシナリオはありますか?

ちなみに、私はWebモジュール2.5を使用しています

4

2 に答える 2

9

2つの違いは何ですか

両者に違いはなく、同じものです。

getServletContext()直接呼び出すことができるメソッドは、コードが を拡張するクラスにある場合のみHttpServletです。これは、HttpServlet基本クラスにこのメソッドが定義されているためです (実際には拡張するGenericServletクラスでHttpServlet)。

このセッションが属するServletContextreq.getSession().getServletContext() is same as the one returned above.HttpSession ServletContext` によって返されます。contains a reference to the

どちらを使用すればよいですか?どちらを使用し、もう一方を使用しないかに基づくシナリオはありますか?

コードがサーブレット クラスにある限り、両方を呼び出すことができるので、何でも使用できます。

(仮説として) サーブレットからカスタム クラスのメソッドを呼び出し、セッション オブジェクトをメソッドに渡して、セッション内のデータを処理するとします。このカスタム クラスはサーブレットを拡張しません。ServletContextこのカスタム クラスの への参照が必要です。セッションへの参照があるため、メソッドを使用して ServletContext にアクセスできますsession.getServletContext()

これが明確であることを願っています。

于 2012-09-16T17:04:11.237 に答える
-1

セッション変数は 1 つのブラウザーに対してのみ保存され、コンテキスト変数は 1 つのセッション内のすべてのブラウザーで使用できます。

したがって、ユーザーが 1 つのブラウザーのみを使用する場合 (ほとんどの場合)、それらの間に違いはありませんが、1 つのセッションで異なるブラウザーから作業したい場合は、Contextを使用することをお勧めします。

于 2014-02-13T00:16:37.137 に答える