tomcat の web.xml を構成する場合、サーブレットは比較的重要な問題です。ここでは、サーブレットのいくつかの問題点について説明します。
1 サーブレット
1.1 完全一致
コード例: point_down: <サーブレットマッピング> <サーブレット名>MyServlet</サーブレット名> <url-pattern>/kata/detail.html</url-pattern> <url-pattern>/demo.html</url-pattern> <url-pattern>/テーブル</url-pattern> </サーブレットマッピング> ブラウザに次のURLを入力すると、サーブレットに一致します。 知らせ: さらに、上記のURLの後に、一致する任意のクエリ条件を続けることができます。 リクエスト 1.2 パスマッチング 「/」文字で始まり「/*」で終わる文字列がパスのマッチングに使用されます。 コード例: point_down: <サーブレットマッピング> <サーブレット名>MyServlet</サーブレット名> <url-pattern>*.jsp</url-pattern> <url-pattern>*.アクション</url-pattern> </サーブレットマッピング> パスは /user/ で始まり、パスの残りの部分は何でもかまいません。たとえば、次の URL が一致します。 1.3 サフィックスマッチング 「*.」で始まる文字列はサフィックスの一致に使用されます。 コード例: point_down: <サーブレットマッピング> <サーブレット名>MyServlet</サーブレット名> <url-pattern>*.jsp</url-pattern> <url-pattern>*.アクション</url-pattern> </サーブレットマッピング> すると、拡張子がjspまたはactionのURLリクエストが一致します。たとえば、次のURLが一致します。 注意: パスとサフィックスのマッチングは同時に設定できません 注意: パスと拡張子のマッチングは、次の3つのように同時に設定することはできません。 いくつかの例: point_down:、理解できない場合は、この記事の第3章を読んでください 2 URLパターンにおける
まずは また 3 URLパターンの優先順位の問題 URL が複数のサーブレットの一致ルールに一致する場合、対応するサーブレットは「正確なパス > 最長パス > サフィックスの一致」の優先順位に従って一致します。 例 1: たとえば、servletA の URL パターンは /test で、servletB の URL パターンは /* です。このとき、アクセスする URL が http://localhost/test の場合、コンテナは最初に正確なパスの一致を実行し、/test が servletA と完全に一致することを検出します。この場合、servletB を気にせずに servletA が呼び出されます。 例 2: たとえば、servletA の URL パターンが /test/で、servletB の URL パターンが /test/a/の場合、http://localhost/test/a にアクセスすると、コンテナーは一致するパスが最も長いサーブレット (ここでは servletB) を選択します。 例 3: たとえば、servletA の URL パターンは *.action で、servletB の URL パターンは すると疑問が生じます。 理由は非常に簡単です。tomcat/conf/web.xmlに次の設定があります。 <サーブレットマッピング> <サーブレット名>デフォルト</サーブレット名> <url-パターン>/</url-パターン> </サーブレットマッピング> <!-- JSP サーブレットのマッピング --> <サーブレットマッピング> <サーブレット名>jsp</サーブレット名> <url-pattern>*.jsp</url-pattern> <url-pattern>*.jspx</url-pattern> </サーブレットマッピング> :point_up_2: 4 ルートパス 問題に気付いたかもしれません。つまり、URL パターンが /* の場合、http://localhost:8080/ にアクセスすると 404 が返されますが、http://localhost:8080/index.html にアクセスすると正常に動作します (もちろん、前提として、Spring コンテナーで まず、URL のルート ディレクトリ、つまり / (http://localhost:8080/ など) が何を意味するのかを明確にする必要があります。実験を通じて、/ は非常に特殊であることがわかりました。/* の URL パターンには一致しますが、/ の URL パターンには一致しません。 Tomcat では、/ はデフォルトで defaultservlet に一致しますが、その優先順位はパスの一致よりも低くなります。そのため、サーブレットの URL パターンが /* の場合、/ は defaultservlet ではなく、このサーブレットに一致します。 Tomcat ソース コードにある次のスニペットは私の見解を裏付けています: point_down:
:point_up_2:上記は 翻訳:point_down: リクエスト URI がディレクトリを指している場合、デフォルトのサーブレットはそのディレクトリ内の「ウェルカム ファイル」を検索し、存在する場合は対応するリソース URI を検索して表示します。ウェルカム ファイルが存在しない場合は、デフォルトのサーブレットは、リスト設定の値に応じて、ディレクトリ リストを提供するか (カスタマイズ方法については、デフォルトのサーブレット構成を参照)、404 ステータスを返します。 / が welcome ページにリダイレクトされる理由は、 要約する Tomcat でサーブレット URL パターンを構成する際の問題の詳細な説明については、これで終わりです。Tomcat 構成サーブレットに関する関連コンテンツの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: フロントエンドは画像を遅延ロードする方法を知っている必要があります(3つの方法)
>>: mysql-8.0.19-winx64 のインストール中に問題が発生しました: ディレクトリ 'xxxx\Database\' を作成できません
テーブル内の min-width と max-width プロパティの設定 <テーブル>...
目次1. オペレーティングシステムとは何か2. Linuxの起源3. Linuxの基本機能4. Li...
目次VMware バープスイート1. 仮想マシンイメージとVMwareのインストールと使用2. 仮想...
画像をプルする root@EricZhou-MateBookProX: docker pull je...
Ⅰ. 問題の説明: html+css を使用してシンプルなナビゲーション バーを実装します。 **...
この記事では、Vueで開始時間と終了時間の範囲を照会する方法を参考までに紹介します。具体的な内容は次...
ネットワークポートの公開実際、Docker にはネットワーク ポートの公開に関わる 2 つのパラメー...
Oracle と MySQL の高可用性ソリューションについては、以前からまとめたいと思っていたので...
目次1. DateTimePickerの日付選択範囲は現在時刻とそれ以前です2. DateTimeP...
ページ内にはjs、cssなどの外部ファイルが導入されており、外部ファイルのエンコードが現在のページフ...
この記事では、例を使用して MySQL ビューの管理ビュー操作について説明します。ご参考までに、詳細...
1. コンテナを作成して実行するdocker run -it --rm centos:latest ...
目次1. はじめに2回目の練習2.1 インストールと設定2.2 コアクラスの紹介2.3 使い方は? ...
背景トランザクションについて話すとき、誰もがそれに精通している必要があります。MySQL データベー...
背景次の図に示すように、 react-color を使用してフロントエンド インターフェースのカラー...