關於tomcat升級9.0後URL訪問報404的解決辦法
阿新 • • 發佈:2018-11-13
目 錄
1 前言 3
2 出現問題 3
3 解決辦法及思路 4
4 總結 5
- 前言
在現場環境使用tomat7.0,使用者反饋版本較低,存在一定的安全隱患,故升級到 tomcat 9.0。
2 出現問題
升級到 tomcat 9.0 後文件匯出功能無法使用,報404 錯誤,如下圖
並且經過多人及一個多月的時間處理仍未解決。
3解決辦法及思路
3.1 走過的彎路
最開始懷疑tomat ,後面懷疑 spring ,最後面懷疑tomcat 與 spring 不相容,就差去看tomcat和spring 的原始碼了。
3.2 解決辦法
將請求的URL中的!替換為 / 。
3.3 分析
在檢視日誌時無意間發現在Spring進行IOC時類名與方法名稱之間用 / 分隔,如下圖
而實際請求時 類名與方法名稱之間用 ! 分隔,如下圖
故將 ! 改為 / 後成功訪問
後面在 tomcat 7.0 上將請求地址的類名與方法名稱之間的分隔符改成 / ,也能成功訪問。至於請求地址 類名與方法名稱之間的分隔符 的原理這部分待深入研究,有興趣或知道答案的大牛們可以一起探討與交流。
4 總結
4.1 感悟
深到至極便於淺,淺到至極反而深!
4.2 處理效率
總共花了 1.5天 時間。覺得可以更快速點,最好控制在 24 小時以內解決。
4.3 思考
這次問題關鍵是細節,我相信一個技術水平很一般的人只要夠細心也能解決這個問題;並且這是一個歷史遺留問題,不必要在常用的解決辦法上浪費時間,因為如果像這個一般人第一反應的辦法都能解決的話問題早就解決掉了。