1. 程式人生 > >總結springmvc訪問靜態資源的三種方式

總結springmvc訪問靜態資源的三種方式

   前不久發現自己使用springmvc框架做專案時,總是發現有些靜態資源載入不到,然後自己就去百度了一波,現在趁還記得,趕快寫出來

最重要的一點寫前面,springmvc中的的DispatcherServlet的url對映地址一定要注意

web.xml

<servlet>  
    <servlet-name>springmvc</servlet-name>  
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
    <load-on-startup>1</load-on-startup>  
 </servlet>  
 <servlet-mapping>  
        <servlet-name>springmvc</servlet-name>  
        <<url-pattern>/</url-pattern>  
</servlet-mapping>  
這個url對映地址一定要是一個/,如果它是一個/* 它會把不管什麼請求都給攔截掉,並且在controller返回時把返回的jsp頁面再次攔截,一旦DispatcherServlet中

裡面沒有對應的對映,那麼它就會報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>  
<servlet-mapping>  
    <servlet-name>default</servlet-name>  
    <url-pattern>*.html</url-pattern>  
</servlet-mapping>
使用這種方式的話,你必須要把這段配置寫在DispatcherServlet配置的前面,並且向這種servlet你可以自己寫多個,想處理什麼型別的

靜態資源,就把那種型別填上去

第二種是通過在springmvc.xml中配<mvc:default-servlet-handler/>

後面框架會把它轉到使用就是各個 Servlet 容器自己的預設 Servlet中來處理靜態資源

第三種是通過<mvc:resources> 來配置,自己感覺這種方法還是挺便捷的

<!-- 配置靜態資源的處理方式 -->
	<mvc:resources location="/css/" mapping="/css/**" />
	<mvc:resources location="/js/" mapping="/js/**" />
	<!-- 處理webapp下面的靜態資源 -->
	<mvc:resources location="/WEB-INF/" mapping="/**.html" />
用法挺簡單的,location是指訪問的靜態資源在webapp目錄下哪個資料夾下或者就是webapp目錄下,

並且這個配置你還能直接訪問web-inf目錄下面的靜態資源,知識在配置location是把web-info目錄加上就行了

mapping是指對映,是指你訪問的是在哪個路徑下什麼型別的靜態資源,只需要在該目錄下加上檔案型別就好了,這裡要特意說下

檔案型別前面的那個*號是兩個,不是一個!