「/」を使用してdispatcherServiceletのurl-patternがもたらす問題について

1898 ワード

以前はずっと*.doを使っていましたが、絶の*.doは醜いので、「/」を使って配置しました.
   <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

しかし、jpg、js、cssなどの静的ファイルにどのようにアクセスするかという問題があります.
DispatcherServiceletが「*.do」のような接尾辞付きのURLをブロックしている場合、静的リソースにアクセスできないという問題はありません.もしあなたのDispatcherServiceletが"/"をブロックし、RESTスタイルを実現するためにすべてのリクエストをブロックした場合、同時に*.js、*.jpgなどの静的ファイルへのアクセスもブロックされます.私たちはこの問題を解決しなければならない.
 
目的:静的ファイルに正常にアクセスでき、静的ファイル新聞404が見つからないことはできない.
シナリオ1:TomcatのdefaultServiceletをアクティブにして静的ファイルを処理する
<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> 

  
DispatcherServiceletの前に書くには defaultServiceletはまずリクエストをブロックして、リクエストがSpringに入らないようにして、性能が一番いいと思います.
 
Tomcat,Jetty,JBoss,and GlassFishが持つデフォルトのサーブレットの名前--「default」Google App Engine 持参する デフォルトサーブレットの名前--"_ah_default"Resin 持参する デフォルトのサーブレットの名前--「resin-file」WebLogic 持参する デフォルトサーブレットの名前  -- "FileServlet"WebSphere  持参する デフォルトのサーブレットの名前--「SimpleFileサーブレット」 
 他にも2つの解決策があります.http://blog.csdn.net/this_super/article/details/7884383