十一、Spring MVCの静的資源に対する解析

2582 ワード

シナリオ1:TomcatのdefaultServiceletをアクティブにして静的ファイルを処理する
  
      default
      *.jpg
  
  
      default
      *.js
  
  
     default
     *.css
   
  • は、複数のファイルを構成し、各ファイルを1つ構成します.DispatcherServletの前に書いてdefaultServletが先にブロックされるようにすると、これはSpringには入らないので、性能が一番いいと思います.
  • Tomcat,Jetty,JBoss,and GlassFishデフォルトサーブレットの名前--「default」
  • Google App Engineデフォルトサーブレットの名前「_ah_default」
  • Resinデフォルトサーブレットの名前--「resin-file」
  • WebLogicデフォルトサーブレットの名前--「Fileサーブレット」
  • *WebSphereデフォルトサーブレットの名前--「SimpleFileサーブレット」
    シナリオ2:spring 3.0.4以降のバージョンではmvc:resourcesが提供されます
     
     
    
  • /images/**は、ResourceHttpRequestHandlerにマッピングする処理を行い、locationは静的リソースの場所を指定する.Webアプリケーションのルートディレクトリの下、jarパケットの中で、静的リソースをjarパケットに圧縮することができます.Cache-periodは、静的リソースをweb cache
  • にすることができる.
  • 次のエラーが発生した場合は、が構成されていない可能性があります.エラーWARNING: No mapping found for HTTP request with URI [/mvc/user/findUser/lisi/770] in DispatcherServlet with name 'springMVC'
  • 要素を使用して、SimpleUrlHandlerMapingのurlMapにmappingのURI pattern値をkey、ResourceHttpRequestHandlerをvalueとして登録することで、静的リソースへのアクセスをHandlerMappingからResourceHttpRequestHandlerに巧みに転送して処理して返すので、classpathディレクトリをサポートし、JArパッケージ内の静的リソースへのアクセスさらに注意すべき点は、SimpleUrlHandlerMappingにdefaultHandlerを設定しないことである.static uriのdefaultHandlerがResourceHttpRequestHandlerなので、
  • シナリオ3、使用
    
    
    
    
  • は「/**」urlをSimpleUrlHandlerMappingのurlMapに登録し、静的リソースへのアクセスをHandlerMappingからorgに転送する.springframework.web.servlet.resource.DefaultServeretHttpRequestHandlerは処理して戻る.DefaultServeretHttpRequestHandlerが使用するのは、個々のServertコンテナ独自のデフォルトのServeretである.
  • 補足説明:複数のHandlerMappingの実行順序の問題:
  • D e f a ultAnnotationHandlerMappingのorder属性値は、0
  • です.
  • 自動登録SimpleUrlHandlerMappingのorder属性値は、2147483646
  • です.
  • 自動登録SimpleUrlHandlerMappingのorder属性値は、2147483647
  • です.
  • springはorder値が小さいことを先に実行します.a.jpgピクチャファイルにアクセスするときは、まずD e f a ultAnnotationHandlerMappingでプロセッサを探します.きっと見つからないに違いありません.a.jpgというActionはありません.さらにorder値の昇順で探すと、最後のSimpleUrlHandlerMappingは「/**」に一致するので、必ず一致して、画像に応答します.