Javaweb---サーブレットContextの再学習

3294 ワード

WEBコンテナは、起動時に、現在のWebアプリケーションを表す対応するサーブレットContextオブジェクトを各WEBアプリケーションに作成します.このオブジェクトは、現在のWebアプリケーションを表すメモリに常駐しています.前の記事で説明したサーブレットコンフィグオブジェクトから、サーブレットコンフィグを介して取得できます.getServiceletContextメソッドは、ServiceletContextオブジェクトを取得します.GenericServiceletはgetServiceletContextを書き換えているのでこのままでもよい.getServiceletContext()を取得します.  1.1つのWEBアプリケーション内のすべてのサーブレットが同一のサーブレットContextオブジェクトを共有するため、サーブレットオブジェクト間ではサーブレットContextオブジェクトによる通信が可能となる.サーブレットContextオブジェクトは、通常、contextドメインオブジェクトとも呼ばれます(これはドメインオブジェクトの1つであり、後で他のいくつかのセッション、page、requestも学習します).≪有効範囲|Operating Range|oem_src≫:Webアプリケーション全体でデータのライフサイクルを共有します.サーバーがWebアプリケーションのロードを開始した後、サーブレットContextオブジェクトを作成すると、ドメインが生成されます.Webアプリケーションがコンテナまたはサーバから削除されて閉じると、Webアプリケーションの破棄ドメインが破棄されます.
 void setAttribute(String,Object);
Object getAttribute(String);
void removeAttribute(String);

2.前のconfigでは、特定のservletの構成情報しか取得できません.各servletで有効な構成情報(web.xml servletラベルの外側にあるcontext-param内の構成情報)を取得する必要がある場合に使用します.servletContextです.関数は前編の使い方と同じです.3.サーブレットの転送を実現
        : 302+Location
         :            

    ***                   .             .**
//demo5      demo6
RequestDispatcher dispatcher = this.getServletContext().getRequestDispatcher("/servlet/Demo6Servlet");
        dispatcher.forward(request, response);

4.リソースファイルをロードファイル名を直接書くと、tomcatのbinディレクトリにこのファイルを探しに行きます.実は現在のプログラムが起動しているディレクトリを探しに行きます.tomcatの下の全ディレクトリを直接書くことは可能ですが、この全ディレクトリの前のものは手書きではなく、サーブレットContextでtomcatのパスを取得します.このような問題を解決するために、サーブレットContextはgetRealPathメソッドを提供し、このメソッドの下位層は、現在のウェブアプリケーションのハードディスクパスを受信する前に接続し、現在のリソースのハードディスクパスを得る.この方法は、パブリケーション環境を変更しても、方法の下層も正しいwebアプリケーションの経路を得ることができて、それによって永遠に正しい資源の経路です
//    webroot    
     this.getServletContext().getRealPath("config.properties")

非サーブレット環境(servlet呼び出しの通常javaクラス)でリソースファイルを読み込む場合、クラスローダでファイルをロードすることでリソースを読み込むことができます.
//config.properties(  src    )               Day03/WEB-INF/classess/  
    Service.class.getClassLoader().getResource("config.properties").getPath()
//config.properties(webroot    )               Day03/WEB-INF/   
// classLoader      Day03/WEB-INF/classess/       ../    
Service.class.getClassLoader().getResource("../config.properties").getPath()