首先,向读者介绍一下mvc架构,mvc是一种源于桌面程序的架构模式,它的基本思想是把程序界面和业务逻辑分开,这样便于软件的后期维护,同时也方便开发时期分工及管理,mvc有很多有点所以现在已经被广泛的应用与web开发中。

下面介绍一下自己了解mvc架构的经历,和其中的一些误区,以便于读者可以更好的理解什么是mvc。mvc字面意思很简单就是模型(M),视图(V),控制器(C)视图的作用是将程序运行的结果呈现给用户,模型的作用则是实现用户的业务逻辑,主要就是接收用户的参数,完成一些运算,以及访问数据库。mvc是一种思想,是一种横向的分层,javaEE中的mvc比php更加成熟,结构更加合理,加上Java的特点(优越的跨平台性)可以利用mvc构建出很强大的集群系统。

下面说一下javaEE的mvc,再次强调一下mvc是一种横向分层的思想,有了这样额思想你可以构建出各种系统,只要基于这种思想就可以了,可以有不同的实现,javaEE中视图层一般用jsp,当然你也可以采用html+ajax技术实现一个高可交互性的异步通讯的web应用;模型层是用javabean为主体,实现java的业务逻辑;控制器则是用servlet实现,这样整体上来说javaEE为不同的角色提供了不同的标准,使得程序员开发更加简单。

下面说说三层经常听到的三层架构模式,首先再次重申一下三层架构和mvc是两个概念,初学者很容易把他们当作一个概念,认为mvc就是三层架构,三层架构就是mvc,这样认为会让你把很多概念混淆,对理解系统也会有一些困难。三层架构分为表示层,逻辑层,持久层;其中表示层是属于web方面的开发,对应与mvc的视图和控制器,当然javaEE中的过滤器也是属于表示层的,虽然它和标识没有什么关系,但他的实现技术是一种横切技术,将request的请求作为一个过滤,过滤以后传到控制器,控制器根据需要调用业务逻辑和视图层显示给用户,所以讲过滤器分到表示层,主要是因为他是属于web技术,而且是在控制层以上。逻辑层和持久层是为了程序的可移植性我们把mvc中的模型层分为专门用于计算的逻辑层和专门访问数据的持久层(包括访问数据库、访问xml、以及访问其他可以永久保存数据的文件等),业务逻辑层主要是javabean实现;而持久层最常见的就是dao,封装了数据库的所有操作。其实三层架构从结构来说是纵向的分层,上层依赖于下层,而下层不依赖于上层,即单项依赖。

总结一下,mvc是系统横向的分层模型,而三层架构是纵向的分层,mvc是一种思想,实现了mvc应该使用户不可以直接访问jsp(视图),即使不需要调用业务逻辑实现功能也应该让用户的所有操作都经过控制器,由控制器跳转到视图。三层架构是纵向的分层,将整个系统封层3层,3层从上到下有单项的依赖,其中逻辑层是核心,实现了系统的主要功能,其他的两层主要是为了实现系统额扩展,如系统需要更换显示界面则只需要更改视图就可以了,如需要更改数据库,则只需要更改持久层就可以,不用改变程序的核心代码(逻辑层)。这种架构主要适用于大型项目的架构,设计人员可以根据项目的规模灵活的设计项目的架构,比如可以采用最简单的jsp直接访问数据库的架构模式、jsp+javabean(sun的model1)、mvc+1(即横向按mvc模式架构,纵向只分一层——servlet直接访问数据库)、mvc+2(即横向按mvc模式架构,纵向只分两层——servlet调用逻辑层访问数据库)、mvc+3(即横向按mvc模式架构,纵向只分三层——servlet调用业务逻辑,业务逻辑访问数据库);当然不同的架构适用不同规模的项目,具体还要视项目情况而定。

谈谈JavaEE的mvc模式及典型的三层架构的更多相关文章

  1. 架构和模式的区别:三层架构和MVC在应用开发中的位置

    架构是系统层面的,可以是多层架构,也可以是事件驱动架构,也可以是微服务架构. 模式是GUI应用的一种职责分离设计. 三层架构(包含多层架构)和 MVC模式(包含MVP, MVVM) 没什么关系,它们不 ...

  2. MVC框架模式和Javaweb经典三层架构

    一.MVC设计模式 1.MVC的概念 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(Vie ...

  3. 谈谈MVC模式

    谈谈MVC模式   作者: 阮一峰 1. 如何设计一个程序的结构,这是一门专门的学问,叫做"架构模式"(architectural pattern),属于编程的方法论. MVC模式 ...

  4. MVC模式

                             1.MVC的概念 1.1什么是MVC? MVC是一种架构型模式,它本身不引入新的功能,只是指导我们把web应用结构做的更加合理,实现逻辑与页面相分离. ...

  5. 学习模型-视图-控制器MVC模式

    1.MVC简介 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分 ...

  6. SSH和三层架构的MVC模式的对应关系

    1.MVC(Model-View-Controller)设计模式: 首先让我们了解下MVC(Model-View-Controller)的概念: MVC全名是Model View Controller ...

  7. 从MVC和三层架构说到SSH整合开发

    相信很多人都认同JavaWeb开发是遵从MVC开发模式的,遵从三层架构进行开发的,是的,大家都这么认同.但是相信大家都会有过这样一个疑问,if(MVC三层模式==三层架构思想)out.println( ...

  8. 三层架构和MVC

    注:本文章内所有内容都来自互联网,本人主要是起了一个收集的作用 http://www.cnblogs.com/zhhh/archive/2011/06/10/2077519.html 又看到有人在问三 ...

  9. Web项目的三层架构和MVC架构异同

    http://www.cnblogs.com/zhhh/archive/2011/06/10/2077519.html 又看到有人在问三层架构和MVC的关系,感觉这种问题有点教条化了.因为它们都在逻辑 ...

随机推荐

  1. Winform 获取相对路径 C#

    ///获取相对路径 ///例如:System.Windows.Forms.Application.StartupPath = "E:\App\CheckingMachine\QueryMac ...

  2. 笔记四:onsubmit和onclick的区别

    今天碰到关于表单提交的问题,我是用submit还是用onclick好呢,然后我去百度了一下两者的区别: onsubmit只能表单上使用,提交表单前会触发, onclick是按钮等控件使用, 用来触发点 ...

  3. 异步调用WCF的方法需要小心的地方

    直接使用下面的代码,由于client对象占用的资源没有被释放,会导致内存泄露GetSimServiceReference.GetSimServiceClient client = new GetSim ...

  4. 【Codeforces Round #452 (Div. 2) A】 Splitting in Teams

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 贪心 1优先和2组队. 如果1没有了 就结束. 如果1还有多余的. 那么就自己3个3个组队 [代码] #include <bi ...

  5. CSS3制作W3cplus的关注面板

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  6. SQL server 2012 安装SQL2012出现报错: 启用 Windows 功能 NetFx3 时出错

    在window server 2012服务器上,安装 SQL Server 2012的过程中,报了一个错误,一个安装失败, 在安装SQL 2012的过程中.出现下面错误:启用 Windows 功能 N ...

  7. Flume Sinks官网剖析(博主推荐)

    不多说,直接上干货! Flume Sources官网剖析(博主推荐) Flume Channels官网剖析(博主推荐) Flume Channel Selectors官网剖析(博主推荐) 一切来源于f ...

  8. 学习笔记:_lodash.js常用函数

    _lodash.js 文档:https://www.lodashjs.com/docs/4.17.5.html _.compact(array) 创建一个移除了所有假值的数组 什么是假值?false, ...

  9. Vue使用Promise自定义confirm确认框组件

    使用Promise模拟浏览器确认框,可自定义标题,内容,按钮文字和类型 参数名 类型 说明 title String 标题 content String 内容 yesBtnText String 确认 ...

  10. HSV颜色模型

    HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model). 注意的是OpenC ...