📖SpringMVC框架核心类和数据流转过程

发布: 2016-12-09
热度: 47
趋势: 47
权重: 0
🎯

SpringMVC框架是围绕DispatcherServlet(前端控制器)展开的,本文描述SpringMVC的优点、各个核心类(角色)作用,并说明用户请求数据到最终视图返回完整的数据传输过程

框架简介

SpringMVC 框架通过实现 Model-View-Controller(MVC)模式来很好地将数据、业务与展现进行分离

SpringMVC 框架和 Struts、Struts2 非常类似

SpringMVC 的设计是围绕**DispatcherServlet(前端控制器)**展开的

DispatcherServlet:

  1. 负责将请求派发到特定的 handler(处理程序)
  2. 给处理程序分派请求,执行视图解析,处理语言环境和主题解析,支持上传文件
  3. 通过映射来决定哪一个处理程序应当处理传入的请求
  4. 通过可配的 handler mappings、view resolution、locale 以及 theme resolution 来处理请求并且转到对应的视图。

框架优点

SpringMVC,基于 MVC 架构模式的思想,将 web 层进行职责解耦

请求驱动类型是使用请求-响应模型,框架的目的就是帮助我们简化开发

清晰的角色划分,分工明确,而且扩展点相当灵活,可以很容易扩展,虽然几乎不需要:

  • 前端控制器(DispatcherServlet)
  • 请求到处理器映射(HandlerMapping)
  • 处理器适配器(HandlerAdapter)
  • 视图解析器(ViewResolver)
  • 处理器或页面控制器(Controller)
  • 验证器( Validator)
  • 命令对象(Command 请求参数绑定到的对象就叫命令对象)
  • 表单对象(Form Object 提供给表单展示和提交到的对象就叫表单对象)

优点列举

  1. SpringMVC 拥有强大的灵活性、非入侵性和可配置性
  2. SpringMVC 提供了一个前端控制器 DispatcherServlet,开发者无须额外开发控制器对象
  3. SpringMVC 分工明确,包含控制器、验证器、命令对象、模型对象、处理程序映射视图解析器,等等,每一个功能实现由一个专门的对象负责完成
  4. SpringMVC 可以自动绑定用户输入,并正确地转换数据类型。例如:SpringMVC 能自动解析字符串,并将其设置为模型的 int 或 float 类型的属性
  5. SpringMVC 使用一个名称/值的 Map 对象实现更加灵活的模型数据传输
  6. SpringMVC 内置了常见的校验器,可以校验用户输入,如果校验不通过,则重定向回输入表单。输入校验是可选的,并且支持编程方式及声明方式
  7. SpringMVC 支持国际化,支持根据用户区域显示多国语言,并且国际化的配置非常简单
  8. SpringMVC 支持多种视图技术,最常见的有 JSP 技术以及其他技术,包括 Velocity 和 FreeMarker
  9. SpringMVC 提供了一个简单而强大的 JSP 标签库,支持数据绑定功能,使得编写 JSP 页面更加容易
  10. SpringMVC 属于 Spring 框架的子项目,比起其他轻量级 WEB 框架最大的优势:与 Spring 框架无缝集成

核心类

  • DispatcherServlet:前端控制器
    用户请求到达前端控制器,它就相当于 MVC 模式中的 Controller
    虽然实际应用中开发依旧需要开发业务自有的 Controller 层,但 DispatcherServlet 相当于一个总的入口
    DispatcherServlet 是整个流程控制的中心,由它调用其它组件处理用户的请求,降低组件之间的耦合性
  • HandlerMapping:处理器映射器
    HandlerMapping 负责根据用户请求找到 Handler 即处理器
    SpringMVC 框架提供了不同的映射器实现不同的映射方式
    例如:配置文件方式,实现接口方式,注解方式等
  • Handler:处理器
    Handler 是继 DispatcherServlet 前端控制器的后端控制器,在 DispatcherServlet 的控制下 Handler 对具体的用户请求进行处理
    Handler 涉及到具体的用户业务请求,所以一般情况需要程序员根据业务需求开发 Handler(也就是我们实际开发的 Controller)
  • HandlAdapter:处理器适配器
    通过 HandlerAdapter 对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行
  • View Resolver:视图解析器
    View Resolver 负责将处理结果生成 View 视图
    View Resolver 根据逻辑视图名解析成物理视图名即具体的页面地址,再生成 View 视图对象
    对 View 进行渲染将处理结果通过页面展示给用户
  • View:视图
    SpringMVC 框架提供了很多的 View 视图类型的支持
    包括:jstlView、freemarkerView、pdfView 等
    我们最常用的视图就是 jsp
    通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要根据业务需求开发具体的页面

数据流程

  1. 用户发送请求—>DispatcherServlet
    前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为统一访问点,进行全局的流程控制
  2. DispatcherServlet—>HandlerMapping
    HandlerMapping 将会把请求映射为 HandlerExecutionChain 对象(包含一个 Handler 处理器(页面控制器)对象、多个 HandlerInterceptor 拦截器)对象,通过这种策略模式,很容易添加新的映射策略
  3. DispatcherServlet—>HandlerAdapter
    HandlerAdapter 将会把处理器包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处理器
  4. HandlerAdapter—> 处理器功能处理方法的调用
    HandlerAdapter 将会根据适配的结果调用真正的处理器的功能处理方法,完成功能处理
  5. 返回一个 ModelAndView 对象(Model 模型数据)
    包含模型数据、逻辑视图名
  6. ModelAndView 的逻辑视图名—> ViewResolver
    ViewResolver 将把逻辑视图名解析为具体的 View,通过这种策略模式,很容易更换其他视图技术
  7. View—> 渲染
    View 会根据传进来的 Model 模型数据进行渲染,此处的 Model 实际是一个 Map 数据结构,因此很容易支持其他视图技术
  8. 返回给 DispatcherServlet
    由 DispatcherServlet 返回响应给用户,到此一个流程结束
当前文章暂无讨论,留下脚印吧!
大纲
  • 框架简介
    • DispatcherServlet:
  • 框架优点
    • 优点列举
  • 核心类
  • 数据流程
提交成功,请等待审核通过后全面展示!

发表评论

昵称
邮箱
链接
签名
评论

温馨提示:系统将通过浏览器临时记忆您曾经填写的个人信息且支持修改,评论提交后仅自己可见,内容需要经过审核后方可全面展示。

选择头像