ホームページ > Java > &#&チュートリアル > /* にマップされたグローバル フロント コントローラー サーブレットを使用して静的リソースにアクセスするにはどうすればよいですか?

/* にマップされたグローバル フロント コントローラー サーブレットを使用して静的リソースにアクセスするにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-08 14:22:10
オリジナル
359 人が閲覧しました

How Can I Access Static Resources with a Global Front Controller Servlet Mapped to /*?

/* のグローバル フロント コントローラー サーブレット: 静的リソース アクセスの解決

/* にグローバル フロント コントローラー サーブレットをマッピングする場合、次のような静的リソースにアクセスすることが困難になります。 CSS、JS、および画像は通常、別のフォルダーに保存されます。この記事では、グローバル フロント コントローラーの機能を維持しながら、これらの静的ファイルへのアクセスを復元するソリューションについて詳しく説明します。

推奨されるアプローチには、次の 2 つの手順が含まれます。

1.コントローラ サーブレットを特定のパスにマッピングする

コントローラ サーブレットの URL パターンとして / を使用する代わりに、/pages/ などのより具体的なパスにマッピングします。これにより、静的リソースをコントローラーの範囲から除外できるようになります。

2.静的コンテンツ用のフィルターを実装する

/* をリッスンするフィルターを作成します。このフィルターは、静的リソースへのリクエストのチェーンを透過的に継続し、他のコンテンツのリクエストをコントローラー サーブレットにディスパッチします。

フィルターの 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート