科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基于Struts和Hibernate软件架构实现基金管理信息系统

基于Struts和Hibernate软件架构实现基金管理信息系统

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文详细介绍了当前流行的开源框架Struts和Hibernate,将两者结合起来设计并实现了一个基于Web的基金信息管理系统。

作者:邓梅/张焕水 来源:计算机与信息技术 2007年9月4日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)

4.1  控制层的实现

Struts控制器组件主要负责接受用户请求,更新模型,以及选择合适的视图组件返回给用户,它在模型和视图之间起这中间调度作用。Struts的核心是控制器部分的ActionServlet,而ActionServlet通过一个xml配置文件来配置业务流程,因此这个模块用了一个struts-config-fund.xml来配置业务流程,同时在web.xml中申明这个配置项。
 
在struts-config-fund.xml中,声明每个业务所需要的客户端请求、处理该请求的Action类,收集该次请求数据信息的FormBean类,并说明业务执行完毕后各种结果应该给用户返回的视图。struts-config-fund.xml代码节选如下:
 
<form-beans>
<form-bean name="fundForm"  type="com.oaking.phua.web.fund.FundForm"/>
</form-beans>
<action-mappings>
<action      path="/listFundNav"  type="com.oaking.phua.web.fund.FundAction"
name="fundForm" scope="request" parameter="listFundNav" validate="true" 
input="/fund/fund_nav_list.jsp">
</action> 
</action-mappings>
 
ActionServlet将会按照这个配置表,在收到客户端查看某支基金的基金净值的信息之后,会将用户在JSP页面上提交过来的数据填充到模型类FundForm中,而这个FundForm必须先在struts-config-fund.xml中定义。FundForm使用了Struts的Validator验证框架,它能对用户输入的表单数据进行验证。如果验证未通过,会将错误返回输入页面。当数据成功填充到FundForm后,ActionServlet会转向FundAction,在那里面进行业务逻辑操作。FundAction部分代码如下:
 
public class FundAction extends BaseAction {
………….
public ActionForward listFundNav(ActionMapping mapping,
ActionForm form) throws Exception {
FundForm formBean = (FundForm)form;
FundService biz= (FundService)ServiceFactory.
find(com.oaking.phua.service. fund.FundService.class);
TfundNav tfundNav = new TfundNav();
Util.copyBeanProperty(formBean, tfundNav);
java.util.List list = biz.getFundNavs(tfundNav, 15, formBean.getPage());
WebContextHelper.setPageAttribute("fundlist", list);
return mapping.getInputForward();
}
 
4.2  模型层及持久层的实现
 
在FundAction中只是执行了业务逻辑功能,而真正的业务处理和对象持久化工作是在模型层与持久层中实现。在FundAction中,创建了类FundService的对象biz,然后调用该类的getFundNavs方法,查询出该基金的历史净值表。类FundService中getFundNavs方法代码如下:
 
public List getFundNavs(TfundNav o, int pageSize, int page) throws AppException {
BaseQueryHelper bq = BaseQueryHelper.                                     
getInstance (com.oaking.phua.entity.TfundNav.class);
bq.eq ("fundid", o.getFundid());
bq.eq ("fundnm", o.getFundnm());
bq.orderByDesc (newString[]{ "fundid", "settledate"});
String sql = bq.getQueryString();
net.sf.hibernate.type.Type types[] = bq.getTypes();
Object params[] = bq.getArgs();
return getQueryList(sql, params, types, pageSize, page);
}
 
TFundNav是Hibernate里面的持久化类,它的属性通过Hibernate的配置映射文档TfundNav.hbm.xml映射到关系数据库中。Hibernate的映射文件说明了一个持久化类与关系数据库表的映射关系,包括映射到哪个字段,以及集合属性映射到哪些相关字段。TfundNav.hbm.xml文件配置如下:
 
<hibernate-mapping>
<class name="com.oaking.phua.entity.TfundNav" table="T_FUND_NAV" lazy="true">
<composite-id>
<key-property name="fundid" column="FUNDID" type="java.lang.String" length="6" />
<key-property name="fundnm" column="FUNDNM" type="java.lang.String" length="20" />
<key-property name="nav" column="NAV" type="double" length="7" />
<key-property name="sumnav" column="SUMNAV" type="double" length="7" />
<key-property name="settledate" column="SETTLEDATE" type="java.lang.String" length="8" />
</composite-id> 
</class>
</hibernate-mapping>

4.3  Hibernate的数据库连接配置

在Web-INF\Classes目录下创建名为Hibernate.cfg.xml的配置文件,并且将它的路径添加到应用的类路径中就可以完成Hibernate的配置。该配置文件由Hibernate用来连接到数据库、生成模式和获得其它特定数据库信息的属性组成。要将底层数据库内的变动映射到整个应用,只需要修改该文件内的属性值。该项目使用Oracle9i,其数据库连接配置如下:
 
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver
</property>
<property name="hibernate.connection.url">
jdbc:oracle:thin:@192.168.70.98:1521:oracledb</property>
<property name="hibernate.connection.username">###</property>
<property name="hibernate.connection.password">###</property>
<property name="hibernate.connection.pool.size">50</property>
<property name="hibernate.dialect">net.sf.hibernate.dialect.Oracle9Dialect</property>
………..
<mapping resource="/TfundNav.hbm.xml"/>
</session-factory>
</hibernate-configuration>

5、总结

本文介绍了采用Struts和Hibernate框架的工作原理,并结合一个具体的实例论述了如何具体实现Struts框架和Hibernate应用相结合进行Web应用开发。实践证明,采用Struts和Hibernate结合的J2EE框架进行Web开发,充分发挥了两者的优点,有效地提高了项目的开发效率,使系统具有良好的交互性、可扩展性和可维护性,基于这两种框架进行Web应用开发也必将成为主流技术。
 
目前,该系统已应用于深圳市某基金公司,并取得了良好的效果。
 
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章