在新手配置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>
这个问题应该不是啥大问题,就是比较膈应,如果上边的情况都不适用,再讨论吧~