在新手配置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可以不用它。
<!-- <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> -->
<servlet>
<servlet-name>application</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>application</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
这个问题应该不是啥大问题,就是比较膈应,如果上边的情况都不适用,再讨论吧~