相信之前的教學文章已經可以讓你開始建構自己的 Web Project,不過 JSP 頁面總是需要用到 js、css、jpg、png 等等檔案。當你在撰寫頁面時將它們引入,但實際運行時卻發現這些檔案都出現該訊息: Http Status 404 - Not found.
發生上述錯誤訊息是因為 web.xml 裡面的設定,還記我們在一開始設定了 DispatcherServlet 對應的 url-pattern 為 " / ",如下圖:
因為我們設定 url-pattern 為 " / ",故連我們在 JSP 裡引進的 js、css 檔案都會符合 " / " 的情況進而透過 DispatcherServlet 將 Request 導向對應的 Controller,在這樣的情況下當然無法找到對應的檔案,因此 Server 端回應 404 錯誤訊息。
在這樣的情況下,首先必須思考我們 url-pattern 是否真的需要設定為 " / "?是否可以縮小 DispatcherServlet 處理 Request 的範圍。
當然 Spring 也有考慮到這個問題,在 3.0.? 版之後增加了取靜態資源的設定方法。我們先將靜態檔案擺放到自行設定的路徑,例如我增加了/WebContent/scripts/jquery-1.10.2.min.js ,參考下圖:
靜態檔案加入後,接著修改我們的 Spring 設定檔 ( 延續之前範例設定檔為 /WebContent/WEB-INF/mercury-servlet.xml ),如下圖:
從上面設定檔的內容可以發現,新增加了一個 <mvc:resources /> 標籤,其屬性的意思為該靜態資源對應 ( mapping ) 的路徑 /scripts/**,其靜態檔案實際位置 ( location ) 為 /scripts/,如此一來 Spring 就認得靜態資源的路徑,<mvc:resources /> 可以設定多個,因此你若有其他路徑也可以增加該標籤並加入你需要的 mapping 路徑與 location。除修改 Spring 設定檔之外, JSP 引進靜態資源的寫法也需要跟著修改,修改方式如下圖:
我們在 script src 的屬性部份改用 taglib 取得該靜態資源 <c:url value="" />,如此一來就可以正常的取得我們需要的 js 檔案。其他 Spring Framework 相關教學可以參考本篇整理。
熱門文章
-
Launchd 是設計用來管理系統中的 Process、Application 及 Script,它包含了與 Cron 相同的服務。本文章將要介紹如何透過 Launchd 管理並執行例行性任務於 Mac OS X 上。( 其他 Mac 相關教學可以參考 本篇整理 。If you...
-
之前的文章主要探討的都是一個訊息由一個 Consumer 處理,但若我們需要的是一個訊息同時傳送至所有的 Consumer 的話,我們則需要應用 Publish 與 Subscribe 模式,本篇將討論如何使用這個模式。( 其他 RabbitMQ 相關教學可以參考 本篇整理 )...
-
Jekyll 是一個很方便的網站、部落格產生器,它的功能夠簡潔就是專注在產生一個靜態網站。但也因為這樣,有一些需要動態產生的東西無法透過 Jekyll 直接實現。例如:每當使用者進入頁面,讓網頁產生隨機文章連結。所以,本篇將介紹如何利用 Jekyll 實現隨機文章的功能。( If...
-
本篇針對資料存取採用 Hibernate 與 Spring MVC 達到 CRUD ( 新增、讀取、修改、刪除)功能,DB 方面使用 H2 Data Base。閱讀本篇文章可先參考前一篇 H2 Data Base 設定應該會更有幫助。此外因為資料存取部份複雜,所以會拆成數個部份一...
-
開發 React 應用程式時,比較常遇到的問題就是 bundle.js 或其他檔案太大,導致頁面載入時間過長。但透過 Webpack 與一些優化技巧可以大幅減少整個應用程式大小。因此,本篇將介紹如何利用 Webpack 減少 React 應用程式大小。( If you want ...



