1. 程式人生 > >解決使用SpringMVC時,css、js、image等靜態資源無法載入的問題

解決使用SpringMVC時,css、js、image等靜態資源無法載入的問題

問題:在使用SpringMVC框架時,配置web.xml檔案時,springDispatcherServlet的配置如下

    <servlet>
        <servlet-name>springDispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 配置Spring mvc下的配置檔案的位置和名稱 -->
<init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>

可以看到servlet過濾的是所有的請求url,因此當瀏覽器在訪問css、js、image等靜態資源時也需要通過驗證是否已經有相關的對映,如果沒有則無法訪問到(有時可能會覺得是路徑配置不對,但是你會發現無論怎麼改路徑都訪問不到),比如你在controller裡註解了一個請求的 url,那麼你就可以訪問到你想獲取的資源或者頁面,但是靜態資源時沒有註解的,所以當你在頁面上使用css或者引入js檔案時就無法訪問到。

解決辦法:新增預設的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>*.png</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
        <servlet-name>default</servlet-name> 
        <url-pattern>*.gif</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>*.ico</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
        <servlet-name>default</servlet-name> 
        <url-pattern>*.js</url-pattern> 
    </servlet-mapping> 

將你所需要訪問靜態資源添以萬用字元的形式加到web.xml的servlet-mapping中,就可以輕鬆地訪問到你精心設計的js和css了。