20200311 12. サーブレットへのリクエストのマッピング
2805 ワード
12.サーブレットへの要求のマッピング
Webコンテナは、本章で説明するマッピング技術を用いてクライアント要求をサーブレットにマッピングする必要がある(この仕様2.5の以前のバージョンでは、これらのマッピング技術を使用することは、要求ではなく提案として、servletコンテナがクライアント要求をservletにマッピングするためにそれぞれ異なるschemaを有することを可能にする).
12.1 URLパスの使用
クライアント要求を受信すると、ウェブコンテナは、どのWebアプリケーションに転送されるかを決定する.選択したWebアプリケーションは、要求URLの開始に最も長いコンテキストパスを持つ必要があります.サーブレットにマッピングすると、URLマッチングの一部がコンテキストになります.
Webコンテナは、次に、以下に説明するパスマッチングステップを用いてservletを見つけて要求を処理しなければならない.
サーブレットにマッピングするパスは、要求オブジェクトの要求URLからコンテキストとパスパラメータを減算する部分です.以下のURLパスマッピングルールは順番に使用されます.最初の一致を使用して成功し、さらに一致を試みることはありません.コンテナは、servletパスへのリクエストパスの正確な一致を見つけようとします.一致に成功したらservletを選択します. コンテナは、最長パス接頭辞のマッチングを再帰的に試みる.これは、パス区切り記号として URLの最後の部分に拡張子( 最初の3つのルールがservletマッチングを生成しない場合、コンテナは要求リソースに関連するコンテンツを提供しようとします.アプリケーションにdefault servletが定義されている場合は、使用されます.多くのコンテナは、コンテンツを提供するための暗黙的なdefault servletを提供しています.コンテナは、大文字と小文字を区別する文字列を使用して一致する必要があります.
12.2マッピング仕様
Webアプリケーションデプロイメント記述子では、マッピングを定義するために次の構文を使用します.は、 は、 空文字列「」は、アプリケーションのコンテキストルート、すなわち は、 であるため、他の文字列は正確な一致にのみ使用されます.
有効な
12.2.1暗黙的マッピング
コンテナに内部JSPコンテナがある場合、
サーブレットコンテナでは、マッピングの優先順位を表示する限り、他の暗黙的なマッピングを許可します.例えば、
12.2.2サンプルマッピングセット
次のマッピングのセットを見てください.
表12-1マッピングセットの例
Path Pattern
Servlet
/foo/bar/*
servlet1
/baz/*
servlet2
/catalog
servlet3
*.bop
servlet4
次の動作が発生します.
表12-2入力パスのサンプルマッピングへの適用
Incoming Path
Servlet Handling Request
/foo/bar/index.html
servlet1
/foo/bar/index.bop
servlet1
/baz
servlet2
/baz/index.html
servlet2
/catalog
servlet3
/catalog/index.html
“default ” servlet
/catalog/racecar.bop
servlet4
/index.bop
servlet4
Webコンテナは、本章で説明するマッピング技術を用いてクライアント要求をサーブレットにマッピングする必要がある(この仕様2.5の以前のバージョンでは、これらのマッピング技術を使用することは、要求ではなく提案として、servletコンテナがクライアント要求をservletにマッピングするためにそれぞれ異なるschemaを有することを可能にする).
12.1 URLパスの使用
クライアント要求を受信すると、ウェブコンテナは、どのWebアプリケーションに転送されるかを決定する.選択したWebアプリケーションは、要求URLの開始に最も長いコンテキストパスを持つ必要があります.サーブレットにマッピングすると、URLマッチングの一部がコンテキストになります.
Webコンテナは、次に、以下に説明するパスマッチングステップを用いてservletを見つけて要求を処理しなければならない.
サーブレットにマッピングするパスは、要求オブジェクトの要求URLからコンテキストとパスパラメータを減算する部分です.以下のURLパスマッピングルールは順番に使用されます.最初の一致を使用して成功し、さらに一致を試みることはありません.
/
文字を使用して、1つのディレクトリのパスツリーを巡ることによって行われます.最長マッチングは、選択したservletを決定します..jsp
など)が含まれている場合、servletコンテナは、拡張子処理要求のサーブレットとしてビューを一致させる.拡張子は、最後のセクションの最後の.
文字の後に定義されます.12.2マッピング仕様
Webアプリケーションデプロイメント記述子では、マッピングを定義するために次の構文を使用します.
/
文字で始まり、/*
接尾辞で終わる文字列は、パスマッチングのために使用される.*.
から始まる文字列で拡張子マッピングに使用される.http://host:port//
要求形式に正確にマッピングされる特殊なURLモードである.この場合、パス情報は/
であり、servletパスおよびコンテキストパスは空の文字列("")である./
文字の文字列のみを含み、アプリケーションの「default」servletを表す.この場合、servletパスは、要求URLからコンテキストパスを減算し、パス情報はnull
である.有効な
web.xml
(fragmentと注釈から情報が統合された後)に、複数のservletにマッピングされた任意のurl-pattern
が含まれている場合、デプロイメントは失敗します.12.2.1暗黙的マッピング
コンテナに内部JSPコンテナがある場合、
*.jsp
拡張子がそれにマッピングされ、JSPページの要求を実行できます.このマッピングは暗黙的マッピングと呼ばれます.Webアプリケーションが*.jsp
マッピングを定義する場合、その優先度は暗黙的マッピングよりも高い.サーブレットコンテナでは、マッピングの優先順位を表示する限り、他の暗黙的なマッピングを許可します.例えば、
*.shtml
の暗黙的マッピングは、サーバに含まれる機能にマッピングすることができる.12.2.2サンプルマッピングセット
次のマッピングのセットを見てください.
表12-1マッピングセットの例
Path Pattern
Servlet
/foo/bar/*
servlet1
/baz/*
servlet2
/catalog
servlet3
*.bop
servlet4
次の動作が発生します.
表12-2入力パスのサンプルマッピングへの適用
Incoming Path
Servlet Handling Request
/foo/bar/index.html
servlet1
/foo/bar/index.bop
servlet1
/baz
servlet2
/baz/index.html
servlet2
/catalog
servlet3
/catalog/index.html
“default ” servlet
/catalog/racecar.bop
servlet4
/index.bop
servlet4
/catalog/index.html
および/catalog/racecar.bop
の場合、正確に一致しないため、/catalog
にマッピングされたservletは使用されないことに注意してください.