JavaEE 三层架构模式
什么是架构模式
要理解三层架构模式,我们得先搞清楚什么是架构模式。(这里说的架构模式是针对后端开发)
所谓架构就是系统最高级别的设计,一个系统特别复杂时才需要架构设计,如果只是开发一个很小程序,就谈不上架构设计了。而专门做架构设计的人就是架构师,这种人一般都是技术顶尖高手,而且只在大公司大系统开发中才有。而中小型公司是不太需要架构师的,为什么呢,马上就你会知道了。
所谓模式就是套路,换句话说,就是项目开发的固定流程或方式。
那么架构模式就是系统最高级别设计的套路。当架构师设计出架构模式,那么项目开发人员就必须按照相应的模式或流程做开发。
由于项目需求不同,所以架构师会设计很多不同的架构模式。而一些架构模式在很多项目开发中使用后,这些架构模式就变得非常流行了。比如,三层架构模式就是一个搞后端开发众所周知的架构模式,也是非常重要,需要掌握的架构模式。
为何三层架构模式对于后端开发人员这么重要呢?因为可以用它开发很多大型企业级 Web 项目。
什么是三层架构模式
三层架构模式采用一种分层的架构设计思想,将后端开发过程按照职责分为了三层:三层分别为表现层(UI)、业务逻辑层(BLL)、数据访问层或持久层(DAL)。

表现层(UI):
表现层的职责:直接跟前端打交互(一是接收前端ajax请求,二是返回JSON数据给前端)。
业务逻辑层(BLL):
业务逻辑层的职责:一是处理表现层转发过来的前端请求(也就是具体业务),二是将从数据访问层或持久层获取的数据返回到表现层。可以看出,业务逻辑层无疑是系统架构中体现核心价值的部分。
数据访问层或持久层(DAL):
数据访问层或持久层的职责:直接操作数据库(针对数据的增添、删除、修改、查找等),并将获得的数据返回到上一层(也就是业务逻辑层)。
通过上图可以很清楚的看到整个前后端的流程,如下:
前端页面发送请求,请求通过网络来到 Web服务器(如Tomcat),Web 服务器收到请求将其转发给表现层;
表现层接收到请求后,取出请求数据但自己并不处理,然后转发给业务逻辑层专门负责处理请求;
业务逻辑层处理请求时,如果需要返回响应数据,则需要调用数据访问层或持久层;
数据访问层或持久层只干一件事,就是专门和数据库打交道,将数据库操作获得的数据返回给业务逻辑层;
业务逻辑层处理好后,又返回给表现层;
表现层又返回给 Web 服务器,Web 服务器则直接返回给前端页面;
前端页面收到数据后解析,并显示在页面上
整个一次 Web 请求/响应流程就结束了。
只要搞懂了这个流程,你就很容易明白基于三层架构模式的Web项目开发过程了。
三层架构模式的优缺点
优点:
降低软件系统构件之间的耦合度,实现“低耦合、高内聚”原则
提升系统灵活性,可以在接口相同的情况下替换某层的具体实现
可以增强复用度,下层可以为多个上层提供服务
缺点:
三层架构模式一定程度会降低系统的性能。这是不言而喻的,如果不采用三层架构,可以直接访问数据库,以此获取相应的数据,如今却必须通过三层来中转完成。
三层架构模式可能会导致各层的级联修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合三层架构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。
总结
在软件架构设计中,三层架构模式是最常见,也是最重要的一种架构模式。人们期待分层设计能够达到“高内聚、低耦合”的设计目标。各层各司其职,使得开发人员分工明确,极大的提高了开发效率。虽然三层架构仍有不可避免的缺陷,但分层确实使代码维护、扩展非常方便,各层一定程度上达到了相互独立的目的,利大于弊。
JavaEE 三层架构模式的更多相关文章
- 一、JSP九大内置对象 二、JAVAEE三层架构和MVC设计模式 三、Ajax
一.JSP九大内置对象###<1>概念 不需要预先申明和定义,可以直接在jsp代码中直接使用 在JSP转换成Servlet之后,九大对象在Servlet中的service方法中对其进行定义 ...
- JavaEE三层架构与MVC
JavaEE三层架构与MVC 摘要与总结 等下总结下 MVC模式 Model1 说到设计模式,不得不提一下之前的的Model1.据说早期对于java企业项目的开发,用的是Jsp+JavaBean的 ...
- MVC开发模式与javaEE三层架构
1.MVC开发模式 1. M:Model,模型.JavaBean * 完成具体的业务操作,如:查询数据库,封装对象2. V:View,视图.JSP * 展示数据3. C:C ...
- JavaEE三层架构
三层架构 三层架构是javaee规范中的推荐架构,传统意义上是分为表示层(UI).业务逻辑层(BLL).数据访问层(DAL).在javaee的开发中,三层架构具体分为表示层(web层) ...
- MVC模式(三层架构模式)
(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller). MVC模式最早由Try ...
- MVC三层架构模式编程思想 JSP-Servlet-JavaBean
MVC(Mdodel-View-Controller)编程模式.把一个Java应用分成三层:模型层.视图层.控制层,各层分别实现各层的功能,整个过程见下图就一目了然了. watermark/2/tex ...
- JavaEE 三层架构的浅谈
三层架构 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了“高内聚,低 ...
- javaee三层架构案例--简单学生管理系统
背景 学了jdbc.jsp等需要串起来,不然会忘记 项目环境 win10 jdk11 mysql8.0.13 jar包 c3p0-0.9.5.2 commons-dbutils-1.7 jstl mc ...
- [javaEE] 三层架构案例-用户模块(二)
使用junit测试框架,测试查找用户和添加用户功能 com.tsh.test.xmlUserDaoTest package com.tsh.test; import org.junit.Test; i ...
随机推荐
- 100天搞定机器学习:PyYAML基础教程
编程中免不了要写配置文件,今天我们继续Python网络编程,学习一个比 JSON 更简洁和强大的语言----YAML .本文老胡简单介绍 YAML 的语法和用法,以及 YAML 在机器学习项目中的应用 ...
- Linux 递归修改后缀名
1 修改命令 需要用到: find awk xargs 递归修改命令如下: find . -name '*.XXX' | awk -F "." '{print $2}' | xar ...
- 算法、数据结构、与设计模式等在游戏开发中的运用 (一):单例设计(Singleton Design)
算法.数据结构.与设计模式等在游戏开发中的运用 (一):单例设计(Singleton Design) 作者: Compasslg 李涵威 1. 什么是单例设计(Singleton Design) 在学 ...
- Insertion Sort and Merge Sort
Insertion Sort(插入排序) 思路:for 循环遍历数组中的每一个数 用while将每次遍历到的数于左侧的数进行对比,将小的排到左边 void InsertionSort(int*A, i ...
- vue项目打包本地后通过nginx解决跨域
前言 有时候我们打包好vue项目让后端人员部署项目时可能会有小插曲,为了不麻烦后端人员和避免尴尬,最好的办法就是在本地自己先测一下,而在本地运行打包后的项目会遇到接口跨域的问题.我平时经常用的方法就是 ...
- aws EKS EFS 上安装mysql Operation notpermitted
在AWS EKS k8s.EFS nfs.mysql.changing ownership of '/var/lib/mysql/': Operation notpermitted 在aws eks ...
- 【cypress】3. 编写第一个测试
当环境安装好了之后,就可以着手尝试第一个测试的编写了. 一.新建一个文件 在你的项目下的cypress/integration文件夹中创建一个新文件sample_spec.js,我这里直接在webst ...
- 通过钉钉网页上的js学习xss打cookie
做完了一个项目,然后没啥事做,无意看到了一个钉钉的外部链接: 题外话1: 查看源码,复制其中的代码: try { var search = location.search; if (search &a ...
- Spring-Cloud-Alibaba之Seata
微服务中不可避免的会发生服务间的调用,这就一定会涉及到事务相关的问题,在单体项目中我们可以直接很方便的实现事务回滚,但是在分布式系统中就不能像以前那么做了,因为各个服务是独立的一套系统: 而要实现跨服 ...
- hdu4971 流-最大权闭包
题意: 给了一些任务,然后给了一些完成某些任务的限制,然后又给了限制之间的拓扑关系,最后问你最大收益. 思路: 很直白,就是流的一个应用,最大权闭包,没涉及到什么想法的地方,建 ...