SpringMVC(1)--基本概念
一、MVC
1.什么是MVC
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码。
- M层:处理数据,业务逻辑等
- V层:处理界面的显示结果
- C层:起到桥梁的作用,来控制V层和M层通信
MVC并不是一个新的语言,只是一个设计模式和管理代码的规范。
2.MVC的运行流程
2.1简略流程
(1)视图是用户看到并与之交互的界面。
(2)模型表示业务数据,并提供数据给视图。主要对数据库操作
(3)控制器接受用户的输入并调用模型和视图去完成用户的需求。主要是业务逻辑
- 所有的终端用户请求被发送到控制器。
- 控制器依赖请求去选择加载哪个模型,并把模型附加到对应的视图。
- 附加了模型数据的最终视图做为响应发送给终端用户。

| 功能性 | 三层 / 分层架构 | Model view controller architecture |
|---|---|---|
| 显示与交互 | 用户界面 | 视图 |
| UI逻辑 | 用户界面 | 控制器 |
| 商业逻辑 / 验证 | 中间层 | 模型 |
| 请求首先发送给谁? | 用户界面 | 控制器 |
| 访问数据 | 数据链接层 | 数据链接层,属于桥梁,非任何层 |

2.2详细流程
(1)首先根据需求,写出对应的代码逻辑。使用一个实体类模拟
(2)写出该实体类的方法,即运行逻辑和表现形式
(3)根据需求建立数据库,然后连接数据库,通过数据库里面的表映射成实体类。以数据的形式表现该模型
(4)建立ORM模型的映射

2.3Java的Spring框架的运行流程
简述

(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响应用户。
3.MVC的历史发展
3.1Model1时代
- 在web早期的开发中,通常采用的都是Model1。
- Model1中,主要分为两层,视图层和模型层。

Model1优点:架构简单,比较适合小型项目开发;
Model1缺点:JSP职责不单一,职责过重,不便于维护;
3.2、Model2时代
Model2把一个项目分成三部分,包括视图、控制、模型。

- 用户发请求
- Servlet接收请求数据,并调用对应的业务逻辑方法
- 业务处理完毕,返回更新后的数据给servlet
- servlet转向到JSP,由JSP来渲染页面
- 响应给前端更新后的页面
职责分析:
Controller:控制器
- 取得表单数据
- 调用业务逻辑
- 转向指定的页面
Model:模型
- 业务逻辑
- 保存数据的状态
View:视图
- 显示页面
4.关系
Java中通过对象关系映射机制来操作的。即ORM框架:对象关系映射机制 。
面向对象的对象模型和关系型数据之间的相互转换。基于关系型数据库的数据存储,实现一个虚拟的面向对象的数据访问接口。
只要提供了持久化类与表的映射关系,ORM框架在运行时就能参照映射文件的信息,把对象持久化到数据库中。当前ORM框架主要有五种:Hibernate(Nhibernate),iBATIS,mybatis,EclipseLink,JFinal。
二、RestFul
1.什么是RestFul
这是一种代码设计风格,不是模块功能。这种交互模式相当于设计一个函数,函数内部(服务器)过程对客户端不可见,客户端只传递参数接受结果。
URI的设计就好象设计参数形式,函数的功能已经包含在网站本身不言自明,不需要再列出来。
REST是REpresentational State Transfer的缩写(一般中文翻译为表述性状态转移),REST 是一种体系结构,而 HTTP 是一种包含了 REST 架构属性的协议,为了便于理解,我们把它的首字母拆分成不同的几个部分:
- 表述性(REpresentational): REST 资源实际上可以用各种形式来进行表述,包括 XML、JSON甚至 HTML——最适合资源使用者的任意形式;
- 状态(State): 当使用 REST 的时候,我们更关注资源的状态而不是对资源采取的行为;
- 转义(Transfer): REST 涉及到转移资源数据,它以某种表述性形式从一个应用转移到另一个应用。
参考资料:
"阮一峰ResuFul":http://www.ruanyifeng.com/blog/2011/09/restful.html
https://www.cnblogs.com/wmyskxz/p/9104368.html
三、数据跳转
1.Ajax
2.Json
3.Java数据跳转
3.1 路由
就是一个路径的解析,根据客户端提交的路径,将请求解析到相应的控制器上从 URL 找到处理这个 URL 的类和函数
3.2数据类型
注意: 很难去记住所有的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- 返回一个文件到客户端。

浙公网安备 33010602011771号