之前一直使用*.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?
如果你的DispatcherServlet攔截"*.do"這樣的有後綴的URL,就不存在訪問不到靜態資源的問題。
如果你的DispatcherServlet攔截"/",為了實現REST風格,攔截了所有的請求,那麼同時對*.js,*.jpg等靜態檔案的訪問也就被攔截了。
我們要解決這個問題。
目的:可以正常訪問靜態檔案,不可以找不到靜態檔案報404。
方案一:啟用Tomcat的defaultServlet來處理靜態檔案
<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了,我想效能是最好的吧。