javaweb应⽤的三层架构_Javaweb项⽬分层和三层架构Javaweb项⽬分层和三层架构
Javaweb项⽬分层和三层架构
⽂章⽬录
项⽬分层
三层架构
项⽬分层
DAO —— Data Access Object数据访问对象(接⼝)
DAOImpl —— DAO的实现类
entity ——数据对象的实体(有些地⽅叫model层)
Service(不是Server)——就是中间层、业务逻辑层(接⼝)
ServiceImpl —Service的实现类
Util —— ⾃定义⼯具类 Servlet——JAVA WEB⼩应⽤(有时叫Controller层)
1、Utils:主要⽤于存放连接⼯具如java数据库连接⼯具,在这⾥提供连接和关闭数据库的接⼝。
2、Dao层: 上⾯Util包中已经提供连接数据库接⼝,在本层中可直接调⽤,然后创建增删改查语句。
3、Service层:最重要的⼀层,对servlet层传⼊的数据,调⽤Dao层的⽅法操作和整合。
4、Servlet层:对Jsp中传⼊的数据,封装调⽤service操作。
5、test层:⽤单元测试的⽅式,没有问题再进⾏接下来的操作。
6、Bean层⾥是建⽴的模型层
⼀般情况下,Dao层、service层还要分为两层,⼀层是接⼝,另外⼀层做实现类。
1.JAVA中Servlet层、Service层 、modle层 、 Dao层的功能区分?
Servlet层⽤于接收请求并且调⽤对应service层处理请求,是Java各层中最接近浏览器的⼀层。Service层主要编写具体业务逻辑,每个Service⼀般包含⼀组相关的业务逻辑
modle/entity层(统称模型层)对应的数据库表的实体类,⼀般每个模型层类对应⼀个数据库“表”,⼀般是⽤于ORM对象关系映射,⼀⽅⾯⽅便从数据库取数据时保存为类,⼀⽅⾯也⽅便写⼊数据库,简⽽⾔之就是为了⽅便操作数据库
Dao层⼀般⽤于对数据库的具体操作,包括各种具体的增删改查语句和数据库数据和Java模型的映射。Util层主要⽤于存在项⽬各层都有可能出现、不好划分到某层中、出现频率较⾼的功能(类),⽐如连接数据库、获取系统参数、导出Excel表等等
2.为什么将Service(Dao)层设为接⼝层,单独拿出⼀个ServiceImpl(DaoImpl)作为实现层?
⽅便项⽬管理,增加代码的复⽤性。
当项⽬很⼤、代码很多时,可能存在多种业务逻辑类似但具体业务有所区别的需求,此时让它们都集成同⼀个接⼝层⽅便处理。
3.为什么要⽤service层封装?
⼀般某⼀个程序的有些业务流程需要连接数据库,有些不需要与数据库打交道⽽直接是⼀些业务处理,这样就需要我们整合起来到service 中去,这样可以起到⼀个更好的开发与维护的作⽤,同时也是MVC设计模式中model层功能的体现
4 . Entity、Pojo、JavaBean和DTO有什么区别?
Entity:实体bean,⼀般是⽤于ORM对象关系映射,⼀个实体映射成⼀张表,⼀般⽆业务逻辑代码,有些优秀框架中修改entity会直接同步到数据库。
JavaBean:是⼀种Java语⾔写成的可重⽤组件,类必须是具体和公共的,并且具有⽆参数的构造器,可以把数据封装起来,把应⽤的业务逻辑和显⽰逻辑分离开,降低了开发的复杂程度和维护成本(说⽩了就是⼀种类的规范,符合这种规范的都可以叫JavaBean)
Pojo:简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。
DTO:数据传输对象(Data TransferObject),是⼀种设计模式之间传输数据的软件应⽤系统。
5.模型类和VO、DTO、DO、PO分别是什么
VO(View Object):视图对象,⽤于展⽰层,它的作⽤是把某个指定页⾯(或组件)的所有数据封装起来。
DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的⽬的是为了EJB的分布式应⽤提供粗粒度的数据实体,以减少分布式调⽤的次数,从⽽提⾼分布式调⽤的性能和降低⽹络负载,但在这⾥,我泛指⽤于展⽰层与服务层之间的数据传输对象。
DO(Domain Object):领域对象,就是从现实世界中抽象出来的有形或⽆形的业务实体。
PO(PersistentObject):持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成⼀⼀对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段(或若⼲个)就对应PO的⼀个(或若⼲个)属性。
模型层:
下⾯以⼀个时序图建⽴简单模型来描述上述对象在三层架构应⽤中的位置
⽤户发出请求(可能是填写表单),表单的数据在展⽰层被匹配为VO。
展⽰层把VO转换为服务层对应⽅法所要求的DTO,传送给服务层。 l
服务层⾸先根据DTO的数据构造(或重建)⼀个DO,调⽤DO的业务⽅法完成具体业务。
服务层把DO转换为持久层对应的PO(可以使⽤ORM⼯具,也可以不⽤),调⽤持久层的持久化⽅法,把PO传递给它,完成持久化操作。
对于⼀个逆向操作,如读取数据,也是⽤类似的⽅式转换和传递。
springboot框架的作用
三层架构
三层由表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)组成。
1.表现层(UI)
职责:①向⽤户展⽰特定的业务数据
②采集⽤户的信息和操作
原则:⽤户⾄上,兼顾简洁
2.业务逻辑层(BLL)
职责:① 从UI中获取⽤户指令和数据,执⾏业务逻辑
②从UI中获取⽤户指令和数据,通过DAL写⼊数据源
③从DAL中获取数据,以供 UI 显⽰⽤
机制:① UI –> BLL –> UI
② UI –> BLL –> DAL –> BLL –> UI
3.数据访问层(DAL)
作⽤:跟数据源打交道
职责:①执⾏对数据的操作(增删改查)
4.数据对象层
数据对象层包含了项⽬需要使⽤的数据对象,⽤数据对象来传递数据,它避免了各个层的交叉引⽤。
⼀般⼀个表对应⼀个数据对象。
UI():主要是指与⽤户交互的界⾯。⽤于接收⽤户输⼊的数据和显⽰处理后⽤户需要的数据。
BLL:(业务逻辑层):UI层和DAL层之间的桥梁。实现业务逻辑。业务逻辑具体包含:验证、计算、业务规则等等。
DAL:(数据访问层):与数据库打交道。主要实现对数据的增、删、改、查。将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库。(当然这些操作都是基于UI层的。⽤户的需求反映给界⾯(UI),UI反映给BLL,BLL反映给DAL,DAL进⾏数据的操作,操作后再⼀ ⼀ 返回,直到将⽤户所需数据反馈给⽤户)
Javaweb项⽬分层和三层架构相关教程
Nhibernate快速开始,IIS ASP.NET MVC项⽬,MSSQL
Nhibernate快速开始,IIS ASP.NET MVC项⽬,MSSQL 刚接触Nhibernate,(Nhibernate是什么,哈哈,百度,以下简称NH)⾛了不少弯路,写下过程,参考内容 官⽹ Chapter 1. Quick-start with IIS and Microsoft SQL Server,不过它是英⽂的,看起来有点难,⽽且
springBoot项⽬的配置⽂件
springBoot项⽬的配置⽂件 springBoot项⽬的配置⽂件的启动顺序 springBoot项⽬的配置⽂件 没有默认启动⽂件的时候,报错内容 设置启动⽂件 成功配置⽂件的标志 springBoot项⽬的配置⽂件 springBoot项⽬的配置⽂件可以有多个,配置⽂件启动顺序:application
解决导⼊Springboot项⽬⽆法识别启动类和普通类都是灰⾊
解决导⼊Springboot项⽬⽆法识别,启动类和普通类都是灰⾊ 由于我已解决这个问题,之前的截图就没有了 类的图标是灰⾊上⾯⼀个橘⾊的圆点 这个是我暂时发现两个原因,以是导⼊的时候选择了项⽬上⼀级的⽂件夹,导致IDEA⽆法解析项⽬,⼆是导⼊后IEDA直接⽆法
快读解决 vue 项⽬ build 打包之后出现源代码的问题
快读解决 vue 项⽬ build 打包之后出现源代码的问题 浏览器通过按 F12 然后打开控制台,点击 Source ,再点击 webpack:// ,点击相应的 vue ⽂件 ,竟然发现了 vue 的代码竟然完全显⽰出来了,啊这。。。。好吧,有点坑了,⽽且官⽅的⽂档中也没有说(或许我
JavaWeb总结之HttpServletResponse对象(⼆)
idea下Springboot项⽬的GDAL配置
idea下Springboot项⽬的GDAL配置 idea下Springboot项⽬的GDAL配置 项⽬加⼊坐标转换功能,开始使⽤的是Proj4,现在改⽤后台GDAL转换。 GDAL java配置需要下载GDAL包,官⽹有已经编译好的包,下载解压。 下⾯是项⽬配置,先拷贝⽂件,包括dll⽂件和函数定义的ja
使⽤Git上传项⽬代码到github
使⽤Git上传项⽬代码到github 为什么80%的码农都做不了架构师? ⽬录(?)[+] Github是⼀个基于Git的代码托管平台,我们可以创建⾃⼰的仓库(repository), Github上的仓库分为两种: 私有仓库 (private repository)和 公共仓库 (public repository),⼆者的
create-react-app创建项⽬失败的解决⽅法总结(全)
create-react-app创建项⽬失败的解决⽅法总结(全) create-react-app创建项⽬失败的解决⽅法 前提:必须管理员⾝份来运⾏cmd才可创建项⽬ 问题1:⽬录不完整,缺少src⽂件 问题2:需卸载yarn 问题3.npm或node版本过低 前提:必须管理员⾝份来运⾏cmd才可创

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。