2016.6.28笔记(1)-MVC基础知识

来源:互联网 发布:安卓改定位软件 编辑:程序博客网 时间:2024/06/08 14:14

继续学习struts2,先学习下mvc的基础吧,之前有了解的,现在算是系统的学一下,做个记录。

MVC基础知识

MVC是一种架构型的设计模式,本身不引入新的功能,知识用来指导我们改善应用程序的架构,使得应用的模型和视图相分离,从而得到更好的开发和维护效果。
MVC模型中,应用程序被划分成三个部分,模型(model)、视图(view)、控制器(controller)。其中,
1. 模型:包含了应用程序的业务逻辑和业务数据。
2. 视图:封装了应用程序的输出形式。也就是常说的页面。
3. 控制器:负责协调模型和视图,根据用户的请求来选择要调用哪个模型来处理业务,以及最终由哪个视图为用户做出应答。

模型和视图的关系

在MVC中,模型和视图是分离的,通常视图里面不会有任何逻辑实现,而模型也是不依赖视图的,同一个模型可能会有很多种不同的展示方式,也就是同一个模型可以对应多种不同的视图。这种例子很多的,比如在windows系统里面,浏览文件夹的时候,文件夹的数据并没有变化,但是展示的方式有很多种,比如大图标,小图标,详细信息等多种,但是数据是不变的。下面是MVC的组件关系图:
这里写图片描述

MVC的组件关系图描述了模型、视图和控制器这三部分的交互关系:
(1) 首先是展示视图给用户,用户在视图上操作,并填写一些业务数据数据。
(2) 然后用户会单击提交按钮,发出请求。
(3) 视图发出的用户请求会达到控制器,在请求中包含了想要完成什么样的业务功能以及相关的数据。
(4) 控制器处理用户请求,会吧请求中的数据进行封装,然后选择并调用合适的模型,请求模型进行状态更新 ,然后选择并调用合适的模型,请求模型进行状态更新,然后选择接下来要展示给用户的视图。
(5) 模型处理用户请求的业务功能,同时进行模型状态的维护和更新。
(6) 当模型状态发生改变的时候,模型会通知相应的视图,告诉视图它的状态发生了改变。
(7) 视图接到模型的通知后,会想模型进行状态查询,获取需要展示的数据,然后按照视图本身的展示方式,把这些数据展示出来。
接下来,等待用户下一次操作。。。循环

MVC的核心

MVC的核心手段是解耦,通过仔细的划分功能,把整个应用程序划分为3各部分,然后严格的控制三个部分之间的通信,从而得到一个结构清晰、功能呢个分布合理、可重用、可扩展、可维护的应用程序。
优点:
1. 低解耦性:模型和视图是解耦的,模型不依赖视图,视图也只是从模型中获取需要展示的数据,不会与模型的逻辑处理相关联。
2. 更低的开发成本:各司其职的程序员
3. 更好的维护性。

model2模型中的mvc

在java的web开发者中,通常把servlet+JSP+JavaBean的模型称为Model2模型,这是一个完全遵循MVC模式的模型。基本划分如下:

  1. JavaBean作为模型,既可以作为数据模型来封装业务数据,又可以作为业务模型来包含应用的业务操作。其中,数据模型用来存储或者传递业务数据,而业务逻辑模型则接收到控制器传递过来的模型更新请求后,执行特定的业务逻辑处理,然后返回相应的执行结果。
  2. JSP作为表现层,负责展示数据,提供相应的表单Form用于用户请求,并在合适的时候,想控制器发出用户请求来更新模型。
  3. Servlet作为控制器,用来接收用户提交的请求,然后获取请求中的数据,将其转换为业务模型需要的数据模型,然后调用业务模型的相应的业务方法,请求模型进行更新,同时根据业务执行结果来选择要返回的视图,也就是下一个页面。
    基本结构图如下:
    这里写图片描述

所以相应顺序应该是。用户发出一个请求—>请求被控制器servlet接收—>servlet将请求的数据转化为数据模型JavaBean—>调用业务逻辑模型JavaBean方法,且将业务逻辑模型返回的结果放到合适的地方—>根据业务逻辑模型返回结果,由控制器选择合适的JSP—>你就看到页面上的结果了。

0 0