サーブレットContextとサーブレットコンフィグ


ServletContext
1、サーブレットContextとは?
 Webコンテナ(Tomcat)が起動し、Webアプリケーションのロードが完了すると、WebコンテナはすぐにそのWebアプリケーションのサーブレットContextオブジェクトを作成し、現在のWebアプリケーションを表します.各Webアプリケーションには、アプリケーションに関連付けられた名前のサーブレットContextオブジェクトが1つしかなく、Applicationオブジェクトとも呼ばれます.このサーブレットContextオブジェクトは、Webコンテナが閉じたり、Webアプリケーションがコンテナを削除したりするまで、Webアプリケーションの破棄に伴って破棄されます.
2、サーブレットContextの取得方法:
  • は、サーブレットrRequestオブジェクトで定義getサーブレットContext()メソッドにより取得する:requestオブジェクト.getServletContext();
  • GenericServiceletクラスで定義されたgetServiceletContext()メソッドによって取得する(すなわち、GenericServiceletまたはそのサブクラスには、このメソッドがあり、直接呼び出せばよい):getServletContext()   super.getServletContext()
  • サーブレットコンフィグインタフェースで定義getサーブレットContext()メソッドにより、サーブレットコンフィグオブジェクトを取得する.getServletContext();

  • 3、サーブレットContextの役割:
  • MIMEタイプを取得します.MIMEタイプとは何ですか.インターネット通信中に定義されるファイルデータ型8195;ケース:       サーブレットContext servletContext=req.getServletContext();         System.out.println(servletContext.getMimeType("/hello.txt"));//text/plain
  • ドメインオブジェクトとして、データ共有を行います(1)setAttribute(String name,Object value) 2)getAttribute(String name) 3)getAttributeNames():サーブレットContextに格納されているすべての属性名を含むEnumerationオブジェクトを返します.  4)removeAttribute(String name)  5)サーブレットContextオブジェクト範囲:現在のWebアプリケーション
  • 現在のWebApp(Webアプリケーション)にアクセスするリソース 1)String getContextPath():現在のWebアプリケーションの仮想ディレクトリを取得する;  2)String getInitParameter(String name):WebAppプロファイルで一致する初期化パラメータ値を取得します.Webでxmlのweb-app要素のcontext-paramサブ要素はWebApp応用範囲内の初期パラメータを表す.  3)String getInitParameterName():Webに格納されているすべてのオブジェクトを含むEnumerationオブジェクトを返します.xmlのweb-app要素のcontext-paramサブ要素の初期化パラメータ名;  3)RequestDispatcher getRequestDispatcher(String path):転送対象を取得する;
  • サーバ側のファイルシステムリソースにアクセスするwar_exploded\WEB-INF/classes/a.txt     String a = context.getRealPath("/WEB-INF/classes/a.txt");//srcディレクトリでのリソースアクセスwar_exploded\b.txt     String b = context.getRealPath("/b.txt");//Webディレクトリの下でのリソースアクセス、たとえば   //D:ScottWorkSpcaceIDEAWorkSpaceoutartifactsMyDemo_war_exploded\WEB-INF\c.txt     String c = context.getRealPath("/WEB-INF/c.txt");//WEB-INFディレクトリ下のリソースアクセス
  • サーブレットコンフィグの詳細
    1、サーブレットコンフィグオブジェクトとは?
      サーブレット/Jspコンテナがサーブレットタイプのオブジェクトを作成すると、このサーブレットオブジェクトに一意のサーブレットコンフィグオブジェクトが作成されます.サーブレットコンフィグオブジェクトには、サーブレットの初期化パラメータ情報が含まれています.サーブレットのプロファイルでは、1つ以上のinit-paramラベルを使用してサーブレットの初期化パラメータを設定できます.サーブレットが初期化パラメータを構成した後、Webコンテナはサーブレットインスタンスオブジェクトを作成すると、これらの初期化パラメータを自動的にこのサーブレットオブジェクトに対応するサーブレットコンフィグオブジェクトにカプセル化し、サーブレットのinit()メソッドを呼び出すと、サーブレットコンフィグオブジェクトをサーブレットに渡します.さらに,プログラマはサーブレットコンフィグオブジェクトを介して現在のサーブレットの初期化パラメータ情報を得る.
    2、サーブレットコンフィグの常用方法
      1)Enumeration getInitParameterName():ラベルに配置されているすべてのパラメータのパラメータ名  2)String getInitParameter(String name):パラメータ名からパラメータ値 3)サーブレットContext getServertContext():サーブレットContextオブジェクト 4)String getServertName()を取得する
    3、サーブレットコンフィグはwebを取得する.xmlファイルにおけるサーブレット構成の初期化パラメータの例
    web.xmlの定義は次のとおりです.
    
    <servlet>
    	<servlet-name>loginservlet-name>
    	<servlet-class>web.LoginServletservlet-class>
       	
        <init-param>
         		<param-name>maxOnlineparam-name>
         		<param-value>3000param-value>
       	init-param>
    servlet>
    
    <servlet-mapping>
        <servlet-name>loginservlet-name>
        <url-pattern>/loginurl-pattern>
    servlet-mapping>
    

    ≪シミュレーション|Simulation|oem_src≫:コンフィギュレーション・ファイルでWebサイトの最大同時オンライン人数を定義し、サーブレット・コンフィグ・オブジェクトを使用して値を取得します.
    import java.io.IOException;
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    public class LoginServlet extends HttpServlet {
    	// web.xml                 ,  ServletConfig      
    	@Override
    	protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
    		//getServletConfig()      Tomcat       ServletConfig  
    		ServletConfig config = this.getServletConfig().getInitParameter("maxOnline");
    		System.out.println(maxOnline);
    	}
    }