1、MVC简介

  MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

  MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。

  模型-视图-控制器(MVC)是Xerox PARC在二十世纪八十年代为编程语言Smalltalk-80发明的一种软件设计模式,已被广泛使用。后来被推荐为Oracle旗下Sun公司Java EE平台的设计模式,并且受到越来越多的使用ColdFusion和PHP的开发者的欢迎。模型-视图-控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点。

  Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。

  View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。

  Controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

  MVC是一个框架模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。最典型的MVC就是JSP + servlet + javabean的模式。

  简单说一下,三层架构与MVC区别。

  三层架构是将整个业务应用划分为:界面层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。

  MVC和三层架构相同的地方是都有一个表现层,即界面。而其他两个地方是不同的。在三层架构中没有定义Controller的概念。这是最不同的地方。而MVC也没有把业务的逻辑访问看成两个层,这是采用三层架构或MVC搭建程序最主要的区别。在三层中也提到了Model,但是三层架构中Model的概念与MVC中Model的概念是不一样的,“三层”中典型的Model层是以实体类构成的,而MVC里,则是由业务逻辑与访问数据组成的。

2、Java Web应用程序的主要组件

(1)JSP组件:

  JSP是一种动态网页技术。它把HTML页面中加入Java脚本,以及JSP标签构成JSP文件。当浏览器请求某个JSP页面时,Tomcat会把JSP页面翻译为Java文件。然后将它编译为class文件,接着执行它,把生成的HTML页面返回到客户端显示。

(2)Servlet组件:

  Servlet运行于Web容器中。它可以被Web容器动态加载,接收浏览器请求,调用其他组件处理请求,然后把处理结果返回。当浏览器访问某个Servlet时,Web容器将会创建一个ServletRequest对象和ServletResponse对象,并且把用户的请求信息封装在ServletRequest对象中。然后把这两个对象作为参数传输给Servlet的特定方法中。在该方法中处理请求,把处理结果封装在ServletResponse对象中,返回给Web容器。最后Web容器把结果返回到浏览器去解析、显示。

(3)JavaBean组件:

  JavaBean组件是一种符合特定规范的Java对象。在JavaBean组件中定义一系列的属性,并且每个属性都提供setter和getter方法,这样就可以使用该组件存储一些中间数据。例如ServletRequest的请求信息、从数据库中查询出来的信息等。

(4)Web服务器

  Web服务器用来处理HTTP请求,并返回HTTP数据。它主要用来和浏览器进行交互,给用户提供服务。比如Tomcat服务器。

3、Java Web解决方案(开发方法)

(1)JSP开发

(2)JSP+JavaBean开发

(3)JSP+Servlet+JavaBean开发

(4)其他的一些开发方法。

4、常用的Java Web的MVC框架

(1)JSP+Servlet+JavaBean

  这是最基本的Java Web基于MVC的开发框架,JSP主要用于界面显示,相当于View;JavaBean用于和数据库进行交互,存取数据,相当于Model;Servlet用于获取界面输入的信息,通过得到JavaBean和数据库交互获取的数据,传到JSP进行显示。

(2)Struts2

  通过采用JavaServlet/JSP技术,实现了基于Java EEWeb应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。Model部分还是使用JavaBean,View部分使用JSP实现,Controller部分使用Struts提供的ActionServlet来实现。

(3)Spring MVC

  Spring MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架。模型(Model )封装了应用程序的数据和一般他们会组成的POJO。视图(View)是负责呈现模型数据和一般它生成的HTML输出,客户端的浏览器能够解释。控制器(Controller )负责处理用户的请求,并建立适当的模型,并把它传递给视图渲染。

(4)SSH

  上网查了很多资料,下面是个人理解。

  使用SSH进行Java Web开发,获取页面数据并处理流程:JSP → Action → Service → Dao,Dao → Service → Action → JSP。其中JSP →Action是获取页面数据,Action→ Service→Dao是把Action得到的数据交由Service层进行逻辑处理,进行逻辑处理需要与数据库交互,便调用Dao进行数据访问。处理完成,返回结果,Action根据结果转到不同的JSP页面。所以,个人觉得SSH既涵盖了MVC,也涵盖了三层架构。三层架构:Dao是数据访问层,Service是业务逻辑层,JSP是表示层。MVC:Service和Dao组成Model,Action是Controller,JSP是View。

学习模型-视图-控制器MVC模式的更多相关文章

  1. 模型-视图-控制器 (MVC)

    在MVC中 ,模型代表数据和业务规则, 视图包含了用户界面元素,例如文本,表单等 控制器则管理模型和视图中的通信

  2. 设计模式-结构型模式, mvc 模型视图控制器模式(8)

    MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式.这种模式用于应用程序的分层开发. Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO.它 ...

  3. 模型-视图-控制器的C++解释

    模型-视图-控制器 (MVC) 并非一种技术,而是软件设计/工程的一个概念.MVC包含三个组成部分,如下图所示 模型 模型直接响应对数据的处理,比如数据库.模型不应依赖其它组成部分,即视图或控制器,换 ...

  4. 模型-视图-控制器模式(MVC模式,10种常见体系架构模式之一)

    一.简介: 架构模式是一个通用的.可重用的解决方案,用于在给定上下文中的软件体系结构中经常出现的问题.架构模式与软件设计模式类似,但具有更广泛的范围. 模型-视图-控制器模式,也称为MVC模式.是软件 ...

  5. [框架模式]经典的模型视图控制器模式MVC

    参考:<设计模式> http://blog.csdn.net/u010168160/article/details/43150049 百度百科 引言: Model(模型)是应用程序中用于处 ...

  6. 模型 - 视图 - 控制器(MVC)详解

    模型视图控制器(MVC)一个相当实用且十分流行的设计模式.作为一位称职码农,你不可能没听说过吧. 不幸的是它难以让人理解. 在本文中,我将给出我认为是MVC的最简单的解释,以及为什么你应该使用它. 什 ...

  7. python设计模式之模型-视图-控制器模式

    python设计模式之模型-视图-控制器模式 关注点分离( Separation of Concerns, SoC)原则是软件工程相关的设计原则之一. SoC原则背后的思想是将一个应用切分成不同的部分 ...

  8. 设计模式 --- 模型-视图-控制器(Model View Controller)

    模型-视图-控制器(Model-View-Controller,MVC)是Xerox PARC在20世纪80年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已广泛应用于用户交互应用程 ...

  9. MODEL-View-Controller,既模型-视图-控制器

    Swing组件采用MVC(MODEL-View-Controller,既模型-视图-控制器)设计模式,其中模型(Model)用于维护组件的各种状态,视图(View)是组件的可视化表现,控制器(Cont ...

随机推荐

  1. Sklearn的使用

    初步接触要求时,从上图选自己数据所适用的方法, 首先看数据的样本是否 >50,小于则需要收集更多的数据 然后看问题适合分类.回归.聚类.降维中的哪一大类 Sklearn解决问题的一般步骤: 1. ...

  2. CSU 1857 Crash and Go(relians)(模拟)

    Crash and Go(relians) [题目链接]Crash and Go(relians) [题目类型]模拟 &题解: 这就是要严格的按照题意说的模拟就好了,也就是:每次添加进来一个圆 ...

  3. ES6之箭头表达式

    ES2015新增的特性箭头表达式,省去了关键词function,文中``双撇号和${}是Typescript的语法.以下是一些学习笔记: 1.单行箭头表达式: var foo = (arg1,arg2 ...

  4. ****************VS编码操作实践******************

    下面是今天主要练习的内容: 运用到的内容有 {运算符.强制转换.数据类型的运用.转义字符.变量与常量.基本类型的转换等} 1) 首先我们来看  下列的编码是由三大类组成的 ① 定制变量与常量  蓝色部 ...

  5. LeetCode14.最长公共前缀

    编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow" ...

  6. Struts2自定义Field级别的错误提示信息

    自定义Field级别的错误提示信息步骤: 在action包中新建一个以Action命名的properties文件,如:RegisterAction.properties 2. 然后在该属性文件中指定每 ...

  7. python pandas模块,nba数据处理(1)

    pandas提供了使我们能够快速便捷地处理结构化数据的大量数据结构和函数.pandas兼具Numpy高性能的数组计算功能以及电子表格和关系型数据(如SQL)灵活的数据处理能力.它提供了复杂精细的索引功 ...

  8. 基础 MySQL

    .一.MySQL概述 1.什么是数据库  答:数据的仓库,如:在ATM的示例中我们创建了一个 DB 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access.MS SQL ...

  9. JS神经网络deeplearn.js:浏览器端机器智能框架

    JS神经网络deeplearn.js:浏览器端机器智能框架 通过 deeplearn.js,可以实现在浏览器中训练神经网络模型,也可在推理阶段运行预训练模型. deeplearn.js 以 TypeS ...

  10. How to install john deere service advisor 4.2.005 on win 10 64bit

    How to install john deere service advisor 4.2.005 with the February 2016 data base disks on a machin ...