グローバル フロント コントローラー サーブレットを使用した静的リソースへのアクセス
Spring MVC ディスパッチャーをグローバル フロント コントローラー サーブレットとして / にマッピングする場合、通常、次のようなフォルダーに保存されている CSS、JS、画像などの静的リソースへのアクセスに問題が発生する可能性があります。 /res.これは、/ マッピングがすべてのリクエストをキャプチャしてサーブレットにルーティングし、これらの静的ファイルへのアクセスを防止するためです。
これに対処するには、コントローラー サーブレットに対してより具体的な URL パターンを定義できます。 /pages/ など。静的コンテンツは、/static などの別のフォルダーに配置できます。フィルターは、/ でリッスンし、他のリクエストをコントローラー サーブレットにディスパッチしながら、静的コンテンツのリクエストをデフォルトのサーブレットに透過的に渡すように構成できます。
簡略化されたコード サンプルは次のとおりです:
<filter> <filter-name>filter</filter-name> <filter-class>com.example.Filter</filter-class> </filter> <filter-mapping> <filter-name>filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>controller</servlet-name> <servlet-class>com.example.Controller</servlet-class> </servlet> <servlet-mapping> <servlet-name>controller</servlet-name> <url-pattern>/pages/*</url-pattern> </servlet-mapping>
そしてフィルターの 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); }
これこの構成により、残りのリクエストを処理するコントローラー サーブレットの機能を中断することなく、CSS や JS などの静的リソースにアクセスできるようになります。さらに、フィルターを使用すると、静的ファイルへのアクセスがブラウザーの観点から完全に透過的になります。
以上がSpring MVC でグローバル フロント コントローラー サーブレットを使用するときに静的リソースにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。