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 ...
随机推荐
- 死磕Spring之AOP篇 - Spring AOP自动代理(一)入口
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读. Spring 版本:5.1 ...
- unzip解压中文乱码
1 问题描述 直接 unzip xxx.zip 乱码,肯定是编码问题了不用问.但是unzip没有指定编码的选项: 网上的解决方案如下: unzip -O GBK/GB18030CP936 xx.zip ...
- 2、ASP.NET Core中服务的生命周期
ASP.NET Core支持依赖注入软件设计模式,它允许在不同的组件中注入我们的服务,并且控制服务的初始化.有些服务可以在短时间内初始化,并且只能在某个特别的组件,以及请求中才能用到:而还有一些服务, ...
- JMeter 结果处理常见问题
1. 前言 2. 结果处理常见问题 1)在察看结果树中只看失败情况 2)如何把日志放入文件查看 3)cvs 文件中文读取乱码 4)失败请求数据的采集 5)结果树响应数据中文乱码解决办法 1. 前言 工 ...
- OO第四单元总结与课程总结
OO第四单元总结与课程总结 第四单元作业架构设计 总体分析:本单元作业的需求集中于对UML类图进行查询.对于查询操作来说自然的想法是提前预见到需要查询的内容,在一开始就采用适当的数据结构将必要的信息进 ...
- 2.1.1- css产生的原因
CSS的发展历程 从HTML被发明开始,样式就以各种形式存在.不同的浏览器结合它们各自的样式语言为用户提供页面效果的控制.最初的HTML只包含很少的显示属性.随着HTML的成长,为了满足页面设计者的要 ...
- IE 兼容问题笔记
IE 兼容问题笔记 解决IE11兼容HTML5 设置 document.body的一些用法以及js中的常见问题 flex布局浏览器兼容处理 ie8, ie9 css3 media媒体查询器用法总结 c ...
- Nginx 配置浏览Linux 系统目录并下载文件
准备工作: 安装编译工具及库文件: yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 安装PCRE( ...
- PAT 乙级 -- 1008 -- 数组元素循环右移问题
题目简述 一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0 A1--AN-1)变换为(AN-M -- AN ...
- UVA11624大火蔓延的迷宫
题意: 给1个n*m的网格,上面有的点能走,有的点不能走(墙),然后有的点是火源,火源和人一样,每次都是上下左右四个方向蔓延,速度一样是1,火也不可以从墙上跨过去,给你人的起点,终点是只要走到 ...