一个项目中说系统分为表现层、控制层、逻辑层、DAO层和最终数据库五层架构 这具体是啥意思啊
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个项目中说系统分为表现层、控制层、逻辑层、DAO层和最终数据库五层架构 这具体是啥意思啊相关的知识,希望对你有一定的参考价值。
1、表现层:主要功能是显示数据和接受传输用户的数据,可以在为网站的系统运行提供交互式操作界面,表现层的应用方式比较常见,例如Windows窗体和Web页面。
2、控制层:将业务规则、数据访问、合法性校验等工作进行处理。通过COM/DCOM通讯与逻辑层建立连接。
3、逻辑层:将用户的输入信息进行甄别处理,分别保存。建立新的数据存储方式,在存储过程中对数据进行读取,将“商业逻辑”描述代码进行包含。
4、DAO层:主要是对非原始数据(数据库或者文本文件等存放数据的形式)的操作层,对数据库的操作,而不是数据,具体为业务逻辑层或控制层提供数据服务。
5、最终数据库:是数据库的主要操控系统,实现数据的增加、删除、修改、查询等操作。实际运行的过程中,最终数据库没有逻辑判断能力,为了实现代码编写的严谨性,提高代码阅读程度,一般软件开发人员会使用DAO层,保证数据处理功能。
扩展资料:
系统分为表现层、控制层、逻辑层、DAO层和最终数据库五层架构的优点是:
1、开发人员可以只关注整个结构中的其中某一层。
2、可以很容易的用新的实现来替换原有层次的实现。
3、可以降低层与层之间的依赖。
4、有利于标准化。
5、利于各层逻辑的复用。
6、结构更加的明确。
7、在后期维护的时候,极大地降低了维护成本和维护时间。
8、避免了表示层直接访问数据访问层,表示层只和业务逻辑层有联系,提高了数据安全性。
9、有利于系统的分散开发,每一个层可以由不同的人员来开发,只要遵循接口标准,利用相同的对象模型实体类就可以了,这样就可以大大提高系统的开发速度。
10、方便系统的移植,如果要把一个C/S的系统变成B/S系统,只要修改三层架构的表示层就可以了。业务逻辑层和数据访问层几乎不用修改就可以轻松的把系统移植到网络上。
11、项目结构更清楚,分工更明确,有利于后期的维护和升级。
参考技术A 表现层就是看到的东西,比如你现在看到的当前页面控制层就将你的请求从页面传到后台代码
逻辑层就是处理你的请求的代码
DAO层就是将数据存到数据库中的代码
数据库就是数据库了,存东西用的 参考技术B 用最简单的回答给你一个初步印象:
表现层:系统中的许多的界面
控制层:控制用户界面和程序数据之间的同步,在根据界面的操作完成对程序数据的更新,将程序数据的改变及时反应到用户界面
逻辑层:是系统中许多逻辑的处理
DAO层:其实是程序的工具包,就是好多重复的操作
最终数据库:系统用的数据库 参考技术C 就是mvc么
#私藏项目实操分享#专为初学者打造—Spring框架学习笔记
概述
Spring 是 Java Web 开发过程中使用较为广泛的框架,该框架是一个轻量级的应用框架,其强大的功能以及卓越的性能而受到众多开发人员的喜爱。
在实际项目开发过程中,将服务器分为三层:表现层(Web)、业务逻辑层(Service)、持久层(Dao),在目前主流的开发框架中,Spring对每一层都有独到的处理方式,如在表现层在表现层提供了与 Struts2 框架的整合,持久层中提供了jdbcTemplate技术,在业务逻辑层提供了事物管理和日志记录等。
一、Spring框架的组成
- 轻量级J2EE应用开发框架
- 主要构成:依赖注入容器,AOP实现、DAO/ORM支持、Web集成
- Core封装包:框架的最基础部分,提供IoC依赖注入特性。这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并真正地允许从成程序逻辑中分分离出依赖关系和配置。
- 构建与Core封装包基础上的Context封装包,提供了一种框架式的对象访问方法,有些像JNDI注册器。Context封装包的特性来自于Beans封装包,并添加了对国际化(I18N)的支持(如资源绑定)时间传播,资源装载的方式和Context的透明创建,比如说通过Servlet容器
- DAO提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码。并且,JDBC封装包还提供了一种比编程性更好的声明性事务管理方法,不仅仅是实现了特定接口,而且对所有的POJO都适用。
- ORM封装包提供了常用的“对象-关系”映射API的集成层。利用ORM封装包,可以混合使用所有Spring提供的特性进行”对象-关系“映射。如简单声明性事务管理。
- Spring的AOP封装包提供了符合AOP(Aspect—oriented-programming)面向切面编程。
- Spring的Web包提供了基础的针对web开发的集成特性,当与WebWork或struts一起使用Spring时,这个包可以与其他框架结合。
- Spring中的MVC封装包提供了Web应用的Model-View-Controller(MVC)实现。Spring的MVC框架提供了一种清晰的分离模型。Spring的MVC框架提供了一种清晰的分离模型,在领域模型代码和web form之间,并且还可以借助Spring框架的其他特性。
一头雾水的视频看起来:https://www.bilibili.com/video/BV1nz4y1d7uy
视频简介:
本套Java视频教程主要讲解了Spring4在SSM框架中的使用及运用方式。本套Java视频教程内容涵盖了实际工作中可能用到的几乎所有知识点。为以后的学习打下坚实的基础。
二、Spring框架的作用
典型的应用程序开发过程中,开发人员使用Struts、WebWork等应用程序框架开发前端程序,而采用JDO、Hibernate等持久层框架进行数据库操作,使用Spring IoC容器(控制反转)对整个系统中的组件进行配置和管理。
2.1、IoC
控制反转(Inversion of Control),指的是将创痛编程方式中的程序依赖关系的控制权从程序内部转移到程序外部,允许程序员从程序逻辑中分离出对具体实现的依赖和管理。
控制反转也体现了”面向接口编程”、分离调用与实现的设计思想。
2.2、依赖注入
由容器动态地将某种依赖关系注入到组件之间。
控制反转也称为”依赖注入“(Dependency Injection DI)
IoC/DI示例:
依赖注入是Java编程思想中”面向接口编程“的体现,因此在设计程序是,对于程序所依赖的组件往往以忌口的形式出现,而不直接使用具体的实现类:
//设计接口
public interface PersonLogic
String sysHello();
//使用接口
public class Action
public void execute()
//依赖接口的某个实现类的实例来完成处理
system.out.println(person.sayHello());
2.3、IoC/DI的实现方式
2.3.1、Type1 接口注入
方法的调用者通过方法参数提供一个接口的实现类(所依赖的组件)
//在方法参数中使用组件接口
public class DemoAction
public void execute(PersonLogic person)
//Action的功能实现依赖于通过方法参数传递的Logic对象
system.out.println(person.sayHello());
//调用方法时,从外部注入所依赖的组件
DemoAction action = new DemoAction();
PersonLogic person = new PersonLogicEnImpl();
action.execure(person);
2.3.2、Type2 设值注入
借鉴JavaBean的设计方法,把业务处理对象所以来的其它组件通过setter方法传递进来
//所依赖的组件以属性的形式出现,并提供相应的getter、setter方法
public class DemoAction
private PersonLogic person;
//通过设值注入所依赖的组件
public void setPerson(PersonLogic person)
this.person = person;
....
//调用方法时通过setter方法从外部注入所依赖的组件
DemoAction action = new DemoAction();
PersonLogic person = new PersonLogicCnImpl();
action.setPerson(person);
action.execute();
2.3.3、Type3 构造参数注入
在业务处理对象初始化的阶段,就将所以来的其他组件通过构造方法设置好;在初始化阶段完成之后,就可以得到一个完整的业务对象直接使用。
//所依赖的组件以属性的形式出现,并在构造方法中提供
public class DemoAction
//所依赖的组件以属性的形式出现
private PersonLogic person;
//通过构造方法在初始化阶段获得所依赖的组件
public DemoActionType3(PersonLogic person)
this.person = person;
//调用方法时通过构造方法从外部注入所依赖的组件
PersonLogic person = new PersonLogicCnImpl();
DemoAction action = new DemoAction(person);
action.execute();
2.4 依赖注入实现方式的比较
2.4.1、Type1 接口注入
历史悠久,在大量的容器、框架设计中都有采用,例如servlet,struts1等
灵活性、易用性不足,目前依赖注入模式的开发中Type2、Type3成为主流
2.4.2、Type2 设值注入
近似于传统的javabean模式,对于程序员来说,通过setter方法来设置依赖关系更加直观、自然
避免了庞大臃肿的构造函数,特别是在依赖关系复杂的情况下不用在构造函数中出现众多的构造函数,在编码中更为简洁
在某些框架中,对构造函数有一定的限制(往往要求提供一个默认的构造函数)这时Type3方式就显得无能为力。
2.4.3、Type3 构造参数注入
完全符合”在构造期即创建一个完整的、合法的对象“的java设计原则
所有的依赖关系在构造方法中集中体现
由于没有setter方法能改变依赖关系,所有组建在创建之后处于相对”稳定“状态。同时在一定程度上也对外界屏蔽了依赖关系的细节。
对于复杂的依赖关系,可以通过构造方法决定依赖关系注入的顺序。
三、应用
3.1、所需包
3.2、applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="fruit" class="com.it.spring.type1.Banana"></bean>
<bean id="song2" class="com.it.spring.type2.Song">
<property name="songName" value="小苹果"></property>
</bean>
<bean id="sing" class="com.it.spring.type2.Sing">
<property name="song" ref="song2"></property>
</bean>
<bean id="song3" class="com.it.spring.type3.Song">
<property name="name" value="小苹果"></property>
</bean>
<bean id="sing3" class="com.it.spring.type3.Sing">
<constructor-arg index="0" name="song" ref="song3"></constructor-arg>
</bean>
</beans>
四、总结
- Spring框架的产生
- Spring框架由依赖注入容器、AOP实现,DAO/ORM支持、Web集成等多个部分组成。
- Spring在应用程序中对整个应用系统中的组件进行配置和管理
- IoC将传统编程方式中的程序依赖关系的控制权从程序内部转移到程序外部,从程序逻辑中分离出对具体实现的依赖和管理。
- DI的实现方式中,接口注入出现最早,但因为灵活性、易用性方面的不足,IoC领域不再是主流选择。
- Type2设值注入和Type3构造参数注入都是目前比较主流的做法,但是由于实现方法的不同,在运用中也有各自的优点。
以上是关于一个项目中说系统分为表现层、控制层、逻辑层、DAO层和最终数据库五层架构 这具体是啥意思啊的主要内容,如果未能解决你的问题,请参考以下文章