この記事の例は、Javaweb プログラム開発において非常に実用的な価値のある Javaweb での静的ファイルの一般的な処理方法をまとめたものです。具体的な方法は次のようにまとめられています。
方法 1: Tomcat の defaultServlet をアクティブにして静的ファイルを処理する
。 web.xml に追加:
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> </servlet-mapping>
注: DispatcherServlet の前に記述し、リクエストが Spring に入らないように、defaultServlet が最初にリクエストをインターセプトする必要があると思います。
Tomcat、Jetty、JBoss、および GlassFish に付属するデフォルトのサーブレットの名前 - 「default」
Google App Engine に付属するデフォルトのサーブレットの名前 - 「_ah_default」
デフォルトのサーブレットの名前樹脂には付属しています - 「resin-file」
WebLogic に付属のデフォルトのサーブレットの名前 - 「FileServlet」
WebSphere に付属のデフォルトのサーブレットの名前 - 「SimpleFileServlet」
方法 2: mvc:resources が提供されますSpring 3.0.4 以降のバージョンでは、メソッド:
<!-- 对静态资源文件的访问 --> <mvc:resources mapping="/images/**" location="/images/" />
説明: /images/** は処理のために ResourceHttpRequestHandler にマップされ、location は静的リソースの場所を指定します。 Web アプリケーションまたは jar パッケージ内で、静的リソースを jar パッケージの中央に圧縮できます。キャッシュ期間は静的リソースを Web キャッシュにできます
方法 3、<mvc:default-servlet-handler/>
<mvc:default-servlet-handler/>
を使用します
「/**」 URL を SimpleUrlHandlerMapping の urlMap に登録し、転送しますHandlerMapping から org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler への静的リソースへのアクセスを処理して返します。
DefaultServletHttpRequestHandler は各サーブレットコンテナのデフォルトサーブレットを使用します。
追加説明: 複数の HandlerMapping 発行の実行順序:
DefaultAnnotationHandlerMapping の順序属性値は: 0
<mvc:default-servlet-handler/>自動登録された SimpleUrlHandlerMapping の order 属性値は: 2147483647
spring は小さい値の order 値を最初に実行します。 a.jpg 画像ファイルにアクセスするときは、まず DefaultAnnotationHandlerMapping を通じてプロセッサを見つけます。a.jpg というアクションがないため、プロセッサが見つからないはずです。あとはorder値の昇順で検索すると、最後のSimpleUrlHandlerMappingが「/**」に一致するので間違いなく一致し、画像に応答することができます。
画像にアクセスするには、マッチングのレイヤーを通過する必要があります。パフォーマンスがどうなっているかわからないですか?
最後に、プラン 2 とプラン 3 について説明します。静的リソースにアクセスするとき、一致する (おおよその) 合計インターセプターがあれば、そのインターセプターが使用されます。インターセプトで権限チェックを実装する場合は、静的ファイルに対するこれらのリクエストを慎重にフィルタリングしてください。
DispatcherServlet が *.do のような URL 接尾辞をインターセプトする場合、上記の問題は存在しません。やはり接尾辞があると便利です。
Javaweb での静的ファイルの一般的な処理方法に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。