ホームページ >Java >&#&チュートリアル >/* にマップされたグローバル フロント コントローラー サーブレットを使用する場合に静的リソースを提供する方法

/* にマップされたグローバル フロント コントローラー サーブレットを使用する場合に静的リソースを提供する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-18 03:30:09673ブラウズ

How to Serve Static Resources When Using a Global Front Controller Servlet Mapped to /*?

/* にマッピングされたグローバル フロント コントローラー サーブレットを使用した静的リソースへのアクセス

Spring MVC ディスパッチャなどのグローバル フロント コントローラー サーブレットを /* URL パターンにマッピング受信リクエストを処理するための集中制御を提供します。ただし、このマッピングは、CSS ファイル、JavaScript スクリプト、画像などの静的リソースへのアクセスを妨げる可能性があります。

この問題を解決するには、多面的なアプローチが必要です。

  1. コントローラー サーブレットに特定の URL パターンを使用する: コントローラー サーブレットを、次のようなより具体的な URL パターンにマップします。 /ページ/*。これにより、サーブレットは動的コンテンツを対象としたリクエストのみを処理するようになります。
  2. 静的コンテンツを専用フォルダーに配置する: 静的リソースを /static などの別のフォルダーに整理します。これは、他のリクエスト タイプと区別するのに役立ちます。
  3. 静的コンテンツを処理するためのフィルターを実装する: /* URL パターンをリッスンするフィルターを作成します。このフィルタは、静的コンテンツのリクエストをデフォルトのサーブレットに透過的に渡す必要があります。動的処理を目的としたリクエストの場合、フィルターはリクエストをコントローラー サーブレットにディスパッチする必要があります。

フィルターの 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);
}

Thisフィルターを使用すると、ブラウザーのアドレス バーを変更せずに静的リソースを提供できます。さらに、フィルターの初期化パラメーターを使用して、「/static」パスと「/pages」パスをカスタマイズできます。

以上が/* にマップされたグローバル フロント コントローラー サーブレットを使用する場合に静的リソースを提供する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。