SpringMVC——1.入门/执行流程

SpringMVC

概述:一款Controller层框架,运用了MVC思想

为什么要用springmvc(优势):

  1. 角色划分清晰
  2. 与Spring集成度更高更契合
  3. 可适配:通过HandlerAdapter支持任意的类作为处理器类
  4. 可定制:HandlerMapping,ViewResolver等可根据需求进行定制重写
  5. 功能强大:有数据验证、格式化以及绑定机制 
  6. 易于测试:通过spring提供的mock对象进行简单单元测试
  7. 拥有jsp标签库

与structs2比较:

同:

  • 基于MVC
  • 底层离不开ServeltAPI(request/response)
  • 处理请求的机制都是通过核心控制器(springmvc:servelt;structs2:Filter)

  • springmvc入口为servelt;structs2入口为Filter
  • Springmvc基于方法进行设计(以方法作为处理单位),structs2基于类进行设计(以类进行处理单位,每次执行都会创建一个对应动作类),前者更快
  • springmvc更简洁且支持JSR303(一套javaBean参数校验标准,通过注解作用在bean属性上进行合法性验证),处理ajax更方便
  • structs2的OGNL表达式使得页面开发效率更高,但执行效率较之JSTL并未提升

一、执行流程

SpringMVC——1.入门/执行流程

  1. 客户端页面向服务器发起访问请求
  2. DispatcherServlet核心控制器获取请求,向HandlerMapping获取目标请求路径对应的执行链
  3. DispatcherServlet核心控制器收到执行链,若为空则404报错
  4. DispatcherServlet核心控制器根据返回的执行链执行路径对应的控制器适配器方法
  5. Controller操作后返回处理结果Model和View
  6. DispatcherServlet核心控制器将调用视图解析器对返回的处理结果中的view进行视图路径解析,分析出完整视图路径
  7. 核心控制器收到完整视图路径
  8. 核心控制器将model中的数据根据视图上对应的参数位置进行渲染
  9. 核心控制器将渲染好的视图返回给前端页面