這篇文章主要為大家詳細介紹了Spring MVC訪問靜態文件的相關資料,具有一定的參考價值,有興趣的小伙伴們可以參考一下
如何你的DispatcherServlet攔截"*. do"這樣的有後綴的URL,就不存在無法存取靜態資源的問題。
如果你的DispatcherServlet攔截"/",為了實現REST風格,攔截了所有的請求,那麼同時對*.js,*.jpg等靜態檔案的存取也就被攔截了。
我們要解決這個問題。
目的:可以正常存取靜態文件,不可以找不到靜態文件封包404。
方案一:啟動Tomcat的defaultServlet來處理靜態檔案
Xml程式碼
<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的名字-- "_ah_default"
Resin 自帶的 默認Servlet的名字-- "resin-file"
WebLogic 自帶的 默認Servlet的名字 -- "FileServlet"
方案二:
在spring3.0.4以後版本提供了mvc:resources , 使用方法:
Xml程式碼
<!-- 对静态资源文件的访问 --> <mvc:resources mapping="/images/**" location="/images/" />
如果出現下面的錯誤,可能是沒有設定463d7d566f84e66ad507872587b9c14c的原因。
報錯WARNING: No mapping found for HTTP request with URI [/mvc/user/findUser/lisi/770] in DispatcherServlet with name 'springMVC'
#使用ae9dd2c5a9423cfe10a2c9b55f390dd1
Xml程式碼
<mvc:default-servlet-handler/>
DefaultAnnotationHandlerMapping的order屬性值是:0
##086fb3e3d1f6011780ed880c229bdc50自動註冊的 SimpleUrlHandlerMapping的order屬性值是: 2147483646
7ea4b1506262239595c16a77e7a712b1自動註冊
以上是Spring MVC存取靜態文件的詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!