首页 > 编程笔记 > Java笔记 阅读:6

Spring MVC是什么,Spring MVC框架简介(新手必看)

Spring MVC 是一种基于 Java 的、实现了 MVC 设计模型的请求驱动类型的轻量级 Web 框架,属于 Spring FrameWork 的后续产品,已经融合在 Spring Web Flow 里面。

Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。在使用 Spring 进行 Web 开发时,可以选择使用 Spring MVC 框架或集成其他 MVC 开发框架,如 Struts1(现在一般不用)、Struts2 等。

Spring MVC 已经成为目前主流的 MVC 框架,并且随着 Spring 新版本的发布,全面超越 Struts2,成为优秀的 MVC 框架。

它通过一套注解,让一个简单的Java类成为处理请求的控制器,而无须实现任何接口,同时它还支持RESTful编程风格的请求。

Spring MVC的优势

优势 描述
清晰的角色划分 框架中的各个角色如下:
  • 前端控制器(Dispatcher Servlet);
  • 请求到处理器映射(Handler Mapping);
  • 处理器适配器(Handler Adapter);
  • 视图解析器(View Resolver);
  • 处理器或页面控制器(Controller);
  • 验证器(Validator);
  • 命令对象(Command 请求参数绑定到的对象);
  • 表单对象(Form Object 提供给表单展示和提交到的对象)。
分工明确,扩展灵活 分工明确,而且扩展点相当灵活,很容易扩展。
命令对象 命令对象就是一个 POJO,无须继承框架特定 API,可以使用命令对象直接作为业务对象。
无缝集成 和 Spring 其他框架无缝集成,是其他 Web 框架所不具备的。
可适配 通过 Handler Adapter 可以支持任意的类作为处理器。
可定制性 Handler Mapping、View Resolver 等能够非常简单地定制。
数据验证、格式化、绑定机制 功能强大的数据验证、格式化、绑定机制。
单元测试 利用 Spring 提供的 Mock 对象能够非常简单地进行 Web 层单元测试。
本地化、主题支持 本地化、主题的解析,使我们更容易进行国际化和主题的切换。
JSP标签库 强大的 JSP 标签库,使 JSP 编写更容易。

另外,还有 RESTful 风格的支持、简单的文件上传、约定大于配置的契约式编程支持、基于注解的零配置支持等。

Spring MVC和Struts2的优略分析

它们的共同点如下:
它们的区别有以下几点:

Spring MVC工作流程

要把 Spring MVC 流程图搞明白,首先需要知道 6 个组件。

1) DispatcherServlet(中央控制器)

DispatcherServlet 是核心组件。用户在浏览器输入 URL,发起请求,首先会到达 DispatcherServlet,由它来调用其他组件配合工作的完成。DispatcherServlet 的存在大大降低了组件之间的耦合性。

2) HandlerMapping(处理器映射器)

HandlerMapping记录 URL 与处理器的映射,方式有注解、XML配置等。

3) HandLer(Controller,处理器)

HandLer是后端控制器(通俗一点就是 Controller 层所写的业务代码),对用户的请求进行处理。

4) HandlerAdapter(处理器适配器)

通过 HandlerAdapter 对处理器进行处理,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行处理。

5) ViewResolver(视图解析器)

ViewResolver 负责解析 View(视图),并进行渲染(数据填充),将处理结果通过页面展示给用户。

6) View(视图)

View 是一个接口,实现类支持不同的 View 类型(JSP、FreeMarker、Velocity)。

一般情况下,需要通过页面标签或者页面模板技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面。

Spring MVC 典型的工作流程如下图所示:


具体说明如下:

相关文章