IDEA下用Tomcat正常啓動Spring MVC項目,但把war包放入webapps下卻訪問404

IDEA下用Tomcat正常啓動Spring MVC項目,但把war包放入webapps下卻訪問404

**問題描述:**如題,自己的問題非常具有特殊性…
出錯原因:

  1. 混淆了IDEA下配置的Application Context與直接部署在webapps下的項目的url的相互關係
  2. 誤寫了攔截器的Response方法

具體過程:
在這裏插入圖片描述
在IDEA下配置的tomcat的這個Application context對生成的war是沒有關係的,圖中是war exploded,war也是一樣的。但是如果我們用IDEA來啓動項目,確實通過url訪問到的就是我們配置後的url。

在用IDEA啓動項目後,war包並沒有部署到了tomcat的webapps,而是直接在項目想生成了target,那麼IDEA肯定是除了“告訴”tomcat你要deploy這個war包還有修改某些配置文件,至於修改了什麼下面再講。

如果直接把war包部署在webapps下,那麼url就是 “域名/<war包的名字>”。

而如果這樣,我也就不會一直報404了,中間經過了很多嘗試都不奏效,最後還是學長幫我找出了問題所在(超級感謝)。

httpServletResponse.sendRedirect(httpServletRequest.getContextPath() + "/login");

如上是正確寫法…而我自己寫的時候並沒有去獲取contextPath,而是直接用了配置在IDEA中的Application Context。所以矛盾就出現了,也就出現瞭如題的問題描述,在IDEA下Application Context就是我寫死在重定向中的url,就不會有問題,而通過war包放入webapps下的項目,它的Application Context是war包的名字,那麼我重定向再去定那個寫死的url自然就是404了。

說完了問題的病根和解決方法,我們還是希望部署在webapps下面的war對應的Application Context的是我們希望的那個,所以就要找到怎麼修改。

好吧…暫時還沒找到怎麼修改…
可能需要二級url的真的不多吧😭

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章