静的コンテンツを提供するためのサーブレット マッピングのカスタマイズ
背景:
Web アプリケーションをデプロイする場合コンテナーが異なると、静的コンテンツ処理を処理するデフォルトのサーブレットにバリエーションが発生する可能性があります。これにより、必要な URL 構造との競合が発生する可能性があります。
サーブレット要件:
この問題に対処するには、次の特性を持つカスタム サーブレットが必要です。
マッピングに関する考慮事項:
目的の URL 構造を実現するには (詳細については、
<servlet-mapping> <servlet-name>main</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/static/*</url-pattern> </servlet-mapping>
提案された解決策:
要件を満たす外部サーブレットは利用可能ですが、より簡単なアプローチが考案されています。 。コンテンツ ファイルを拡張子によってデフォルトのサーブレットにマッピングし、その他すべてを「myAppServlet」という名前のカスタム サーブレットにマッピングすることで、目的の機能を実現できます。結果のマッピングは次のようになります:
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.png</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>myAppServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
利点:
このアプローチにより、静的コンテンツ (画像、CSS など) のリクエストがデフォルトで確実に処理されます。他のすべてのリクエストはカスタム サーブレットにルーティングされます。 Jetty コンテナと Tomcat コンテナの両方でシームレスに動作します。
以上が静的コンテンツを効率的に提供するためにサーブレット マッピングをカスタマイズするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。