Java海阔天空

编程是我的生活,但生活不仅仅是编程。

基于SSH2框架构建JavaEE应用程序(1)

一、前言

虽然Struts2+Spring3+Hibernate3三大框架上市已久,但廉颇未老,目前仍然是众多JavaEE应用程序的首选技术。本文将向您详细阐述SSH2应用程序的构架、思想、技术与技巧,打通JavaEE的任督二脉,行文力求通畅简洁,希望能让读者豁然开朗,快速掌握JavaEE应用程序的开发流程与关键技术。


本文并非面向无Java基础的读者,您需要掌握一定的编程思想、Java技术和Struts2、Spring3与Hibernate3等框架技术,并了解Oracle等DBMS。


二、JavaEE体系架构

JavaEE体系架构采用传统的MVC设计模式,分为Model、View、Controller三层,其中:Model即模型层,定义数据模型和业务逻辑。为了将数据访问与业务逻辑分离,提高业务精度,降低代码之间的耦合,模型层又细分为DAO层与业务层,DAO全称为Data Access Object(数据访问对象),将数据库访问代码封闭起来,Hibernate API也在此封装,不再出现在其他层或向其他层暴露;业务层是整个系统最核心也最具价值的一层,该层封装应用程序的业务逻辑,处理数据,关注客户需求,在业务处理过程中会访问原始数据或产生新数据,或者需要持久化数据,DAO层提供的DAO类能很好地帮助业务层完成数据处理,业务层本身则侧重于对客户需求的理解和业务规则的适应,自然也包括大部分的计算,总体说来,DAO不处理业务逻辑,只为业务层提供辅助,获取原始数据或持久化数据等操作。View即视图层,为最终用户提供一个友好的交互界面,用户可以查看请求结果,也可以通过表单等交互手段实现数据录入。Controller层即控制器,控制器是Model与View的桥梁,将二者很好的衔接,通过View接收用户数据,Controller将数据传输给Model,Model对数据进行处理;或者Model读取数据后,Controller将数据传递给View,View向用户展示数据。一来一往,Controller成了Model与View之间的快乐使者。


关于MVC更多的解释请参考百度百科链接(http://baike.baidu.com/view/31.htm),下图展示了MVC的结构:



 

从调用关系上看,左为高层,右为低层,下为高层,上为低层,高层可以调用低层,但低层不能调用高层,层与层之间的调用是单向的。


从数据传输上看,数据可以从视图层传输到DAO进而保存到数据库,也可以从数据库中读取数据进行处理或者显示,所以,数据的传输是双向的。


从技术实现上看,视图层使用HTML/JSP组件实现,控制器使用Servlet或Action组件实现,模型层使用JavaBean组件或EJB技术实现。


Hibernate封装在DAO层,负责数据访问操作;Struts充当控制器角色,对用户数据进行合法性检验和类型转换,为视图层提供标签简化页面显示,提供国际化支持等等;Spring是应用程序的管家,DAO、Service(业务)、Action等对象由Spring创建并维护各对象之间关系,同时提供声明式事务管理,简化事务编程。


三、如何理解业务?

软件工程中的业务与日常生活中的业务不同,平常的业务偏指销售,指需要处理的事务。这里的业务涉及一个以上组织,按某一共同的目标、通过信息交换实现的一系列过程,其中每个过程都有明确的目的,并延续一段时间。将范围更局限一点,业务是指为完成某个事务而进行的一系列活动,需要对象的参与并按照一定的规则触发一系列行为。


业务包含三大元素:对象、行为和业务规则。


对象是主体,是行为的触发者,这里的对象可能是用户、订单、产品或DAO对象,也可能是外部系统,比如支付系统。一个业务的完成,可能需要一个对象参与,也可能是多个对象参与,这取决于业务本身。行为是对象的动作,多个行为按照一定的顺序执行,构成业务完整的执行能力。业务规则是对业务的一种约束,每一个行为所产生的结果必须对规则负责,规则监视对象、行为以及业务执行的结果,保证业务的正确性和准确性。


我们以取款业务为例,来分析本业务中涉及的对象、行为和规则。


取款业务描述:输入用户账号(银行刷卡完成),提醒用户输入密码,银行系统核对密码是否正确,如果正确,用户输入取款金额,系统更改账户金额并记录取款信息,打印票据,取款完成。


这是一个司空见惯的业务,从这个业务中,我们提取出如下的元素信息:

对象:账号,交易,打印机;

行为:核对卡号和密码,更改账户余额,记录取款交易信息,打印票据;

规则:一次最多只能取2000元,一天最多只能取5次,取款金额大于50000需要预约;

 

根据以上的分析,我们很容易转变成源代码。很多时候,我们遇到的业务比这个要复杂得多,项目的规模也很大,这就要求我们具备全局观,控制全场,运筹帷幄,仔细分析,辅助建模,达到最理想的效果。


——作者:李赞红 (lifenote@21cn.com),转载请保留版权!

posted on 2011-02-18 13:26 李赞红 阅读(3829) 评论(4)  编辑  收藏

评论

# re: 基于SSH2框架构建JavaEE应用程序(1) 2011-02-21 11:11 --

好久没有看到你的文章了。  回复  更多评论   

# re: 基于SSH2框架构建JavaEE应用程序(1) 2011-02-21 11:40 李赞红

@--
谢谢关注!  回复  更多评论   

# re: 基于SSH2框架构建JavaEE应用程序(1) 2011-02-26 21:16 zanewin

此文能够打通任督二脉?  回复  更多评论   

# re: 基于SSH2框架构建JavaEE应用程序(1) 2011-02-26 22:23 李赞红

@zanewin
有什么建议和意见欢迎一起探讨,谢谢!  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

导航

<2011年2月>
303112345
6789101112
13141516171819
20212223242526
272812345
6789101112

统计

常用链接

留言簿(12)

随笔档案(28)

相册

技术友情博客

搜索

最新评论

阅读排行榜

评论排行榜