在新手配置Spring MVC的時候,感覺都弄好了之后,運行起來卻顯示404錯誤。
網上對出現404的問題不同情況,都有了解決方法,前幾天我也遇到了這個問題,順便把這些問題總結一下。
解決問題最重要的還是根據錯誤信息找到問題所在,才能順利的解決。但是這個404在日志信息中有時候是不顯示錯誤信息的,所以解決起來比較麻煩。
1、
你的Tomcat或者編輯器有問題,這種情況看起來很無語,但是還是有出現的時候,如果更換了Tomcat或者編輯器還是不行,說明問題不在這里。
2、
看看是否在Tomcat啟動的時候會出現找不到DispatherServlet或者xml文件的問題,一般xml找不到的情況是路徑寫的不對,這種情況在新手使用maven的時候可能會出現。對於DispatherServlet,明明是添加了jar包的,但是為何會提示這個錯誤,這個時候可以更換一下別的版本的jar包,現在使用的這個可能有問題,我的問題就是這樣,我用的4.3.5的,不知道是啥時候怎么弄的jar包里的文件都成了java文件,而不是class文件(我有另外的source jar包,里邊才是源代碼),更換了版本就沒問題了。這個問題找了很久才發現,而且兩個編輯器給的錯誤提示方式也不一樣,IDEA里邊在web.xml文件中提示找不到DispatherServlet,DispatherServlet文件顯示紅色,但是啟動Tomcat的時候沒有錯誤,Eclipse里邊web.xml文件不會提示,但是啟動Tomcat的時候提示找不到DispatherServlet。
3、
配置問題,下邊是springmvc配置文件和web.xml最簡單的配置。網上有人遇到的問題是,他把<mvc:annotation-driven />寫在了spring配置文件中,所以沒有起到啟動注解的作用,找不到配置好的controller, 所以最好還是把這兩條寫到一個文件中。 另外使用哪個標簽的時候,別忘了要引入相應的命名空間。
<mvc:annotation-driven /> <context:component-scan base-package="controller"></context:component-scan>
注釋掉的時候使用spring的時候用到的,只配置springMVC可以不用它。
1 <!-- <context-param> 2 <param-name>contextConfigLocation</param-name> 3 <param-value>classpath:spring-*.xml</param-value> 4 </context-param> 5 <listener> 6 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 7 </listener> --> 8 <servlet> 9 <servlet-name>application</servlet-name> 10 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 1 <init-param> 12 <param-name>contextConfigLocation</param-name> 13 <param-value>classpath:spring-servlet.xml</param-value> 14 </init-param> 15 <load-on-startup>1</load-on-startup> 16 </servlet> 17 <servlet-mapping> 18 <servlet-name>application</servlet-name> 19 <url-pattern>/</url-pattern> 20 </servlet-mapping>
這個問題應該不是啥大問題,就是比較膈應,如果上邊的情況都不適用,再討論吧~