ServletContext は、Web アプリケーションのサーブレット ビューを表示するサーブレットの最大のインターフェイスであり、ServletContext インスタンスは「getServletContext()」メソッドを通じて取得されます。
#この記事では、ServletContext の役割、そのメソッド、およびその使用法を紹介します。
推奨コース: Java チュートリアル 。
各アプリケーションには、それに関連付けられた ServletContext オブジェクトがあります。コンテナが複数の仮想マシンに分散されている場合、Web アプリケーションは、分散されている各仮想マシン上に ServletContext オブジェクトを持ちます。 ServletContext インスタンス。デフォルトでは、ServletContext は分散されず、1 つの仮想マシン上にのみ存在します。
ServletContext は正式にはサーブレット コンテキストと呼ばれます。サーバーはプロジェクトごとにオブジェクト、つまり ServletContext オブジェクトを作成します。このオブジェクトはグローバルに一意であり、プロジェクト内のすべてのサーブレットによって共有されます。したがって、これはグローバル アプリケーション共有オブジェクトと呼ばれます。
ServletContext: 現在の Web アプリケーションを表します (非常に重要)
WEB コンテナが開始されると、各 WEB アプリケーションに対応する ServletContext オブジェクトが作成されます。現在の Web アプリケーション。
ServletConfig オブジェクトは、ServletContext オブジェクトへの参照を維持します。サーブレットを作成するとき、開発者は、ServletConfig.getServletContext メソッドを通じて ServletContext オブジェクトを取得できます。WEB アプリケーション内のすべてのサーブレットは同じ ServletContext オブジェクトを共有するため、 , Servlet オブジェクト間の通信は、ServletContext オブジェクトを通じて実現できます。
ServletContext オブジェクトは通常、コンテキスト ドメイン オブジェクトとも呼ばれます。
ServletContext のアプリケーション:
コンテキスト内で一般的に使用されるメソッドは次のとおりです:
void setAttribute(String,Object);
Object getAttribute(String );
void deleteAttribute(String);
1. ドメイン オブジェクトとして、データは Web アプリケーション全体で共有できます。
ドメイン オブジェクト: 可視範囲内でデータを共有するために使用されるオブジェクト
スコープ: Web アプリケーション スコープ全体でデータを共有
ライフ サイクル: サーバーの起動時 ServletContext の後Web アプリケーションがロードされた後にオブジェクトが作成され、ドメインが生成されます。 Web アプリケーションがコンテナーから削除されるか、サーバーがシャットダウンされると、Web アプリケーション
の破棄とともにドメインも破棄されます。
2. WEB アプリケーションの初期化パラメータを取得する
最初の段落では、
ここで関係するいくつかの概念を混同しないでください。
リクエスト パラメータ パラメータ --- ブラウザによって送信されたリクエスト内のパラメータ情報 初期化パラメータ initparameter --- サーブレットまたは基本の web.xml 内ServletContext 設定の初期化に含まれるパラメータ ドメイン属性 --- 4 つの主要なスコープでアクセスされるキーと値のペア
コード例:
web.xml では、Web 全体です。アプリケーションは初期化パラメータ(ユーザー名、パスワード)を追加します。コードの場所は次のとおりです。
package com.vae.servlet; import java.io.IOException; import java.util.Enumeration; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ServletTest03 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletContext context = this.getServletContext(); // 得到上下文对象 // 获取单个的Context里面的初始化参数 String value1 = context.getInitParameter("username"); String value2 = context.getInitParameter("password"); System.out.println(value1 + ";" + value2); System.out.println(); // 一次性获取Context里所有的初始化参数 Enumeration enumeration = context.getInitParameterNames(); while (enumeration.hasMoreElements()) { String name = (String) enumeration.nextElement(); String value = context.getInitParameter(name); System.out.println(name + ";" + value); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
上記のコードからわかるように、context.getInitParameter() メソッドを通じて初期化パラメータを取得できます。
操作効果は次のとおりです:
以上がサーブレットコンテキストとはの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。