SpringMVC
概述:一款Controller层框架,运用了MVC思想
为什么要用springmvc(优势):
- 角色划分清晰
- 与Spring集成度更高更契合
- 可适配:通过HandlerAdapter支持任意的类作为处理器类
- 可定制:HandlerMapping,ViewResolver等可根据需求进行定制重写
- 功能强大:有数据验证、格式化以及绑定机制
- 易于测试:通过spring提供的mock对象进行简单单元测试
- 拥有jsp标签库
与structs2比较:
同:
- 基于MVC
- 底层离不开ServeltAPI(request/response)
- 处理请求的机制都是通过核心控制器(springmvc:servelt;structs2:Filter)
异
- springmvc入口为servelt;structs2入口为Filter
- Springmvc基于方法进行设计(以方法作为处理单位),structs2基于类进行设计(以类进行处理单位,每次执行都会创建一个对应动作类),前者更快
- springmvc更简洁且支持JSR303(一套javaBean参数校验标准,通过注解作用在bean属性上进行合法性验证),处理ajax更方便
- structs2的OGNL表达式使得页面开发效率更高,但执行效率较之JSTL并未提升
一、执行流程
- 客户端页面向服务器发起访问请求
- DispatcherServlet核心控制器获取请求,向HandlerMapping获取目标请求路径对应的执行链
- DispatcherServlet核心控制器收到执行链,若为空则404报错
- DispatcherServlet核心控制器根据返回的执行链执行路径对应的控制器适配器方法
- Controller操作后返回处理结果Model和View
- DispatcherServlet核心控制器将调用视图解析器对返回的处理结果中的view进行视图路径解析,分析出完整视图路径
- 核心控制器收到完整视图路径
- 核心控制器将model中的数据根据视图上对应的参数位置进行渲染
- 核心控制器将渲染好的视图返回给前端页面