靜態資源到處都是坑!明白原理才能繞過這些坑!
在web.xml檔案的配置中,四種路徑編寫方式優先順序如下圖:
其中b和d都能接收所有請求,僅僅是在優先順序上有區別。
d是優先順序最低的,所以如果乙個路徑有」人」要就不會執行到d,tomcat伺服器(無論什麼伺服器)有乙個預設的請求處理方案:在tomcat伺服器的配置檔案: tomcat8\conf\web.xml中有乙個預設的web配置檔案,其中配置了jsp和default。
都配置了,所以這兩個預設請求處理會在tomcat啟動時進行載入。
從圖中可以看出,jsp配置的url-pattern為*.jsp和*.jspx,優先順序高於/的優先順序,所以當請求jsp頁面時,會由類jspservlet進行處理。
default配置為在請求路徑匹配完其他所有servlet還是沒有匹配到的情況下,請求會被發到default,由defaultservlet進行處理,一般請求的靜態資源,無效路徑等等都會通過defaultservlet進行處理。
而在配置springmvc框架時,一般在web.xml中將dispatcherservlet對映路徑配置成/
這樣配置會覆蓋掉tomcat配置的預設的default,而,dispatcherservlet沒有處理靜態資源的能力,所以會報錯或者需要在springmvc中進行關於靜態資源的配置。
什麼是靜態資源?
css、js、、html等都是靜態資源
不使用springmvc框架分析
不使用springmvc框架,這些靜態資源請求都會由tomcat的預設的default進行處理。
使用了springmvc框架分析
如果配置的dispatcherservlet的對映路徑不為/時,對靜態資源的請求最終會由tomcat的預設配置來處理,所以不影響靜態資源的正常訪問。
如果配置的dispatcherservlet的對映路徑為/時,會覆蓋掉tomcat的預設的default配置,所以需要在springmvc檔案中進行配置,對靜態資源進行放行。
放行靜態資源的三種方式:
spring mvc配置檔案中加入以下內容:
方式二:更加靈活
在springmvc配置檔案中配置
其中,*代表一級目錄,**代表多級目錄。
方式三:修改dispatcherservlet的對映規則
*.do的優先順序高於/,不影響tomcat預設配置的default,所以dispatcherservlet處理不了的會交給tomcat預設default進行處理。
明確:在jsp或html頁面中如果有
,瀏覽器都會自動傳送請求。
一.jsp或者html介面引用js檔案錯誤
這是乙個隱藏很深的坑,編寫script時沒有寫完整,使用360瀏覽器(谷歌核心)測試還不報錯!!
正確編寫方式:
二.在web-inf目錄下的靜態資源只有伺服器能訪問,客戶端無法直接訪問
眾所周知,web-inf是被保護的目錄,不允許客戶端進行訪問,這裡就涉及兩個概念:
請求**和重定向
請求**會間接的由伺服器去訪問web-inf,所以可以訪問,
重定向請求靜態資源屬於客戶端進行請求,所以不能訪問靜態資源.
spring mvc靜態資源放行
1,全部資源放行 2,選擇部分資源放行 以上倆種之前要注意先配置 方式二 在web.xml中放行 方法一 配置前段 放行 console org.springframework.web.servlet.dispatcherservlet contextconfiglocation classpath...
Spring MVC 放行靜態資源
使用spring mvc 放行靜態資源有四種方法 2.使用 3.在web.xml中配置 default 是tomcat的預設servlet的名稱 4.配置dispatchservle的url匹配規則 dispatcherservlet org.springframework.web.servlet....
REST風格下如何放行靜態資源
在配置dispatcherservlet 前端控制器 時,如果把攔截路徑配置成rest風格 即斜槓 則會將靜態資源也一併攔截 比如.css js jpg 為了避免這個情況,可以把攔截路徑設定成 do,action,html等等 springmvc org.springframework.web.se...