三层架构

概念

          三层架构(3-tier application) :通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。高内聚低耦合,可插拔式的,在同一层中保持内聚性,层与层保持松耦合。

关系图

                                       

三层组成:

     1,表示层:(USL,User Show Layer) 

           前台:用于和用户交互,界面的显示有jsp,js,html,jquery等web前端技术。

           后台:用于控制跳转,调用业务逻辑层(Struts2,SpringMvc)。

     2,业务逻辑层:(BLL,Business Logic Layer)

           接收表示层的请求,调用数据访问层的方法,逻辑性的代码。

     3,数据访问层(DAL,Data Access Layer)

           直接访问数据库的操作,原子性的操作,不可再拆分。

三层间的关系:

     上层  请求传递给下层,下层处理后返回给上层。

 

基本工作流程(如下图):

     如果要增加一个Student(实体类),增加的信息有sname(张三),sage(18),sex(男)这三个属性属于Student对象(实体类不属于三层但三层中是借助实体类来传递数据),就将这三个属性放对象中传递,就不每次传三个信息,直接传一个对象,在表示层面添加要信息提交到业务逻辑层,在业务逻辑层先调用数据访问层的查询方法,查询“张三”是否放在,如果不存在之后调用数据访问层的增加方法(直接增加到数据库),最后数据访问层将结果(增加成功还是失败)回复到业务逻辑层,业务逻辑层返回给表示层。

 大致代码流程:

        表示层:  

public String addStudent() {
	//搜集页面提交的数据student,调用业务逻辑层的addStudent
	studentService.addStudent(student); 
	return "index";
}

        业务逻辑层:                

//业务逻辑层:写业务逻辑判断  增加Student 先判断  查询该Student是否存在  不存在才进行增加
	public void addStudent(Student student) {

		if(调用数据访问层的查询方法判断该Student是否存在){ //不存在该Student

			增加 (调用数据访问层到增加方法)

		}else { //存在

			提示 该Student已存在!!!

		}

	}

数据访问层:

    //查询
	public Student findStudentBySname(Studnet student) {
		
		直接访问数据库,查询该用户是否存在
		
		return stu;
	}
	
	
	//增加
    public void findStudentBySname(Studnet student) {
		
		直接对数据库进行操作 增加
		
	}

总结:

         通过以上可看出,业务逻辑层不管数据访问层连接的是MySql还是Oracle,只要你给我调用查询,增加的方法就行了,如果我查询和增加之前用的时Oracle,现在我用MySql我只要改数据访问层的就行了,业务逻辑层的代码我们不需要动。
        上层依赖其下层,依赖关系不跨层 ,单向依赖(都知道电视剧的间谍都是单向联系,一旦暴露不至于被一锅端)而三层架构思想也是这样,如果那一层有错或需要改动代码就不至于改动整个项目,去改某一层就行了。

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值