MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码。
MVC并不是一个新的语言,只是一个设计模式和管理代码的规范。
(1)视图是用户看到并与之交互的界面。
(2)模型表示业务数据,并提供数据给视图。主要对数据库操作
(3)控制器接受用户的输入并调用模型和视图去完成用户的需求。主要是业务逻辑
功能性 | 三层 / 分层架构 | Model view controller architecture |
---|---|---|
显示与交互 | 用户界面 | 视图 |
UI逻辑 | 用户界面 | 控制器 |
商业逻辑 / 验证 | 中间层 | 模型 |
请求首先发送给谁? | 用户界面 | 控制器 |
访问数据 | 数据链接层 | 数据链接层,属于桥梁,非任何层 |
(1)首先根据需求,写出对应的代码逻辑。使用一个实体类模拟
(2)写出该实体类的方法,即运行逻辑和表现形式
(3)根据需求建立数据库,然后连接数据库,通过数据库里面的表映射成实体类。以数据的形式表现该模型
(4)建立ORM模型的映射
简述
(1)用户从界面输入数据,交给控制器处理
(2)控制先要知道交给谁处理,然后交对应的模块
(3)将结果进行优化,转换成最终需要返回的样子
详述
(1)用户发送请求至前端控制器DispatcherServlet;
(2) DispatcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取Handle;
(3)处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet;
(4)DispatcherServlet 调用 HandlerAdapter处理器适配器;
(5)HandlerAdapter 经过适配调用 具体处理器(Handler,也叫后端控制器);
(6)Handler执行完成返回ModelAndView;
(7)HandlerAdapter将Handler执行结果ModelAndView返回给DispatcherServlet;
(8)DispatcherServlet将ModelAndView传给ViewResolver视图解析器进行解析;
(9)ViewResolver解析后返回具体View;
(10)DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)
(11)DispatcherServlet响应用户。
Model1优点:架构简单,比较适合小型项目开发;
Model1缺点:JSP职责不单一,职责过重,不便于维护;
Model2把一个项目分成三部分,包括视图、控制、模型。
职责分析:
Controller:控制器
Model:模型
View:视图
? Java中通过对象关系映射机制来操作的。即ORM框架:对象关系映射机制 。
? 面向对象的对象模型和关系型数据之间的相互转换。基于关系型数据库的数据存储,实现一个虚拟的面向对象的数据访问接口。
只要提供了持久化类与表的映射关系,ORM框架在运行时就能参照映射文件的信息,把对象持久化到数据库中。当前ORM框架主要有五种:Hibernate(Nhibernate),iBATIS,mybatis,EclipseLink,JFinal。
一种代码设计风格,不是模块功能
参考资料:
就是一个路径的解析,根据客户端提交的路径,将请求解析到相应的控制器上从 URL 找到处理这个 URL 的类和函数
注意: 很难去记住所有的12种类型。但是一些重要的你可以记住,例如:ActionResult
, ViewResult
,和 JsonResult
。详情如下:
MVC中的12种结果类型,最主要的是ActionResult类,它是一个基础类,它有11个子类型,如下:
ViewResult
- 给响应流渲染指定的视图PartialViewResult
- 给响应流渲染指定的局部视图EmptyResult
- 返回空的响应结果。RedirectResult
- 执行一个HTTP转向到指定的URL。RedirectToRouteResult
- 执行一个HTTP转向到一个URL,这个URL由基于路由数据的路由引擎来决定JsonResult
- 序列化一个ViewData对像到JSON格式。JavaScriptResult
- 返回一段Javascript代码,它可以在客户端执行。ContentResult
- 写内容到响应流,不需要视图支持。FileContentResult
- 返回一个文件到客户端。FileStreamResult
- 返回一个文件到客户端,它提供的是流。FilePathResult
- 返回一个文件到客户端。原文:https://www.cnblogs.com/code906/p/12679952.html