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\' を作成できません
この記事では、フォームの隠しテキストを表示するためのJavaScriptの具体的なコードを参考までに...
Linux col コマンドLinux の col コマンドは制御文字をフィルタリングするために使用...
HTML にはデータ属性が含まれていることがよくあります。これらは HTML5 のカスタム属性です。...
1. Centos7をダウンロードするダウンロードアドレス: https://mirrors.tun...
この記事では、参考までに、簡単な虫眼鏡効果を実現するためのVueの具体的なコードを紹介します。具体的...
システムド: CentOS 7のサービスsystemctlスクリプトは、/usr/lib/syste...
序文データベースのデータを表示すると、文字化けした文字が表示されることがあります。実際、どのようなデ...
Docker はプロセスを中核としてシステムリソースを分離する管理ツールです。分離は、オペレーティン...
Linux では、ファイルが作成されると、そのファイルの所有者はファイルを作成したユーザーになります...
目次まず、package.jsonを設定します次にwebpackツールをインストールしますwebpa...
この記事では、WeChatアプレットのウォーターフォールフローページングスクロールロードを実装するた...
目次1. 共有ロックと排他ロック2. 意図ロック3. レコードロック4. ギャップロック5. ネクス...
目次1. a タグを使用して PDF をプレビューまたはダウンロードします。書き方は、携帯電話でクリ...
序文CSS を使用して点線を生成するのは、フロントエンド開発者にとっては簡単です。一般的に、これを実...
方法1: .bashrcまたは.bash_profileファイルを変更するこれは、ホーム ディレクト...