1. 程式人生 > >SpringMVC啟動tomcat時URL請求不會進入Controller,導致404錯誤

SpringMVC啟動tomcat時URL請求不會進入Controller,導致404錯誤

先貼出測試類的整體結構:
測試類的結構

這裡寫圖片描述
目的很明顯:
在dispatcher-servlet.xml中設定註解方式,通過註解讓url請求進入不同的頁面.
例如要訪問WEB-INF/page/second.jsp.在啟動tomcat後(主頁正常),url處輸出請求second(通過註解方式進行請求),結果是404,也就是常見的路徑錯誤.利用上次的路徑錯誤檢查辦法,把jar包匯入,web.xml的配置檔案要有Dispatcher,listener,同時這兩個檔案需要的是dispatcher-servlet.xml和applicationContext.xml.配置好dispatcher-servlet.xml:
這裡寫圖片描述


但我的applicationContext.xml沒有進行配置:
這裡寫圖片描述
此時啟動tomcat訪問second:
這裡寫圖片描述
錯誤變成了500,根據錯誤的description: The server encountered an unexpected condition that prevented it from fulfilling the request.=伺服器遇到了一個意外情況,阻止它完成請求。
!!!!!!!!蒼了個天,終於弄好了:
這裡寫圖片描述
下面說下怎麼弄好的:

錯誤:java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config

注意,是NoClassDefFoundError,這是在執行時找不到類或者這個類被廢棄了才會出現的錯誤.不像ClassNotFoundException是在編譯時就會發生的錯誤,即編譯時沒有找到類.(都與classpath有關).根據錯誤,沒有找到類 javax/servlet/jsp/jstl/core/Config.這個錯誤一般是缺少jstl和standed類,那麼通過dependency引入:這裡寫圖片描述
結果依舊:
這裡寫圖片描述
包也引入了,為什麼還是沒有找到jstl和standed這兩個類呢...

那麼就是執行時了,執行時沒有找到這兩個包.tomcat的工作目錄是在war上,執行時自然是找工作輸出目錄下的WEB-INF/lib下的包,也就是:
這裡寫圖片描述


這個裡面的lib沒有所需要的jstl和standed.

既然如此,
這裡寫圖片描述
把1處的包新增到2處,reimport下,重新執行輸入second,結果出來了:
這裡寫圖片描述
注:這裡我並沒有貼出Controller類,因為我所知道的在Controller類中能出錯的也就是RequestMapping(value=”“)中的值與返回值的錯誤,其他的可能的在Controller中的錯誤還沒有碰到.除此之外,dispatcher-servlet.xml的配置也是很普通(還是寫一下吧):
這裡寫圖片描述
所以這個只是面對jar包沒有導...