如何你的DispatcherServlet拦截"*.do"这样的有后缀的URL,就不存在访问不到静态资源的问题。
若是你的DispatcherServlet拦截"/",为了实现REST风格,拦截了全部的请求,那么同时对*.js,*.jpg等静态文件的访问也就被拦截了。
咱们要解决这个问题。 css
目的:能够正常访问静态文件,不能够找不到静态文件报404。app
方案一:激活Tomcat的defaultServlet来处理静态文件性能
Xml代码 url
<servlet-mapping>spa
<servlet-name>default</servlet-name>资源
<url-pattern>*.jpg</url-pattern>servlet
</servlet-mapping>配置
<servlet-mapping>file
<servlet-name>default</servlet-name>map
<url-pattern>*.js</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>*.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的前面, 让defaultServlet先拦截请求,这样请求就不会进入Spring了,我想性能是最好的吧。
Tomcat, Jetty, JBoss, and GlassFish 自带的默认Servlet的名字 -- "default" Google App Engine 自带的默认Servlet的名字 -- "_ah_default" Resin 自带的默认Servlet的名字 -- "resin-file" WebLogic自带的默认Servlet的名字 -- "FileServlet" WebSphere 自带的默认Servlet的名字 -- "SimpleFileServlet"