web.xml 構造

All lectures for JA purposes
レベル 1 , レッスン 996
使用可能

7.1 web.xml の一般的なスキーマ

web.xml ファイルには、アプリケーション構成情報が保存されます。これは必須の部分ではありませんが、Web アプリケーションを構成するために非常に広く使用されています。

このファイルはWEB-INFフォルダーに存在する必要があります。Tomcat が起動すると、Tomcat の内容が読み取られ、そこに含まれる設定が使用されます。ファイルにエラーが含まれている場合、Tomcat もエラーを表示します。

web.xml の例:



<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
  
  <servlet> <servlet-name>HelloWorld</servlet-name> <servlet-class>HelloServlet</servlet-class> </servlet>
    
 <servlet-mapping> <servlet-name>HelloWorld</servlet-name> <url-pattern>/welcome</url-pattern> </servlet-mapping>
 
 <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list>
  
</web-app>

"HelloWorld"サーブレット名とサーブレット クラスのマッピングは、ここでは緑色で書かれています"HelloServlet"サーブレット名と URL チャンクのマッピングは青で書かれています"HelloWorld""http://localhost/welcome"。したがって、ここでは /welcome パスにアクセスするときに servlet を呼び出す必要があると記載されていますHelloServlet.class

赤色は、要求に応じて提供する必要があるファイルを示しますhttp://localhost/。これはいわゆるウェルカム ページです。ユーザーが Web アプリケーションのルートに対応する名前をブラウザーに入力するだけの場合、index.html.

7.2 サーブレット、サーブレットマッピング

1 つのサーブレットが異なる URL でリクエストを処理できるため、web-xml では、サーブレットとその URL へのマッピングは別々に記述されます。まず、サーブレットを記述し、それぞれに一意の文字列名を付けます。次に、各サーブレットがどの URL にマップされるかを指定します。

web.xml の例:



<web-app>
  
  <servlet> <servlet-name>remoting</servlet-name> <servlet-class>com.codegym.RemotingServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>remoting</servlet-name> <url-pattern>/remoting/*</url-pattern> </servlet-mapping>
 
 <servlet> <servlet-name>restapi</servlet-name> <servlet-class>com.codegym.RestApiServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>restapi</servlet-name> <url-pattern>/api/*</url-pattern> </servlet-mapping>  
 
</web-app>

この例では、2 つのサーブレットが宣言されており、それぞれが異なる URL テンプレートにマップされています。サーブレットは、RemotingServletに送信されるすべてのリクエストを処理します/remoting/*サーブレットは、RestApiServletに送信されるすべてのリクエストを処理します/api/*。サーブレットにはロードからの順序 (load-on-startup パラメータ) もあります。

7.3 サーブレットのオプション

web.xml を使用すると、サーブレットの初期化中にパラメータをサーブレットに渡すことができ、インターフェースを通じてパラメータを使用できるようになりますServletConfig。Web アプリケーション全体のパラメータを設定することもできます。これらのパラメータは、 を通じて利用可能になりますServletContext

web.xml の例:



<web-app>
 <context-param> <description>Server production mode</description> <param-name>productionMode</param-name> <param-value>false</param-value> </context-param> <context-param> <param-name>appPropertiesConfig</param-name> <param-value> classpath:local-app.properties classpath:web-app.properties </param-value> </context-param>
 
 <servlet> <servlet-name>mainservlet</servlet-name> <servlet-class>com.codegym.ApplicationServlet</servlet-class> <init-param> <param-name>application</param-name> <param-value>com.codegym.App</param-value> </init-param> <init-param> <param-name>widgetset</param-name> <param-value>com.codegym.WidgetSet</param-value> </init-param> <init-param> <param-name>ui</param-name> <param-value>com.codegym.AppUI</param-value> </init-param> </servlet>
</web-app>

緑色で強調表示されているコードは、 のパラメータを設定する場所ですServletContext。そのうちの 2 つがあります。

  • productionMode値が false の場合
  • appPropertiesConfig2 つの文字列の配列を使用します。
    • classpath:local-app.properties
    • classpath:web-app.properties

サーブレットのパラメータは青色で示されておりApplicationServlet、次の方法で使用できますServletConfig

  • application値が com.codegym.App の場合
  • widgetset値が com.codegym.WidgetSet の場合
  • ui値が com.codegym.AppUI の場合

7.4 フィルタ、フィルタマッピング

Web アプリケーションには特別な .html が含まれる場合もありますutility servlets - filters。これらは、呼び出しのリダイレクト、承認の確認など、さまざまなサービス タスクを実行します。

web.xml の例:



<web-app>
 
 <servlet> <servlet-name>remoting</servlet-name> <servlet-class>RemotingServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>remoting </servlet-name> <url-pattern>/remoting/*</url-pattern> </servlet-mapping>
 
 <filter> <filter-name>total_filter</filter-name> <filter-class>com.javrush.TotalFilter</filter-class> </filter> <filter-mapping> <filter-name>total_filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
 
</web-app>

リクエストはサーブレットに到達する前にRemotingServlet、フィルタによって処理されますTotalFiler。このフィルターは、Web アプリケーションに送信されるすべてのリクエストをインターセプトするように構成されています。これは、マッピング先の URL テンプレートによって明らかに示唆されています/*

サーブレットとフィルターについては、次の講義で詳しく説明します。

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION