探索SpringMVC4中靜態資源的訪問鏈路

2021-09-02 19:15:38 字數 976 閱讀 2569

問題由來:有時一些簡單系統服務,不必用到很多jar包,於是自己封裝servlet來處理所有的請求,但是@webservlet(name="test", urlpatterns="/")會對專案中的靜態資源進行攔截,這是我不樂意看到的,緩然回顧過往springmvc4專案中,卻並沒有明顯使用mvc:resources標籤進行靜態資源處理,也沒有配置其他servlet對靜態資源進行放行,於是對springmvc4中靜態資源的訪問鏈路進行了探索之路。

既然springmvc亦是基於servlet,傳統的我們都有配置web.xml的習慣,找到spring配置的servlet:

根據對servlet的理解,springmvc將所有請求【包括靜態資源】進行了接管。

​​​​​​​       開始原始碼除錯探索。dispatcherservlet想必大家上課都聽得耳朵起繭了,熟悉的同學可以直接在dodispatch方法上定位;當然基於對servlet的理解,在其父類frameworkservlet可以找到doget,dopost方法。打上斷點走一遍,對大體脈絡進行觀察,其他有些方法不了解沒關係,注意自己關注重點是:靜態資源,於是重點關注是否有頁面啊,字尾相關的,再者對一些可能是判斷檢測的方法點進去瞧瞧。

思考為什麼?springmvc沿用了tomcat的靜態資源配置,在handler進行相關處理,故能夠正常訪問到靜態資源。

再回想很久以前,剛使用tomcat用的很爽的時候,是否一直忽略了一點,為什麼加網域名稱+埠+專案名+靜態檔名就能訪問到???這是因為:tomcat也有基於servlet的配置,找到tomcat物理路徑,點開conf,你會發現乙個web.xml,再進去檢視,恍然大悟~~~~

springmvc4整合POI匯出Excel的坑

專案中使用springmvc4.1.3 poi實現檔案上傳 controller層 上面 省略service與處理excel的row與cell的過程 springmvc.xml的配置 文字轉換器部分 錯誤的 text plain charset utf 8 所以在springmvc的文字轉換器中加入...

springmvc4開發學習 第四講

資料的回顯 提交後,如果出現錯誤,資料回到剛才提交的頁面中。pojo資料回顯方法 1.springmvc預設對pojo資料進行回顯。pojo資料傳入controller方法後,springmvc自動將pojo資料放到request域,key等於pojo型別 首字母小寫 使用 modelattribu...

spring mvc 中靜態資源404 302錯誤

2019 3 22補充 在新的專案中也偶爾遇到資源被攔截的情況 前提我已經設定了各種靜態資源不被攔截的措施 至今仍然沒能找到具體原因,所以在後面的專案採用了下面的dispatcher策略,只有 manager 開頭的請求會走springmvc,其他請求使用預設的分發排程策略。在ssm專案中,已經為靜...