北京动力节点 www.bjpowernode.com
1
SpringMVC5 框架讲义
第1章SpringMVC 概述
1.1SpringMVC 简介
SpringMVC 也叫 Spring web mvc。是 Spring 框架的一部分,是在 Spring3.0 后发布的。
1.2 SpringMVC 的优点
1.2.1 基于 MVC 架构
基于 MVC 架构,功能分工明确。解耦合。
1.2.2 容易理解,上手快,使用简单
就可以开发一个注解的 SpringMVC 项目,SpringMVC 也是轻量级的,jar 很小。不依
赖的特定的接口和类。
1.2.3 作为 Spring 框架一部分,能够使用 Spring 的 IOC 和 AOP
方便整合 Strtus,MyBatis,Hiberate,JPA 等其他框架。
1.2.4 SpringMVC 强化注解的使用
在 Controller, Service, Dao 都可以使用注解。方便灵活。使用@Controller 创建处理器对
象,@Service 创建业务对象,@Autowired 或者@Resource 在控制器类中注入 Service,在
Service 类中注入 Dao。
北京动力节点 www.bjpowernode.com
3
1) 向服务器发送 HTTP 请求,请求被前端控制器 DispatcherServlet 捕获。
2) DispatcherServlet 根据<servlet-name>中的配置对请求的 URL 进行解析,得到请求资源标
识符(URI)。然后根据该 URI,调用 HandlerMapping 获得该 Handler 配置的所有相关的对
象(包括 Handler 对象以及 Handler 对象对应的拦截器),最后以 HandlerExecutionChain 对
象的形式返回。
3) DispatcherServlet 根据获得的 Handler,选择一个合适的 HandlerAdapter。
4) 提取 Request 中的模型数据,填充 Handler 入参,开始执行 Handler(Controller)。在填充
Handler 的入参过程中,根据你的配置,Spring 将帮你做一些额外的工作:
HttpMessageConveter:将请求消息(如 Json、xml 等数据)转换成一个对象,将对象转换为
指定的响应信息。
数据转换:对请求消息进行数据转换。如 String 转换成 Integer、Double 等。
数据格式化:对请求消息进行数据格式化。如将字符串转换成格式化数字或格式化日期等。
数据验证:验证数据的有效性(长度、格式等),验证结果存储到 BindingResult 或 Error 中。
5) Handler(Controller)执行完成后,向 DispatcherServlet 返回一个 ModelAndView 对象。
6) 根据返回的 ModelAndView,选择一个适合的 ViewResolver(必须是已经注册到 Spring 容
器中的 ViewResolver)返回给 DispatcherServlet。
7) ViewResolver 结合 Model 和 View,来渲染视图。
8) 视图负责将渲染结果返回给客户端
1.5基于注解的 SpringMVC 程序
所谓 SpringMVC 的注解式开发是指,在代码中通过对类与方法的注解,便可完成处理
器在 springmvc 容器的注册。注解式开发是重点。
项目案例功能:用户提交一个请求,服务端处理器在接收到这个请求后,给出一条欢迎
信息,在响应页面中显示该信息。
创建步骤:
1)新建 maven_web 项目
北京动力节点 www.bjpowernode.com
4
2)添加依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
3)删除 web.xml 文件重新添加,因为自动生成的 web.xml 文件版本太低了。
4)在 web.xml 文件中注册 SpringMvc 框架。因为 web 的请求都是由 Servlet 来进行处理
的,而 SpringMVC 的核心处理器就是一个 DispatcherServlet,它负责接收客户端的请求,并
根据请求的路径分派给对应的 action(控制器)进行处理,处理结束后依然由核心处理器
DispatcherServlet 进行响应返回。
中央调度器的全限定性类名在导入的 Jar 文件 spring-webmvc-5.2.5.RELEASE.jar 的第一
个包 org.springframework.web.servlet 下可找到。
<servlet>
<servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.s