谈谈JavaEE的mvc模式及典型的三层架构
首先,向读者介绍一下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模式及典型的三层架构的更多相关文章
- 架构和模式的区别:三层架构和MVC在应用开发中的位置
架构是系统层面的,可以是多层架构,也可以是事件驱动架构,也可以是微服务架构. 模式是GUI应用的一种职责分离设计. 三层架构(包含多层架构)和 MVC模式(包含MVP, MVVM) 没什么关系,它们不 ...
- MVC框架模式和Javaweb经典三层架构
一.MVC设计模式 1.MVC的概念 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(Vie ...
- 谈谈MVC模式
谈谈MVC模式 作者: 阮一峰 1. 如何设计一个程序的结构,这是一门专门的学问,叫做"架构模式"(architectural pattern),属于编程的方法论. MVC模式 ...
- MVC模式
1.MVC的概念 1.1什么是MVC? MVC是一种架构型模式,它本身不引入新的功能,只是指导我们把web应用结构做的更加合理,实现逻辑与页面相分离. ...
- 学习模型-视图-控制器MVC模式
1.MVC简介 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分 ...
- SSH和三层架构的MVC模式的对应关系
1.MVC(Model-View-Controller)设计模式: 首先让我们了解下MVC(Model-View-Controller)的概念: MVC全名是Model View Controller ...
- 从MVC和三层架构说到SSH整合开发
相信很多人都认同JavaWeb开发是遵从MVC开发模式的,遵从三层架构进行开发的,是的,大家都这么认同.但是相信大家都会有过这样一个疑问,if(MVC三层模式==三层架构思想)out.println( ...
- 三层架构和MVC
注:本文章内所有内容都来自互联网,本人主要是起了一个收集的作用 http://www.cnblogs.com/zhhh/archive/2011/06/10/2077519.html 又看到有人在问三 ...
- Web项目的三层架构和MVC架构异同
http://www.cnblogs.com/zhhh/archive/2011/06/10/2077519.html 又看到有人在问三层架构和MVC的关系,感觉这种问题有点教条化了.因为它们都在逻辑 ...
随机推荐
- 洛谷P1043 数字游戏
题目描述 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易.游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分 ...
- $routeParams 实现路由指定参数
[摘要]后台管理系统权限控制到按钮级别,将每一个资源的key绑定在url中,渲染页面的时候去根据key来获取当前页面的按钮列表. router.js angular.module("app. ...
- AJAX - 封装的传参改为传入对象 XML JSON 数据格式
Ajax封装函数,上次是直接传参,这次在原来的基础上改进,模仿jQuery 直接传入对象,把之前的参数都变为这个对象的属性. 这样可以随意调换传入数据的次序. 其他优点? 需要再复习一下. Ajax处 ...
- django 简单会议室预约(4)
基本的配置已经完成了,来看看最重要的views.py 先看看简单的注册登录功能,在django里有一个专门的模块用来验证用户信息 :所以只需要调用就好了: #-*-coding:utf-8 -*- f ...
- C语言的多行宏定义
一.多行宏定义的使用 最近在跟STM32L011K4T6低功耗的源代码,发现使用了多行的宏定义来封装函数,记得之前把\给删除掉,编译程序就一直报错. \是续行操作符,也就是宏定义一行写不完,需要多行写 ...
- 洛谷 P1480 A/B Problem
P1480 A/B Problem 题目描述 输入两个整数a,b,输出它们的商(a<=10^5000,b<=10^9) 输入输出格式 输入格式: 两行,第一行是被除数,第二行是除数. 输出 ...
- install-软件安装跟push的区别
今天在做项目的时候,需要往一个user版本的手机中安装一个应用,就在网上查了相应的方法,可以使用如下命令 adb install -r out/target/product/vanzo6752_lwt ...
- CSS外边距合并(塌陷/margin越界)
原文 简书原文:https://www.jianshu.com/p/5f18f12cd162 大纲 1.什么是外边距合并?(折叠外边距) 2.外边距带来的影响 3.折叠的结果 4.产生折叠的原因 5. ...
- Day2:字典
一.定义 字典是一种“key-value”成对出现的数据类型,中间用冒号把key与value隔,不同的数据用逗号隔开,全部数据用大括号括起来 info = { 'stu1101': "Ten ...
- [D3] Margin Convention with D3 v4
You can’t add axes to a chart if you don’t make room for them. To that end, the D3 community has ado ...