对 DAO进行管理 相互集成 Struts(承担表示Spring(利用Hibernate(实现 层和控制层的角IoC进行各种数据访问和O/R 色) 对象的管理 ) Mapping)
(1)对于表示层
经验表明,最好的方法是选择已存在的并已得到证明了的Web应用框架,而不是自己去设计和开发新的框架。我们拥有多个可选择的框架,如Struts,WebWork和JSF等,在本项目中,我们选择采用Struts。 (2)EJB 和POJO都可以用来创建业务逻辑层
如果应用是分布式的,采用具有remote接口的EJB是一个好的选择;由于本系统是一个典型的不需要远程访问的Web应用,因此选用POJO,并充分利用Spring 框架的IoC和AoP的特性,将是实现业务逻辑层的更好选择。
(3)在持久层中由于需要利用关系型数据库实现数据的持续化,但在应用中可以存在多种方法可用来实现:
? JDBC:这是最为灵活的方法,然而,低级的JDBC难以使用,而且质量差的JDBC代码很难运转良
好
? EJB Entity beans:CMP的Entity bean是一种分离数据访问代码和处理ORM的昂贵的方法,它
是以应用服务器为中心的方法,即Entity bean不是将应用与某种数据库类型而是EJB容器约束在一起。
? O/R Mapping 框架:一个ORM框架采用以对象为中心的方法实现数据持续化,一个以对象为中心
的应用易于开发并具有高度的可移植性----在该领域中存在几个框架可用—JDO、Hibernate、TopLink以及iBATIS 和CocoBase等。在本项目中我们选用Hibernate。
2、架构示图 Struts表示Spring业务处Hibernate数 Struts控制理层 据访问层 层 (JSP和层 HTML) 前端控业务控制数据访数据访 制器类 类 问服务 问操作 业务业务 业务业务 接口 处理处理实体数据操数据连接持久实 基类 体类 类 类 作类 类 本系统采用了多层非分布式的构架,上图展示了系统的分层以及每一层中所采用的技术和对应的框架,并且各层将存在于同一个Web容器中。
3、该形式的总体架构设计的主要特点 (1)遵循Sun J2EE中两个主要的原则:“多层架构、松藕合”
由于采用分层的设计方式,各个模块功能相互独立封装,层与层之间关联少,保持松耦合连接,稳定性高,便于扩展和维护。
(2)本项目中的每一层所采用的技术都是可替换的
例如Struts可以被JSF或者Tapestry替换掉,JDO可替换Hibernate。 ? 在每个层中都不同程度地应用了J2EE中常用的设计模式
? 使用基于POJO的轻量级架构,从而使得系统易于测试;便于移植;“开发-发布”周期短。
4、各层中的组件
(1)表示层由Struts JSP组件实现,利用了Struts 中的构造标签技术,在用户浏览界面利用表单构造网页的整体结构
(2)控制层由Struts中的ActionServlet和 Action组件实现,并利用ActionForm封装JSP页面中的表单。将页面整体作为对象处理,在相应的Action了中调用业务逻辑,完成业务功能。
? 前端控制层: ActionServlet类,并且对它加以扩展。
? 业务中心控制层:各个业务Action类(标准Action类和 DispatchAction类) (3)业务处理层由Spring中的IoC来管理
? 业务处理基类:将各个业务功能模块中共同的部分抽象出,从而完成一些共同的功能。 ? 各个业务处理类:完成具体的应用功能的各个模块 (4)数据访问层由Hibernate框架来提供技术支持
? 数据库操作(DAO)类:完成对数据库数据的相关操作(增、删、解、查询等)。 ? 数据持久(PO)类:针对应用系统中的各个数据库表提供对应的POJO类
2.3.3各层中应用了相应的主流的J2EE框架技术
1、服务器端表示层Struts框架完成如下工作
? 客户端表单进入的验证; ? 管理请求和响应;
? 提供控制器来完成页面流转和向业务逻辑层的委托; ? 返回到客户端页面显示。
其它:标签技术、MVC、成熟技术、ActionForm技术等 2、业务逻辑层Spring框架完成如下工作
? 为服务器段表示层提供松散的耦合; ? 处理真实的企业级应用; ? 事务管理的选择;
? 协调各种业务逻辑对象之间的依赖关系; ? 为持久层和业务逻辑层之间提供松散耦合; ? 实现持久层的业务逻辑。 其它:
? 解藕(类与类、系统本身脱离容器)
? AOP(统一地解决系统中一些“切面”-----技术性的问题) ? IoC(对象的管理由容器完成)
? POJO(普通JavaBean)-----不继承框架中某个类
? 容器服务(事务、数据库连接池)---Spring中已经提供了 ? 包装其它的框架(简化)
3、持久层Hibernate框架完成如下工作
? 对数据库进行查询,得到持久化对象PO;
? 对数据库进行添加、删除、修改的动作并以PO来进行。
域模型层VO完成如下工作:为各层之间数据交互服务,同时也在持久层部分可以描述一个实体,并与PO进行转换。
其它:
? 屏蔽数据库的差异性-----数据库方言
? 以面向对象的数据库访问(减少了SQL) ? 各种对象关系O/R Mapping实现 ? 技术成熟-----企业开发
? 统一的事务管理实现
? 提供各种缓存技术以提高速度(性能)
2.3.4系统基于MVC设计 表示层中的请求 控制调度层 模型组件 表示层中的业务成功显示 业务处理层 数据访问层 表示层中的业务失败显示 2.3.5总体架构设计
MS SQLServer2000数据库 基于DBCP的数据库连接DAO模式 DTO模式 基于Hibernate技术的数据访问组各种具体的业务组件 各种具体的业务组件 各种具体的业务组件 各种具体的业务组件 UserException Template模式 采用Spring中的IoC来管理对象 业务基类和面向业务接口编UserRegisterAction UserLoginAction MessageActionClass BBSSearchAction UserRegisterForm UserLoginForm MessageFormClass BBSSearchForm 复合视图模式 BBSActionServlet 用户 index.jsp userRegister.jsp View Helper模式 自定义的标签 视图助手组件 UserLogin.jsp Fa?ade模式 Messageindex.jsp SearchBBS.jsp Struts中的各种标签库中的标签 2.4 系统结构(系统各个组件设计) 2.4.1体系结构包图(架构包图)
2.4.2组件设计图(系统中的各个组件)
2.4.3类图与接口设计(各个组件中的相关的类和接口)
1、数据访问层组件