1.1、概述

是一种基于Java实现MVC设计模型的请求驱动类型的轻量级Web框架,属于Spring框架的后续产品。SpringMVC已经成为目前最主流的MVC框架之一,并且随着Spring 3.0的发布,全面超越Struts2,成为最优秀的MVC框架。
它通过一套注解,让一个简单的Java类成为处理请求的控制器,而无须实现任何接口。而我们原来写Servlet,必须要实现Servlet接口或者继承HttpServlet,这是规范我们必须得实现这个接口。而SpringMVC通过一套注解就可以让一个简单的类变成Servlet处理请求,而不用做任何的实现和继承。
01-SpringMVC概述 - 图1
SpringMVC的特点:

  • 轻量级,简单易学
  • 高效 , 基于请求响应的MVC框架
  • 与Spring兼容性好,无缝结合
  • 约定优于配置
  • 功能强大:RESTful、数据验证、格式化、本地化、主题等
  • 简洁灵活

pringMVC框架围绕DispatcherServlet设计。DispatcherServlet的作用是将请求分发到不同的处理器。从Spring 2.5开始,使用Java 5或者以上版本的用户可以采用基于注解的controller声明方式。SpringMVC框架像许多其他MVC框架一样,以请求为驱动,围绕一个中心Servlet分派请求及提供其他功能。

1.2、SpringMVC请求响应流程

01-SpringMVC概述 - 图2

  • 1、用户向服务器发送请求,请求被SpringMVC的前端控制器DispatcherServlet截获。
  • 2、DispatcherServlet对请求URL进行解析,得到URI。然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关对象,包括Handler对象以及Handler对象对应的拦截器,并将这些对象封装到一个处理器执行链对象当中返回。
  • 3、DispatcherServlet根据获得的Handler,选择一个合适的HandlerAdapter处理器适配器。HandlerAdapter用于处理多种Handler,调用Handler实际处理请求的方法。
  • 4、提取请求中的模型数据,开始执行Handler。在填充Handler的入参过程中,根据配置,Spring将做一些额外的工作。如:
  • 消息转换:将请求消息转换成一个对象,将对象转换为指定的响应信息。
  • 数据转换:对请求消息进行数据转换,如String转换成Integer等。
  • 数据格式化:对请求信息进行数据格式化,如将字符串转换成格式化数字或格式化日期等。
  • 数据验证:验证数据的有效性,验证结果存储到BindingResult或Error中。
  • 5、Handler执行完成后,向DispatcherServlet返回一个ModelAndView对象,ModelAndView对象中包含视图名和模型。
  • 6、根据返回的ModelAndView对象,选择一个合适的ViewResolver返回给DispatcherServlet。
  • 7、然后ViewResolver会结合Model和View来渲染视图。
  • 8、将视图渲染结果返回给客户端。

用户向服务器发送请求,请求被DispatherServlet拦截,DispatcherServlet对请求的URL进行解析,得到URI。然后根据URI,调用处理器映射器HandlerMapping获取到该Handler配置的所有对象,并将这些对象封装到一个处理器执行链对象中并返回。前端控制器DispatcherServlet根据获得的Handler,找一个合适的处理器适配器HandlerAdapter,处理器适配器用于处理多种Handler,调用Handler实际处理请求的方法。Handler执行完后,会向前端控制器DispatcherServlet返回一个ModelAndView对象,ModelAndView对象中包含视图名和模型。根据返回的ModelAndView对象,找一个合适的ViewResolver进行解析,将View返回给DispatcherServlet,最终将视图渲染结果返回给浏览器。

1.3、组件说明

  • 前端控制器 DispatcherServlet
  • 作用:接收请求,响应结果,相当于转发器,中央处理器。
  • 用户请求到达前端控制器,它就相当于MVC模式中的C,DispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,DispatcherServlet的存在降低了组件之间的耦合性。
  • 处理器映射器 HandlerMapping
  • 作用:根据请求的url查找Handler
  • HandlerMapping负责根据用户请求找到Handler即处理器,SpringMVC提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。
  • 处理器适配器 HandlerAdapter
  • 作用:按照特定规则 (HandlerAdapter要求的规则) 去执行Handler
  • 通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。
  • 处理器 Handler
  • Handler是继DispatcherServlet前端控制器的后端控制器(Controller),在DispatcherServlet的控制下Handler对具体的用户请求进行处理。
  • 由于Handler涉及到具体的用户业务请求,所以一般情况需要我们根据业务需求开发Handler。
  • 视图解析器 ViewResolver
  • 作用:进行视图解析,根据逻辑视图名解析成真正的视图。
  • ViewResolver负责将处理结果生成View视图,ViewResolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。
  • 一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由工程师根据业务需求开发具体的页面。