五 靜態資源訪問

2022-07-11 02:54:08 字數 1694 閱讀 2766

springmvc專案裡, 若在jsp檔案的相同目錄下建立靜態檔案(html, css, js, img等), 在瀏覽器中直接訪問這些資源是不能像jsp檔案一樣訪問到的:

這是因為, 原本在tomcat的全域性配置檔案中, 是有乙個預設servlet(全域性servlet)可以來處理關於靜態資源的請求的, url-pattern是 / :

所以普通的servlet專案可以通過這個servlet來訪問到靜態資源, 但在springmvc中, 我們配置了 dispatcherservlet, 其url-pattern也是 /, 就覆蓋了原來的 default servlet:

而 dispatcherservlet 這個servlet在接收到請求後, 只會去找controller, 而不能處理靜態資源請求. 這就導致了預設情況下springmvc不能處理靜態資源請求.

為解決這個問題, 一般有以下三種解決方案:

比如將 / 修改為 *.action 或 *.do 等, 這樣就可以使得 tomcat 的全域性 servlet 繼續工作從而以此處理靜態資源的請求:

但是如此, 原來能正常訪問的 servlet 就不能正常訪問了:

這是因為, 我們修改了專案的前端控制器, 只有請求以 .action 結尾才會被處理, 所以需要修改請求方式:

顯然這樣比較麻煩, 所以有了其他解決方案.

在 mvc.xml 中追加配置: 

由此, 我們可以按原來的方式順利訪問 servlet 和靜態資源:

http://.../html/a.html  --->  訪問 /dir/a.html

http://.../html/page/b.html  --->  訪問 /dir/page/b.html

如下例所示:

配置 mvc:resources:

訪問url及結果:

按照這個邏輯, 我們可以把html檔案, css檔案, js檔案等放置到相應的目錄下, 並按照相應的規則訪問到其靜態資源, 從而優化專案的檔案結構.

springMVC訪問靜態資源

web.xml springmvcservlet name org.springframework.web.servlet.dispatcherservletservlet class contextconfiglocationparam name classpath config spring s...

SpringMVC 靜態資源訪問

首先要談在使用web層框架時,都會配置乙個 而 的url pattern有以下幾種 1.攔截所有 jsp js png 全攔截 不建議使用 2.action do 攔截以 action 或者以 do 結尾的請求 3.攔截所有,不包含jsp 包含js png css 建議使用 因此,一般情況下都會使用...

express訪問靜態資源

dirname 表示當前檔案所在的目錄的絕對路徑 filename 表示當前檔案的絕對路徑 module.filename filename 等價 process.cwd 返回執行當前指令碼的工作目錄的路徑 process.chdir 改變工作目錄 const express require exp...