10. SpringMVC框架概述

1、SpringMVC 概述

springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。
springmvc是一个基于mvc的web层框架,方便前后端数据的传输.
Spring MVC 拥有控制器,接收外部请求,解析参数传给服务层.

2、SpringMVC运行流程

springmvc 系统技术架构图 简述springmvc框架_spring

步骤:

  1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获;
  2. 前端控制器DispatcherServlet接收请求后,调用处理器映射HandlerMapping。

处理器映射器根据请求的url找到处理该请求的处理器Handler(即Controller),将处理器Handler返回给前端控制器DispatcherServlet。

  1. DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter。 在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作:
    HttpMessageConveter: 将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息
    数据转换:对请求消息进行数据转换。如String转换成Integer、Double等
    数据格式化:对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等
    数据验证: 验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中
  2. Handler(自己的控制器)执行完成后,向DispatcherServlet 返回一个ModelAndView对象;
  3. 根据返回的ModelAndView,选择一个适合的ViewResolver(必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet ;
  4. ViewResolver 结合Model和View,来渲染视图
  5. 将渲染结果返回给客户端。

3、SpringMVC 组件

  • **DispatcherServlet:**Spring中提供了org.springframework.web.servlet.DispatcherServlet类,它从HttpServlet继承而来,它就是Spring MVC中的前端控制器(Front controller)。
  • **HandlerMapping:**DispatcherServlet自己并不处理请求,而是将请求交给页面控制器。那么在DispatcherServlet中如何选择正确的页面控制器呢?这件事情就交给HandlerMapping来做了,经过了HandlerMapping处理之后,DispatcherServlet就知道要将请求交给哪个页面控制器来处理了。
  • **HandlerAdapter:**经过了HandlerMapping处理之后,DispatcherServlet就获取到了处理器,但是处理器有多种,为了方便调用,DispatcherServlet将这些处理器包装成处理器适配器HandlerAdapter,HandlerAdapter调用真正的处理器的功能处理方法,完成功能处理;并返回一个ModelAndView对象(包含模型数据、逻辑视图名)。
  • **ModelAndView:**DispatcherServlet取得了ModelAndView之后,需要将把逻辑视图名解析为具体的View,比如jsp视图,pdf视图等,这个解析过程由ViewResolver来完成。
  • **ViewResolver:**ViewResolver将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术。
    Resolver将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术。
  • **View:**DispatcherServlet通过ViewResolver取得了具体的view之后,就需要将model中的数据渲染到视图上,最终DispatcherServlet将渲染的结果响应到客户端。