MVC 架构模式
视频:MVC简介
学习:MVC理论基础 —— 詹子知
简介
介绍
MVC 全名 Model View Controller,模型 - 视图 - 控制器的缩写,一种软件设计典范,用一种业务逻辑和数据显示分离的方法组织代码,将业务逻辑被聚集到一个部件里面,在界面和用户围绕数据的交互能被改进和个性化定制的同时而不需要重新编写业务逻辑。
优势
各司其职,互不干扰
有利于开发中的分工
有利于代码的重用
定义
- 视图:我们能直观的看到的web界面
- 控制器:向系统发出指令的工具和帮手
- 模型:模型的工作是按要求从数据库取出数据。(非全面)
工作流程
- 浏览者 -> 调用控制器,对他发出指令
- 控制器 -> 按指令选取一个合适的模型
- 模型 -> 按控制器指令取相应的数据
- 控制器 -> 按指令选取响应视图
- 视图 -> 显示(格式化)第三步的数据
管理和控制序列图
核心组件定义
DispatcherServlet:前端控制器,也是整个架构的核心,负责处理和分发请求。
Object getHandler(); HandlerAdapter getHandlerAdapter(); void render();
HandlerMapping:处理器映射,他主要包含的是控制器的列表,对于特定的请求,根据HandlerMapping的映射关系,可以找到特定的控制器。最简单的便是url到控制器的映射。
Object getHandler(HttpServletRequest request) throws Exception;
HandlerAdapter:对于不同类型的控制器,该类负责把Handler请求处理的结果统一转换成ModelAndView。
boolean supports(Object handler); ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception; long getLastModified(HttpServletRequest request, Object handler);
ModelAndView:包含数据和视图的信息,一般包含视图名,和这个视图需要用的数据,这里的Model大家不要误会为模型的概念,它只不过同时包含视图信息及这个视图需要显示的相关信息而已。
private Object view; private Map<String, Object> model; private boolean cleared;
ViewResolver:它View名称解析成View对象。
View resolveViewName(String viewName) throws Exception;
View:定义response显示的详细内容。
String getContentType(); void render(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception;
下文简述工作流程