基于JSF、Spring和Hibernate的网上报销系统的设计与实现

时间:2022-08-24 03:43:24

基于JSF、Spring和Hibernate的网上报销系统的设计与实现

1功能需求

网上报销系统中的报销用例的使用者主要包括两类用户:普通员工和财务人员。普通员工拥有填写、修改、提交报销单的权限。财务人员具有接单、审核、打回和确认等权限。

2设计

网上报销系统采用分层的设计思想构建,多层架构把整个系统划分成明显的功能单元:客户端、表示层、业务逻辑、综合、EIS层。这种架构确保了责任的明确划分,使系统更加易于维护和扩展。这种架构设计对于具体技术的使用是中立的,即每一层都可以使用其它框架体系替代。

2.1表示层用JSF实现

表示层使用JSF,其功能主要用于收集用户的输入,控制页面导航,将用户输入委托给业务逻辑层等。表示层也能够验证用户输入和维护应用会话状态。

JSF引入了两个新概念:managedbean和backingbean。JSF提供了强大的管理bean的机制。一个被JSF管理的JavaBean对象叫做managedbean。一个managedbean描述了一个bean是如何被创建和管理的,这些和bean的功能无关。

Backingbean定义了页面上的UI组件的属性和处理逻辑。每一个backingbean的属性对应一个组件或者组件的值。Backingbean同时定义了一组执行组件功能的方法,比如验证组件中数据的操作。

2.2业务逻辑层用Spring框架实现

网上报销系统中的具体业务逻辑处理都包含在此层中,在此选用Spring,它能很好地整合Hibernate并提供有效安全的Hibernatesession操作,Spring在应用上下文中处理HibernateSessionFactory的配置以及处理JDBC数据源,Spring还使应用程序很容易测试。

2.3集成层用Hibernate实现

集成层是业务逻辑层与EIS层之间的一个桥梁。在此选用Hibernate,它是一个开源的O/Rmapping框架,O/Rmapping可以减少JDBCAPI的使用。Hibernate对所有的主流SQL数据库管理系统都提供了支持。

3实现

在整个实现过程中采用面向接口的编程设计,在表示层有一个bakingbean被使用:ExpenseBillBean(用于操作报销单)。业务逻辑层包含两个业务服务:ExpenseTypeService和UserService,ExpenseTypeService主要将用户填写的不同类型的报销单数据保存到数据库中,并生成会计凭证信息,UserService主要负责用户的会话管理及权限控制。业务逻辑层还包含三个业务对象ExpenseType(报销单类型)、ExpenseBill(报销单)和User(用户)。集成层包含2个DAO接口以及它们的Hibernate实现。Spring的applicationcontext连接和管理位于业务逻辑层和集成层的大部分对象bean。ServiceLocator将JSF和业务逻辑层结合起来。

下面描述如何实现上述用例的具体细节:

一是表示层,其实现包括创建JSP页面、定义页面导航、创建和配置backingbean、联结JSF和业务逻辑层,例如表示层和业务逻辑层之间的连接,其ServiceLocator抽象了查找service的逻辑。ServiceLocator定义成一个接口。ServiceLocatorBean作为一个JSFmanagedbean实现了ServiceLocator接口,它从Spring的applicationcontext寻找service:

ServletContextcontext=FacesUtils.getServletContext();

this.appContext=WebApplicationContextUtils.getRequiredWebApplicationContext(con

text);

this.expenseTypeService=(ExpenseType

Service)this.lookupService(TYPE_SERVICE_

BEAN_NAME);

ServiceLocator在BaseBean中作为一个属性而定义。继承自BaseBean的这些managedbean都可以通过它查找服务,并且,JSF的managedbean机制能够将ServiceLocator的具体实现连接给这些managedbean。

二是业务逻辑层,这一层的任务有:定义业务对象(BO),创建service接口以及它们的实现,使用Spring连接它们。因为需要Hibernate提供持久化,所以ExpenseBill和User这些业务对象需要为他们所有的字段提供getter/setter方法。还要创建业务服务,配置Spring,Spring与Hibernate集成。

4结论

以上展示了如何整合JSF、Spring和Hibernate来创建一个实际的Web应用。在企业信息化需求不断增长的环境下,如果能合理使用这三种框架来开发满足企业实际需要的应用程序,不仅能使我们的开发进度提前而且也能保证程序的质量,以便于更好地为企业发展服务。

上一篇:Windows Vista防火墙使用的十大注意事项 下一篇:Word九条常用技巧推荐