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\' を作成できません
MySQL バージョン 5.5 および 5.6 を標的とする Riddle 脆弱性により、中間者攻撃...
長い間、リソースの制約により、使用できるフォントが限られていたため、Web サイトの開発は妨げられて...
アプリケーションをコンテナ化した後、Docker コンテナを起動すると、デフォルトで root ユー...
ナビゲーションバーの作成:技術要件: CS HTMLタグ達成目的:ナビゲーションバーメニューの作成コ...
<br />2 年前に PPK が投稿した素晴らしいブログ記事では、contains()...
Docker に Tomcat をインストールする場合、大きなファイルをダウンロードするときなど、場...
SSH は Secure Shell の略で、安全な伝送プロトコルです。Ubuntu クライアントは...
Navicat がエクスポートしたデータはインポートできません。最後に、MySQLコマンドのインポー...
noscript の定義と使用法noscript 要素は、スクリプトが実行されない場合の代替コンテン...
1. 基本的なテキスト要素を使用してコンテンツをマークアップするまず表示効果を見てみましょう:対応す...
目次既存のイメージからイメージを更新します。イメージを最初から構築する: Docker イメージ リ...
目次1. はじめに: 2. プロトタイプチェーン継承: 3. コンストラクタ継承の借用(オブジェクト...
さらに、ブログ プログラムで構築された記事 Web サイトは常にブログのように見え、カスタマイズでき...
カーソルの作成まず、MySql でデータ テーブルを作成します。 存在しない場合はテーブルを作成 `...
目次複数の条件文複数属性オブジェクトスイッチステートメントを置き換えるデフォルトパラメータとデストラ...