JavaWEB(三层架构)

目录

软件分层模式
1.为什么需要分层
 业务处理的代码与JSP代码混在一起,不易于阅读,不易于代码维护,采用三层软件设计架构后,软件系统在可扩展性和可复用性方面得到极大提高,

2.软件设计中的分层模式
分层模式是最常见的一种架构模式;甚至可以说分层模式是很多架构模式的基础。

3.分层
    ①分层模式是将解决方案的组件分隔不同的层中(分工合作,细化)
    ②每一层的组件应保持内聚性(部门之间常联系)
    ③每一层都应与其下面的各层保持松耦合


4.三层架构:表示层、业务逻辑层、数据访问层
    ①表示层:位于最外层 ( 最上层 ),使用户能够直接访问,用于显示数据和接收用户输入的数据,为用户提供一种交互式操作界面。在 Web 应用程      序中,表示层一般以 JSP 文件、HTML文件为主;

    ②业务逻辑层:其主要功能是提供对业务逻辑处理的封装,在业务逻辑层中,通常会定义些接口,表示层通过调用业务逻辑层的接口实现各种操作,      如数据有效性的检验. 业务辑描述等相关功能,业务逻辑层经常放在 service 包或 biz 包下,btz 是英文 buslness 的缩写,意思是 '业务逻      辑";

    ③数据访问层:该层实现对数据的保存和读取操作。数据访问,可以访问关系数椐库、文件或 XML 文档等。数据访问层通常放在 dao 包下,DAO 是      英文 Data Access Object 的缩写,意思是 "数据访问对象 ";

【面向接口编程】

5.分层的实现
   S1阶段:实体包,工具包,dao包,ui包;
   S2阶段:数据访问层(DAO)、业务逻辑层(BIZ|SERVICES)、表示层(jsp)、实体包。

1. 表示层 jsp+html; 

2. 业务逻辑层 biz/service; 

3. 数据库访问层 dao(访问数据库、文本文件、XML文件)。 

Entity实体类不属于某层,三层都可以调用,主要用于封装数据。

JSP:收集、展示数据; 

JSP/servlet:处理数据,访问service; 

Service:业务逻辑; 
Dao:基本操作,不带业务逻辑(增删改查); 

Database:数据库。


高内聚  低耦合

高内聚:功能内部的代码非常严谨

低耦合:功能与功能之间依赖性很小,一个功能出问题不会影响其它功能的运行,俗称:模块化。
 

三层架构

1.JavaEE开发模式

1.1 开发模式

解决问题的一种常规的"套路"。

1.2 JavaEE中的开发模式

模型1
    模型1第一代
        javaweb03-07
        在一个JSP页面中存储这所有交互的代码(HTML+CSS+JS+数据库交互的代码)
    模型1第二代
        javaweb-08  javabean
        将数据库查找的数据以实体的方式进行封装(javabean)
        dao方法
​
模型2
    不讲(MVC架构)
​
三层架构---思想
    将一个web应用程序分成三层去管理。
    
    web层
    
    业务逻辑层
    
    数据访问层
    
    
    “高内聚   低耦合”
    高内聚:每个模块做事情非常严谨,而且独立
    低耦合:在某种情况下,模块与模块有联系。
    
    
    去饭店吃饭
    
    我   服务员(web层)   厨师(业务逻辑层 组装的)    小厨(数据访问层)(切菜,买菜,洗菜)
​
​
web程序为什么要分层????
​
​
三层架构:
1.显示层:JSP  HTML,css ,JS,do处理页面
​
2.业务逻辑层
    services|biz   从数据访问层拿到数据后进行相关判断逻辑处理。
    简单业务逻辑层:直接从数据访问层拿到数据进行操作即可。
    
    复杂业务逻辑层:
            从数据访问层拿到数据后,做筛选
            比如:删除      从数据访问层拿到对应的数据进行判断,看删除的数据是否在表中存在
                            如果存在,再调用删除的方法删除即可。
            oracle事务处理。  (当实现一个功能时,需要满足2个条件以上,事务处理的机制:要么一起成功,要么一起失败)   
            银行转账
​
3.数据访问层
    dao(接口+实现类),utils
        从DB中获取数据  增删改查
        
        
4.通过实体将三个层进行联系起来。
    实体不属于三层
​
​

利用三层架构原理实现编写web程序的流程

dao层

业务逻辑层 services biz

web层

三层架构

1.主要内容JavaWEB(三层架构)_第1张图片

 

2.JavaEE开发模式

2.1 什么是开发模式?

模式在开发过程中总结出的"套路",总结出的一套约定俗称的设计模式。

2.2 JavaEE模式

  • model1模式

  • model2模式

  • 三层架构

model1模式

JSP Model1

JSP Model1是JavaWeb早期的模型,它适合小型Web项目,开发成本低!Model1第一代时期,服务器端只有JSP页面,所有的操作都在JSP页面中,连访问数据库的API也在JSP页面中完成。也就是说,所有的东西都耦合在一起,对后期的维护和扩展极为不利。

JavaWEB(三层架构)_第2张图片

 

JSP Model1的优化(Model1第二代)

JSP Model1优化后有所改进,把业务逻辑和数据访问的内容放到了JavaBean(狭义JavaBean:实体类,广义JavaBean:实体类,dao,service,工具类)中,而JSP页面负责显示以及请求调度的工作。虽然第二代比第一代好了些,但还让JSP做了过多的工作,JSP中把视图工作和请求调度(控制器)的工作耦合在一起了。

JavaWEB(三层架构)_第3张图片JavaWEB(三层架构)_第4张图片

 

model2模式(后续讲解)

JSP Model2模式已经可以清晰的看到MVC完整的结构了。

JSP:视图层,用来与用户打交道。负责接收数据,以及显示数据给用户;

Servlet:控制层,负责找到合适的模型对象来处理业务逻辑,转发到合适的视图;

JavaBean:模型层,完成具体的业务工作,例如:开启、转账等。

JavaWEB(三层架构)_第5张图片

小结:这就是javaweb经历的两个时期,JSP Model2适合多人合作开发大型的Web项目,各司其职,互不干涉,有利于开发中的分工,有利于组件的重用。但是,Web项目的开发难度加大,同时对开发人员的技术要求也提高了。

3.三层架构(分层思想)

3.1 软件架构模式

什么是架构模式?根据维基百科:架构模式是针对特定软件架构场景常见问题的通用、可重用解决方案。架构模式类似于软件设计模式,但范围更广。本文将简要解释10种常见架构模式及其用法、优缺点。

分层模式(Layered pattern)
客户端-服务器模式(Client-server pattern)
主从模式(Master-slave pattern)
管道-过滤器模式(Pipe-filter pattern)
代理模式(Broker pattern)
点对点模式(Peer-to-peer pattern)
事件-总线模式(Event-bus pattern)
模型-视图-控制器模式(Model-view-controller pattern)
黑板模式(Blackboard pattern)
解释器模式(Interpreter pattern)

3.2 分层模式

此模式用于可分解为子任务的结构化程序,每个子任务都位于特定的抽象层级,每一层都为上一层提供服务。

分层模式是最常见的一种架构模式;甚至可以说分层模式是很多架构模式的基础。

分层思想是为了让每层中的组件保持内聚性,每层都应与其下面的各层保持松耦合,对于小型的项目一般三层就够了,分层的方案有很多种,其中最具影响力也最成熟的就是三层架构.

3.3 为什么需要分层

业务处理的代码与JSP代码混在一起,不易于阅读,不易于代码维护,采用三层软件设计架构后,软件系统在可扩展性和可复用性方面得到极大提高

3.5 三层架构概述

三层架构就是为了符合“高内聚,低耦合”思想,把各个功能模块划分为表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)三层架构,各层之间采用接口相互访问,并通过对象模型的实体类(Model)作为数据传递的载体,不同的对象模型的实体类一般对应于数据库的不同表,实体类的属性与数据库表的字段名一致。

表示层(UI)   web层   显示层
表示层又称表现层或视图层或用户界面层 UI(User Interface layer):就是实现与用户交互的功能,将用户的需求传达和反馈,即用于接受用户输入的数据,同时反馈相关的输出数据展示给用户。
【职责】收集用户的数据和需求、展示数据
​
业务逻辑层(BLL)
业务逻辑层 BLL(Business Logic Layer):是连接表示层和数据访问层的桥梁,实现业务逻辑的功能。可以对接受到的数据进行处理、执行相关的计算等一些逻辑操作。
​
业务逻辑层通过调用数据访问层的各种操作方法,将这些方法按一定的逻辑组合起来实现具体需求,将这个过程比作搭积木的过程。
【职责】数据加工处理、处理DAO完成业务实现
​
数据访问层(DAL )
数据访问层又称持久层 DAL (Data access layer):主要用来操作数据库中的数据,实现数据的增加、删除、修改、查询等操作,并将操作结果反馈到业务逻辑层 BBL。
​
比如在数据访问层定义了一些操作数据的方法,即增、删、改、查的方法,将这些方法比作一块块的积木。
【职责】想业务层提供数据,将业务层加工后的数据同步到数据库

JavaWEB(三层架构)_第6张图片

比如:

1、用户需要计算功能 用户在 UI 层输入用于计算的数据,然后传递给 BLL,在 BLL 进行计算操作,最后再将结果返回给 UI 层,通过UI 层展示给用户。 即:UI —> BLL —> UI

2、用户登录功能 用户在 UI 层输入相关的登录信息,然后传递给 BLL,在 BLL 进行相关的逻辑验证后将需要操作的指令传递给DAL,DAL根据接收到的指令对数据库中的数据进行相关的操作,然后将操作结果反馈给 BLL,BLL进一步反馈给 UI层,在 UI层展示用户需要的信息。 即:UI —> BLL —> DAL —> BLL —>UI

实体类库(Entity)

实体类库是数据库表的映射对象,即将一个数据表映射成一个实体类,表中的每一个记录封装为该实体类的对象,表中的每个字段对应实体对象中的一个属性。实体类库主要用于封装表中数据方便在表示层、业务逻辑层以及数据访问层之间进行传输,实现各个结构层的参数传输

JavaWEB(三层架构)_第7张图片

 

JavaWEB(三层架构)_第8张图片

 

相关层的Java包命名规则 对应的层
com.xxx.项目名.utils 保存相关工具类
com.xxx.项目名.entity 保存 javabean 标准类(实体类)
com.xxx.项目名.dao 保存dao层接口 (数据访问层)
com.xxx.项目名.dao.impl 保存dao层接口的实现类
com.xxx.项目名.service 保存service层接口 (业务逻辑层)
com.xxx.项目名.service.impl 保存service层接口的实现类

你可能感兴趣的:(eclipse,java)