Spring MVC程式中得到靜態資源檔案css,js,圖片

來源:互聯網
上載者:User

標籤:

今天在自己重寫項目的時候,發現使用springMVC攔截請求後,擷取不了css和js。通過搜尋找到如下方法,和大家一起分享。

 

轉載:http://www.blogjava.net/fiele/archive/2014/08/24/417283.html

用 Spring MVC 開發應用程式,對於初學者有一個很頭疼的問題,那就是程式資料都已經查詢出來了,但介面樣式仍然十分醜陋,載入不了 css,js,圖片等資源檔。當你在瀏覽器上直接輸入某個css檔案的路徑時,直接得到404錯誤,而路徑肯定沒有錯,其原因就在於在web.xml 中配置了類似如下的 spring servlet:

程式碼

<servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

請注意  <url-pattern>/</url-pattern> 這表示這個servlet 攔截了所有的請求,包括css,js等。所以出現上面描述的情況。如何解決這個css,js等路徑問題呢,有如下幾種解決方案.
1. 使用spring mvc resource 去讀取靜態檔案
比如在 WEN-INF 下建立static 檔案夾,並在 static 檔案夾裡面建立css 檔案夾,然後建立 1.css  檔案.
修改 mvc-dispatcher-servlet.xml 檔案

程式碼

<mvc:resources mapping="/static/**" location="/WEB-INF/static/"/>

這樣配置之後,可以通過 http://your-ip:port/your-app/static/css/1.css 直接存取了。
2. 採用 default servlet
在 web.xml  裡面配置

程式碼

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/static/*</url-pattern>
</servlet-mapping>

這樣做了之後,所有首碼為static 的請求都交給default servlet 去處理。如果你請求  http://your-ip:port/your-app/static/css/1.css ,就表示在 webcontent 目錄下的css檔案夾下的1.css檔案。
3. 通過副檔名進行處理
在 web.xml 裡面配置

程式碼

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.png</url-pattern>
    <url-pattern>*.js</url-pattern>
    <url-pattern>*.css</url-pattern>
</servlet-mapping>

4. 對spring servlet 不用restful 風格。在url 上加上首碼

程式碼

<servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/app</url-pattern>
</servlet-mapping>

這樣做的目的是讓 dispatchservlet 去攔截以/app 開頭的那些 URL,並不攔截css,js等。
5. 對spring servlet 不用restful 風格。在url 上加上尾碼

程式碼

<servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

這樣做的目的是讓 dispatchservlet 只攔截*.do 的url. 並不攔截css,js等。
上面介紹的5種方法,根據情況自己任意選擇一種,現在沒辦法說那種好,那種方法不好,都有可取之處,用在不同的情境而已。

Spring MVC程式中得到靜態資源檔案css,js,圖片

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.