没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
21页
使用struts+spring+hibernate 组装web应用<br>大部分的Web应用在职责上至少能被分成4层。 这四层是:presentation(描述也就是视图层),persistence(持久也就是数据持久层),business(业务)和domain model(域模块也就是数据实体层)。每个层在处理程序上都应该有一项明确的责任, 而不应该在功能上与其它层混合,并且每个层要与其它层分开的,但要给他们之间放一个通信接口。 我们就从介绍各个层开始,讨论一下这些层应该提供什么,不应该提供什么。
资源推荐
资源详情
资源评论
使用 struts+spring+hibernate 组装 web 应用
Author: lamb
其实,就算用 建造一个不是很烦琐的 应用,也不是件轻松的事情。 在构架的一开始就有很多
事情要考虑。 从高处看,摆在开发者面前有很多问题:要考虑是怎样建立用户接口?在哪里处理业务逻
辑? 怎样持久化的数据。 而这三层构架中,每一层都有他们要仔细考虑的。 各个层该使用什么技术?
怎样的设计能松散耦合还能灵活改变? 怎样替换某个层而不影响整体构架?应用程序如何做各种级别的
业务处理(比如事务处理)?
构架一个 应用需要弄明白好多问题。 幸运的是,已经有不少开发者已经遇到过这类问题,并且建立
了处理这类问题的框架。 一个好框架具备以下几点: 减轻开发者处理复杂的问题的负担(“不重复发明轮
子”); 内部有良好的扩展; 并且有一个支持它的强大的用户团体。 好的构架一般有针对性的处理某一
类问题,并且能将它做好()。 然而,你的程序中有几个层可能需要使用特定的框
架,已经完成的 用户接口并不代表你也可以把你的业务逻辑和持久逻辑偶合到你的 部分。 举个例
子, 你不该在一个 控制器里面写 代码作为你的业务逻辑, 这不是控制器应该提供的。
一个 控制器应该委派给其它给在 范围之外的轻量级组件。 好的框架应该能指导代码如何分布。 更
重要的是,框架能把开发者从编码中解放出来,使他们能专心于应用程序的逻辑(这对客户来说很重要)。
下面将讨论怎样结合几种著名的框架来使得你的应用程序做到松弛耦合。
如何建立你的架构,并且怎样让你的各个应用层保持一致。?如何整合框架以便让每个层在以一种松散偶
合的方式彼此作用而不用管低层的技术细节?这对我们来说真是一种挑战。 这里讨论一个整合框架的策
略使用 种受欢迎的开源框架:表示层我们用 ; 业务层我们用 ;而持久层则用
。 你也可以用其他 !" 替换只要能得到同样的效果。 见图 #(框架组合示意图)
应用程序的分层
大部分的 应用在职责上至少能被分成 $ 层。 这四层是:(描述也就是视图层),
%(持久也就是数据持久层),(业务)和 &!!&(域模块也就是数据实
体层)。每个层在处理程序上都应该有一项明确的责任'而不应该在功能上与其它层混合,并且每个层要
与其它层分开的,但要给他们之间放一个通信接口。 我们就从介绍各个层开始,讨论一下这些层应该提
供什么,不应该提供什么。
表示层(The Presentation Layer)
一般来讲,一个典型的 应用的的末端应该是表示层。 很多 发者也理解 所提供的。 象业
务逻辑之类的被打包到 (%(()%(, 因此,我们很赞成使用 这样的框架。
下面是 所负责的:
管理用户的请求'做出相应的响应。
*提供一个 '委派调用业务逻辑和其它上层处理。
*处理异常,抛给 )%
*为显示提供一个模型
* 验证。
以下条款,不该在 显示层的编码中经常出现。 它们与显示层无关的。
*直接的与数据库通信,例如 调用。
*与你应用程序相关联的业务逻辑以及校验。
*事物管理。
在表示层引入这些代码,则会带来高偶合和麻烦的维护。
持久层(The Persistence Layer)
典型的 应用的另一个末端是持久层。这里通常是程序最容易失控的地方。开发者总是低估构建他们
自己的持久框架的挑战性。系统内部的持续层不但需要大量调试时间,而且还经常缺少功能使之变得难以
控制,这是持久层的通病。 还好有几个 +,对象关系映射开源框架很好的解决了这类问题。尤其是
。 为 - 提供了 + 持久化机制和查询服务'它还给已经熟悉 ./ 和 )0
的 开发者一个学习桥梁,他们学习起来很方便。 的持久对象是基于 0 和
%%。
请看下面的条目,你在持久层编码中需要了解的。
*查询对象的相关信息的语句。 通过一个 查询语言(./)或者正则表达
1的 )0 来完成查询。 ./ 非常类似于 ./22只是把 ./ 里的 和 %! 用 -%
和它的 3& 代替。 你需要学习一些新的 ./ 语言; 不管怎样,他们容易理解而文档也做的很好。
./ 是一种对象查询的自然语言,花很小的代价就能学习它。
*如何存储,更新,删除数据库记录。
*象 这类的高级 +, 框架支持大部分主流数据库,并且他们支持 04%& 关系,事物
处理,继承和多态(继承父类中的属性与方法 具有不同的数据类型与不同的行为)。
业务层(The Business Layer)
一个典型 应用的中间部分是业务层或者服务层。 从编码的视角来看,这层是最容易被忽视的一层。
而我们却往往在 层或持久层周围看到这些业务处理的代码,这其实是不正确的,因为它导致了程序代
码的紧密偶合,这样一来,随着时间推移这些代码很难维护。幸好,针对这一问题有好几种
!" 存在。 最受欢迎的两个框架是 和 0%。 这些为也被称为
!%%微小的容器,他们能让你很好的把对象搭配起来。 这两个框架都着手于‘依赖注
射’&&%5-%还有我们知道的‘控制反转’67这样的简单概念。
将关注于 的注射(译注:通过一个给定参数的 方法来构造 '有所不同于 %5)'
还提供了 -%58,%-%5等方式供我们选择。
把程序中所涉及到包含业务逻辑和 的 -%99例如 %!!
&(事物管理控制)、-% %对象工厂、%-%(服务组件)——都通过
:,/ 来配置联系起来。
后面我们会举个例子来揭示一下 是怎样运用这些概念。
业务层所负责的如下:
*处理应用程序的 业务逻辑和业务校验
*管理事物
*允许与其它层相互作用的接口
*管理业务层级别的对象的依赖。
*在显示层和持久层之间增加了一个灵活的机制,使得他们不直接的联系在一起。
*通过揭示 从显示层到业务层之间的 1 来得到 %。
*管理程序的执行(从业务层到持久层)。
域模块层(The Domain Model Layer )
既然我们致力于的是一个不是很复杂的 的应用, 我们需要一个对象集合,让它在不同层之间移动的。
域模块层由实际需求中的业务对象组成 比如'5'5 等等。 开发者在这层 不用管那些
按单设计服务 Design to Order Service,仅关注 &!-% 即可。 例如,
允许你将数据库中的信息存放入对象(&!-%),这样你可以在连接断开的情况下把这些数据
显示到 层。 而那些对象也可以返回给持续层,从而在数据库里更新。 而且,你不必把对象转化成
(这可能似的它在不同层之间的在传输过程中丢失),这个模型使得 开发者能很自然运用
,而不需要附加的编码。
一个简单例子
既然我们已经从全局上理解这些组件。 现在就让我们开始实践吧。 我们还是用 ,和
。介绍一下你如何使用这三个框架整合开发'并向你揭示 一个请求是如何贯穿于各个层的。
(从用户的加入一个 5 到数据库,显示;进而更新、删除)。
既然每个层是互相作用的,我们就先来创建 &!-%。首先,我们要在这些 -% 中要确定那
些是需要持久化的,哪些是提供给 %,那些是显示接口的设计。 下一步,我们将配置我们
的持久层并且定义好 的 +!。然后定义好 -%。有了这些组成部分
之后,我们将 使用 把这些连接起来。 最后,我们提供给 一个持久层,从这个持久层里我
们可以知道它是如何与业务逻辑层(%5)通信的
域对象层(Domain Object Layer)
这层是编码的着手点,我们的编码就从这层开始。 例子中 5与 5是一个 99
,5 的关系。 下面就是 !-%/5 的两个对象:
;com.bean.SysUser<包含了一个 SysUser 的概要信息
;com.bean.SysUnit<包含了 SysUnit 的详细信息
好好考虑怎你的 %" 命名'这反应出了你是怎样分层的。 例如 &!-% 在程序中可能打包
在 %!( 内。% 应该从 %!( 开始打包,而 )对象应该位于 %!(&。
反应 ! 和 )% 的 持久对象(%) 应该分别放在 %!((% 和
%!((6! 包。 准确的给包命名使得你的 % 很好分割并且易于维护,并且在你添加新的
% 时,能使得程序结构上保持上下一致。
持久层的配置(Persistence Layer Con#guration)
建立 的持久层 需要好几个步骤。 第一步让我们把 (Business Objects)持久化。 既
然 是通过 0 工作的, 因此 5 和 5 对象需要给所有的 3&加上
' 方法。 通过 :,/ 文件来映射+对象,以下两个 1! 文件分别映射了
5 和 5 对象。(这里有个叫 :% 工具可以自动生成你的 :,/ 影射文件)
25(!(1!
25(!(1!
你可以在=>2? =%=%!= 目录下找到这些 1! 文件。 的 %5 是
用来告诉程序 应该与哪个数据库通信,该使用哪个连接池或使用了 %, 应该加载哪些持久对
象。而 接口是用来完成 %,, 和 & 这些操作。 后面的我们将
讲述 %5 和 是怎样设置的。
业务层的配置(Business Layer Con#guration)
剩余20页未读,继续阅读
资源评论
qqkinger
- 粉丝: 2
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 三次样条插值在C语言如何实现步骤介绍.docx
- SD6084电流模式同步降压转换器固定频率1.5MHz二极管封装SOT23-5
- NokoPrint-wifi蓝牙USB连接打印机[安卓免费App]
- 20211115aMmF9NbS.zip
- 解线性方程组-直接解法:(Gauss)高斯消去法、列主元、全主元 - 北太天元
- MapReduce单词统计 hadoop集群
- 深度学习源码神经网络新闻分类多分类问题ipynb源码带数据集
- 深度学习源码神经网络用预训练的卷积神经网络ipynb源码带数据集
- 深度学习源码神经网络使用词嵌入ipynb源码带数据集
- 深度学习源码神经网络使用LSTM生成文本ipynb源码带数据集
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功