1.MVC 概述
MVC(Model–view–controller)是软件工程中的一种软件架构模式,基于此模式把软件系统分为三个根本局部:模型(Model)、视图(View)和控制器(Controller)。目标是通过这样的设计使程序结构更加简洁、直观,升高问题的复杂度。其中各个组成部分的职责为:
- 视图(View)– UI 设计人员进行图形界面设计,负责实现与用户交互。
- 控制器(Controller)- 负责获取申请,解决申请,响应后果。
- 模型(Model)– 实现业务逻辑,数据逻辑实现。
咱们在软件设计时,通常要遵循肯定的设计准则。MVC 架构模式的设计中,首先基于繁多职责准则 (SRP-Single responsibility principle) 让每个对象各司其职,各尽所能。而后再基于“高内聚,低耦合”的设计思维实现相干层对象之间的交互。这样能够更好进步程序的可维护性和可扩展性。
Spring MVC 是 Spring 框架中基于 MVC 设计思维实现的一个用于解决 Web 申请的模块。其繁难架构剖析,如图所示:
外围组件剖析:
- DispatcherServlet:前端控制器, 解决申请的入口。
- HandlerMapping:映射器对象, 用于治理 url 与对应 controller 的映射关系。
- Interceptors:拦截器, 实现申请响应的共性解决。
- Controller:后端控制器 -handler, 负责解决申请的管制逻辑。
- ViewResolver:视图解析器, 解析对应的视图关系(前缀 +viewname+ 后缀)。
2.SpringMVC 的工作原理
1、客户端收回一个 http 申请给 web 服务器,web 服务器对 http 申请进行解析,如果匹配 DispatcherServlet 的申请映射门路(在 web.xml 中指定),web 容器将申请转交给 DispatcherServlet.
2、DipatcherServlet 接管到这个申请之后将依据申请的信息(包含 URL、Http 办法、申请报文头和申请参数 Cookie 等)以及 HandlerMapping 的配置找到解决申请的处理器(Handler)。
3-4、DispatcherServlet 依据 HandlerMapping 找到对应的 Handler, 将处理权交给 Handler(Handler 将具体的解决进行封装),再由具体的 HandlerAdapter 对 Handler 进行具体的调用。
5、Handler 对数据处理实现当前将返回一个 ModelAndView()对象给 DispatcherServlet。
6、Handler 返回的 ModelAndView()只是一个逻辑视图并不是一个正式的视图,DispatcherSevlet 通过 ViewResolver 将逻辑视图转化为真正的视图 View。
7、Dispatcher 通过 model 解析出 ModelAndView()中的参数进行解析最终展现出残缺的 view 并返回给客户端。