/* にグローバル フロント コントローラー サーブレットをマッピングする場合、次のような静的リソースにアクセスすることが困難になります。 CSS、JS、および画像は通常、別のフォルダーに保存されます。この記事では、グローバル フロント コントローラーの機能を維持しながら、これらの静的ファイルへのアクセスを復元するソリューションについて詳しく説明します。
推奨されるアプローチには、次の 2 つの手順が含まれます。
コントローラ サーブレットの URL パターンとして / を使用する代わりに、/pages/ などのより具体的なパスにマッピングします。これにより、静的リソースをコントローラーの範囲から除外できるようになります。
/* をリッスンするフィルターを作成します。このフィルターは、静的リソースへのリクエストのチェーンを透過的に継続し、他のコンテンツのリクエストをコントローラー サーブレットにディスパッチします。
フィルターの doFilter() メソッドで、次のコードを使用します。
HttpServletRequest req = (HttpServletRequest) request; String path = req.getRequestURI().substring(req.getContextPath().length()); if (path.startsWith("/static")) { chain.doFilter(request, response); // Goes to default servlet. } else { request.getRequestDispatcher("/pages" + path).forward(request, response); }
このコードは、リクエストのパスが「/static」(または静的リソースに割り当てられたその他のプレフィックス) で始まるかどうかをチェックします。 true の場合、リクエストは、通常は静的リソース フォルダーにマップされるデフォルトのサーブレットに転送されます。それ以外の場合、リクエストはコントローラー サーブレットにディスパッチされます (*/pages にマッピングされていると仮定します)。
このソリューションでは、静的リソースがコントローラー サーブレットのマッピングから除外されるようにしながら、他のリクエストはコントローラー サーブレットで処理できるようにします。予想通りのコントローラー。これは、グローバル フロント コントローラーの必要性と静的リソースのアクセス可能性のバランスをとる実用的な方法です。
以上が/* にマップされたグローバル フロント コントローラー サーブレットを使用して静的リソースにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。