Javaの旅--Web.xml解析

9165 ワード

WindowsのIISは、UIインタフェースでサイトの構成を行う.Linuxの下のほとんどのシステムは、プロファイルを使用して構成する、Javaコンテナ(JBoss/Tomcat/Jetty/WebSphere/WebLogicなど)も例外ではなく、WEB-INFOディレクトリの下に配置されたwebを使用する.xmlは、サイトプロファイルとして使用されます.
本文はインターネットの文章を参考にして、webを勉強して記録します.xmlのロード順序と構成の詳細.
web.xmlロード順序
アプリケーションサーバの起動時web.xmlのロードプロセスは、これらのノードのxmlファイルにおける前後の順序とは関係ないが、WebSphereのようなアプリケーションサーバでは、webを厳格に要求する.xmlのノード順序は、そうでなければ配置に成功しないので、webに従ったほうがいい.xmlの標準フォーマットは、context-param-->listener-->filter-->servletと書きます.
あるいは、IDEのプロンプトに従って、例えば、順序が間違っている場合、IDEには次のようなプロンプトがあります.
The content of element type "web-app"must match "(icon?,display-  name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-  mapping*,session-config?,mime-mapping*,welcome-file-list?,error-page*,taglib*,resource-env-ref*,resource-  ref*,security-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*)".
  • WEBプロジェクトを開始すると、アプリケーションサーバはそのプロファイルweb.xmlを読み、
  • の2つのノードを読みます.
  • 続いて、コンテナはサーブレットContext(コンテキスト)を作成し、このWEBプロジェクトのすべての部分がこのコンテキスト
  • を共有する.
  • コンテナは、をキー値ペアに変換し、サーブレットContext
  • に渡す.
  • コンテナのクラスインスタンスを作成します.すなわち、リスニング
  • を作成します.
  • リスニングではcontextInitialized(サーブレットContextEvent args)初期化メソッドがあります.このメソッドでは、サーブレットContext=サーブレットContextEvent.getService Context();context-paramの値=サーブレットContext.getInitParameter("context-paramのキー");
  • このcontext-paramの値を取得すると、いくつかの操作が可能になります.注意してください.この時点でWEBプロジェクトはまだ完全に起動していません.この動作はすべてのサーブレットよりも早くなります.言い換えれば、この時点でのキー値に対する操作は、WEBプロジェクトが完全に起動する前に実行され、プロジェクトが起動する前にデータベースを開くと、でデータベースの接続方法を設定し、リスニングクラスでデータベースの接続を初期化できます.このリスニングは自分で書いたクラスです.初期化方法のほか、アプリケーションを閉じる前にリソースを解放する方法もあります.例えば、データベース接続の閉じる方法です.
  • クラス構成セクションでは、それらが現れる順序に関連しています.
    filterを例にとると、web.xmlではもちろん複数のfilterを定義できますが、filterに関連する構成セクションの1つはfilter-mappingです.ここでは、同じfilter-nameを持つfilterとfilter-mapping構成セクションでは、filter-mappingがfilterの後に表示されなければなりません.そうしないと、filter-mappingに解析されると、対応するfilter-nameはまだ未定です.義.
    Webコンテナの起動時に各filterを初期化する場合は、filter構成セクションが表示される順序で初期化され、要求リソースが複数のfilter-mappingに一致する場合、filterブロックリソースはfilter-mapping構成セクションが表示される順序でdoFilter()メソッドを順次呼び出す.
    servletはfilterと同様であり、ここでは後述しない.
    たとえば、filterはbeanを使用する必要がありますが、ロード順序は、filterをロードしてspringをロードすると、filterの初期化操作のbeanはnullになります.したがって、フィルタでbeanを使用する場合は、springのロードをListenerに変更できます.
     <listener>
         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
     </listener>

    Web.xmlノード解析

    Webサイトの環境パラメータを設定するために使用
    パラメータの名前を指定すると、パラメータ値を設定するの2つのサブ要素が含まれます.
    ここで設定したパラメータは、servletでgetServiceletContext().getInitParameter("my_param")で取得できます.
    例:
    	<context-param>
    		<param-name>webAppRootKey</param-name>
    		<param-value>privilege.root</param-value>
    	</context-param>
    	<context-param>
    		<param-name>contextConfigLocation</param-name>
    		<param-value>
    			classpath*:/applicationContext*.xml
    			classpath*:/cas-authority.xml
    		</param-value>
    	</context-param>
    	<context-param>
    		<param-name>log4jConfigLocation</param-name>
    		<param-value>/WEB-INF/classes/log4j.xml</param-value>
    	</context-param>
    	<context-param>  
    		<param-name>spring.profiles.default</param-name>  
    		<param-value>dev</param-value>  
    	</context-param> 


    Listenerインタフェースの設定に使用
    その主なサブ要素はであり、Listenerのクラス名を定義するために使用されます.
    例:
     <listener>
         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
     </listener>


    フィルタの関連設定を宣言するために使用
    filterの名前を指定
    filterを定義するクラスの名前
    パラメータを定義するには、パラメータの名前を指定し、パラメータ値を設定する2つのサブ要素があります.
    とともに使用されるのは
    は、2つのサブ要素を含むfilterに対応するURLを定義するために使用されます.
    filterの名前を指定
    filterに対応するURLを指定
    例:
    	<!--          -->
    	<filter>
    		<filter-name>encodingFilter</filter-name>
    		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    		<init-param>
    			<param-name>encoding</param-name>
    			<param-value>UTF-8</param-value>
    		</init-param>
    		<init-param>
    			<param-name>forceEncoding</param-name>
    			<param-value>true</param-value>
    		</init-param>
    	</filter>
    	<filter-mapping>
    		<filter-name>encodingFilter</filter-name>
    		<url-pattern>*.do</url-pattern>
    	</filter-mapping>

     
    servletを宣言するデータには、主に次のサブ要素があります.
    servletの名前を指定
    servletのクラス名を指定
    WebホームのJSPページのフルパスを指定
    パラメータの定義に使用
    とともに使用されるのは
    は、servletに対応するURLを定義するために使用され、2つのサブ要素を含む.
    servletの名前を指定
    servletに対応するURLを指定
    例:
    	<servlet>
    		<servlet-name>springmvc</servlet-name>
    		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>springmvc</servlet-name>
    		<url-pattern>*.do</url-pattern>
    	</servlet-mapping>
    	
    	<!--  dubbo  hessian   -->
    	<servlet>
            <servlet-name>dubbo</servlet-name>
            <servlet-class>com.alibaba.dubbo.remoting.http.servlet.DispatcherServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>dubbo</servlet-name>
            <url-pattern>/hessian/*</url-pattern>
        </servlet-mapping>

    きほんノード
    1、はサイトの説明
    例:伝道、授業、解惑
    2、サイト名の定義
    例:マイサイト
    3、 
    icon要素にはsmall-iconとlarge-iconの2つのサブ要素が含まれており、Webサイトの小さなアイコンと大きなアイコンのパスを指定します.
    /パス/smallicon.gif
    small-icon要素は、Webホームの小さなアイコンのパスを指す必要があります.サイズは16 X 16 pixelですが、画像ファイルはGIFまたはJPEG形式で、拡張子は.gifまたは.jpgでなければなりません.
    /パス/largeicon-jpg
    Large-icon要素は、32 X 32 pixelのサイズのwebホーム内の大きなグラフパスを指す必要がありますが、画像ファイルはGIFまたはJPEGのフォーマットで、拡張子はgifまたはjpgでなければなりません.
    例:
     
     /images/small.gif 
     /images/large.gir 

    4、は、そのサイトが分散処理可能かどうかを指定する
    5、webホームのセッションパラメータを定義するために使用
    サブ要素が含まれます.
    このwebホームのすべてのセッションの有効期限を分単位で定義するために使用されます.
    6、拡張子を定義し、2つのサブ要素を含むMIME Typeを対応付けます.
    拡張子の名前
    MIME形式
    例:
    	<mime-mapping>
    		<extension>csv</extension>
    		<mime-type>application/octet-stream</mime-type>
    	</mime-mapping>

    7、
    エラーコードによるerror-pageの構成
     <error-page>
         <error-code>404</error-code>
         <location>/message.jsp</location>
     </error-page>

    異常クラスによるerror-pageの構成
       <error-page>    
           <exception-type>java.lang.NullException</exception-type>    
           <location>/error.jsp</location>    
       </error-page>  

    8、
    	<welcome-file-list>
    		<welcome-file>index.html</welcome-file>
    		<welcome-file>index.jsp</welcome-file>
    	</welcome-file-list>

    9、JNDIによるホーム利用可能なリソースの定義
    サブ要素は5つあります.
    リソースの説明
    リソース名
    リソースの種類
    リソースは、ApplicationまたはContainerを介して許可されます.
    リソースを共有できるかどうか、ShareableとUnshareableの2つの値があり、デフォルトはShareable
    たとえば、データベース接続プールを構成すると、ここで構成できます.

    JNDI JDBC DataSource of shop
    jdbc/sample_db
    javax.sql.DataSource
    Container