第一个SpringMVC项目的曲折之路
前言: 笔者怎么也想不到被一个服务器和客户端错误折磨了将近1个小时,后来回头发现有些错误确实是粗心所造成的,希望对有同样问题的你有所帮助
Error1: 内部服务器错误
在我按照别人的博客尝试去搭建第一个SpringMVC项目的时候,一切进行地很顺利,知道我部署完成按下运行键时开始了痛苦的一个小时,一开始项目报以下错误:
java.lang.ClassNotFoundException:org.springframework.web.servlet.DispatcherServlet
报错原因时找不到SpringMVC的核心类:DispatcherServlet
先去找依赖是否导入成功:
依赖确实导入了,但是为什么找不到DispatcherServlet类呢?后来我看到有人回答:可能是项目没有导入对于的jar包,导入对于jar包后,确实不会报服务器内部错误了,DispathcerServlet类也成功导入。具体操作如下:
ctrl+shift+alt+s打开项目结构,按以下步骤进行操作:
Eroor2:客户端404
本来以为添加对应的依赖后就能成功解决问题了,好家伙后面又紧接着来404错误,这里就不放错误图片了,只是简单的几个小细节需要注意一下:
1.web.xml中的servlet匹配请求路径:
<!-- / 匹配所有请求:不包括 .jsp -->
<!-- /* 匹配所有请求,包括 .jsp -->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
若请求路径为"/*"会出现404错误
2.springmvc-servlet.xml中的配置细节
1.视图解析器的解析前缀确保路径正确
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--解析前缀 -->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--解析后缀 -->
<property name="suffix" value=".jsp"/>
</bean>
一开始我的解析前为"/WEB-INF/jsp",少写一个斜杠导致不会到jsp目录下寻找对应的jsp文件,这里也需要注意.
2.注册的bean id需要加"/"
<!--这个bean id需要带一个斜杠代表跳转的页面,作用类似与@RequestMapping("/hello") -->
<bean id="/hello" class="com.hang.controller.HelloController"/>
没有加"/"导致我一直无法找到对应资源。