1
2
3
4
5
6
7
8
9
10
<code><</code><code>servlet</code><code>></code>
<code> </code><code><</code><code>servlet-name</code><code>>dispatcherServlet</</code><code>servlet-name</code><code>></code>
<code> </code><code><</code><code>servlet-class</code><code>>org.springframework.web.servlet.DispatcherServlet</</code><code>servlet-class</code><code>></code>
<code> </code><code><</code><code>load-on-startup</code><code>>1</</code><code>load-on-startup</code><code>></code>
<code> </code><code></</code><code>servlet</code><code>></code>
<code> </code><code><</code><code>servlet-mapping</code><code>></code>
<code> </code><code><</code><code>url-pattern</code><code>>/</</code><code>url-pattern</code><code>></code>
<code> </code><code></</code><code>servlet-mapping</code><code>></code>
但是帶來的問題是如何通路到靜态的檔案,如jpg,js,css?
如果你的DispatcherServlet攔截"*.do"這樣的有字尾的URL,就不存在通路不到靜态資源的問題。
如果你的DispatcherServlet攔截"/",為了實作REST風格,攔截了所有的請求,那麼同時對*.js,*.jpg等靜态檔案的通路也就被攔截了。
我們要解決這個問題。
目的:可以正常通路靜态檔案,不可以找不到靜态檔案報404。
方案一:激活Tomcat的defaultServlet來處理靜态檔案
11
12
<code><</code><code>servlet-mapping</code><code>> </code>
<code> </code><code><</code><code>servlet-name</code><code>>default</</code><code>servlet-name</code><code>> </code>
<code> </code><code><</code><code>url-pattern</code><code>>*.jpg</</code><code>url-pattern</code><code>> </code>
<code></</code><code>servlet-mapping</code><code>> </code>
<code><</code><code>servlet-mapping</code><code>> </code>
<code> </code><code><</code><code>servlet-name</code><code>>default</</code><code>servlet-name</code><code>> </code>
<code> </code><code><</code><code>url-pattern</code><code>>*.js</</code><code>url-pattern</code><code>> </code>
<code><</code><code>servlet-mapping</code><code>> </code>
<code> </code><code><</code><code>servlet-name</code><code>>default</</code><code>servlet-name</code><code>> </code>
<code> </code><code><</code><code>url-pattern</code><code>>*.css</</code><code>url-pattern</code><code>> </code>
<code></</code><code>servlet-mapping</code><code>></code>
要寫在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"
==============================================================================
本文轉自被遺忘的部落格園部落格,原文連結:http://www.cnblogs.com/rollenholt/archive/2012/12/26/2834209.html,如需轉載請自行聯系原作者