如何你的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"