基于Hibernate与Struts的信息发布系统的研究与实现

来源 :商场现代化 | 被引量 : 0次 | 上传用户:myulyx
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要]介绍了MVC多层开发模式和两种J2EE平台下的开发框架Struts和Hibernate。研究了两种框架的整合方法,并在信息发布系统中进行了实现。
  [关键词]J2EE平台 MVC开发模式Struts框架Hibernate框架信息发布系统
  
  近年来,在网络技术的迅速发展和J2EE平台被广泛采用的背景下,基于多层B/S结构的Web体系结构逐渐发展并成为主流[1]。但是,在多层Web体系结构的设计中,普遍存在着程序可重用度低、功能模块可扩展性差、维护工作繁琐及开发中分工协作困难等问题。设计一个松耦合和紧内聚的系统一直是软件工程领域重点研究的问题[2]。开源的基于MVC模式的Struts框架很好的解决了上述问题,但Struts框架只解决了视图层、业务层和控制层的分离,没有对复杂的持久层提供架构支持。而Hibernate作为另一种开源的对象/关系映射框架,提供了对象到关系数据库的持久化支持。本文将研究整合Struts与Hibernate轻量级框架,并在信息发布系统中进行应用。
  一、主流开发框架与多层开发模式
  1.Struts框架
  Struts 是一个表示层的框架,它对经典的MVC设计模式有着良好的实现。Struts由一组相互协作的类(组件)、Serlvet以及JSP标签库组成,有它自己的控制器(Controller ),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)。在模型层,Struts可以很容易的与数据访问技术相结合。在视图层,Struts能够与JSP、XSL等表示层组件结合。控制器(Controller)的实现是由ActionServlet, Action Mapping和一系列另外的Action类分工协作;模型(Model)由EJB,JDO(Java Data Object)和JavaBean业务对象(Business Object)构成;视图不仅由JSP, HTML, XML文件和定制标记(Custom Tags)表示,还包括由ActionForms和JavaBeans展现模型(View Model),以及由XML文件和属性文件(Property Files)构成的资源。
  2. Hibernate框架
  Hibernate 是一个持久层框架,是一个基于Java的对象/关系数据库映射工具,它将对象模型表示的数据映射到用SQL表示的关系模型上去。作为一个开放源代码的对象关系映射框架(ORM),它对JDBC进行了非常轻量级的对象封装[3],使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。它实现了实体类和数据库之间的对应和沟通。程序员不必频繁操作JDBC变成过程中的Connection、Statement、Result等这些对象,Hibernate将其中80%的工作量都自动完成,程序员只完成剩下20%具体实现业务功能的过程。
  3.MVC开发模式
  MVC模式为多层的Web应用开发模式,模式中M代表模型,V代表视图,C代表控制器。ActionServlet作为Struts的核心,扮演着中央控制器的角色,它负责接收Http请求,并且将产生的相应的响应传递到请求的页面,这个过程中,ActionServlet最初处于待命状态,当容器(如tomcat)接受到请求,它对应的doget和dopost将处理get和post请求,ActionServlet接收到请求后,将调用RequestProcess对象对消息进行处理,然后,它将根据浏览器的请求路径、struts-config.xml文件中对应的请求路径和Action Bean的对应关系来调用对应的Action Bean中的execute方法,之后调用业务模型,然后将含有下一个页面返回信息的ActionForward对象传给ActionServlet,再由ActionServlet转到下一个页面返回给浏览器,JSP、Javasc等则扮演着视图的角色。下图是MVC模式的逻辑实现图。
  当Struts中的ActionServlet最终调用业务模型时,涉及到的有关关系数据库的存取问题,则交由Hibernate架构完成,图表2更直观的反映了Struts与Hibernate两种框架的结合。
   二、系统方案
  1.开发目的:
  该信息发布系统是针对搭建综合型平台网站而开发,系统应能够接受用户的注册,在用户登录时还要识别用户的级别从而进入不同的权限页面以便发布信息或进行不同级别的管理。普通用户只能向所申请的栏目内发布信息;高级用户能对频道和栏目进行管理并具有普通用户的操作权限;超级管理员应能够通过用户管理模块对所有用户进行管理,此外还具有普通用户和高级用户的所有操作权限。系统同时要支持文章标题和内容两个层次的搜索,还要具有前台页面的分页显示功能。
  2.功能模块划分
  以下是根据业务需求进行的系统的功能模块划分:
  (1)用户注册与登录模块;
  (2)用户管理模块;
  (3)频道与栏目管理模块;
  (4)文章审核模块;
  (5)文章发布及管理模块;
  (6)站内搜索模块;
  (7)分页显示模块。
  3.系统的层次架构
  为了使该系统具有更好的功能扩展性和可维护性,系统采用Struts 与Hibernate 框架进行整合开发,能缩短开发时间,降低开发成本。系统总体上可分为以下几个层次:
  (1)表示层:运行在客户端浏览器中,用JSP页面完成与用户的交互。
  (2)控制层:由Struts框架实现,该层中通过ActionServlet接收来自用户的Http请求,调用RequestProcess对象对消息进行处理,然后根据 struts-config.xml调用对应的ActionBean中的execute方法,之后调用业务模型,然后将含有下一个页面返回信息的ActionForward对象传给ActionServlet,再由ActionServlet转到下一个页面返回给浏览器。
  (3)业务逻辑层:该层负责实现系统的业务需求,由创建的JavaBean来实现。
  (4)数据持久层:由Hibernate框架实现,用Hibernate的对象从数据源中进行数据操纵。
  (5)数据源层:存放系统的应用数据,该系统选用的是Oracle9.2。
  三、平台实现
  系统采用基于MVC模式的Struts+Hibernate结合的轻量级web架构开发,开发环境为Myeclipse8.5,JSP引擎为Tomcat6.0。视图层由JSP和HTML实现;Struts框架则为系统视图层与控制层提供解决方案;Hibernate框架负责完成与数据的获取与处理。下面以用户登录模块为例,研究Struts与Hibernate框架在信息发布系统中的应用。
  1.表现层与控制层
  这两层主要是基于Struts 框架,包含login.jsp等页面文件及LoginAction。
  Struts-config.xml 配置文件部分代码如下:
  
  
   ……
  

  
    name="loginForm"scope="request"validate="false">
  
  
  

  ……
  2.业务层
  下面代码用来验证用户身份的合法性,主题部分代码如下:
  public class LoginAction extends Action {
   @Override
   public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {
   LoginActionForm laf = (LoginActionForm)form;
   String username = laf.getUsername();
   String password = laf.getPassword();
   String errorInfo = "";
   try {
   UserManager myUserManager=new UserManager();
   myUserManager.login(username, password);
   request.setAttribute("username", username);
   return mapping.findForward("success");
   }catch(UserNotFoundException unfe) {
   unfe.printStackTrace();
   errorInfo = "=[" + username + "]";
   }catch(PasswordErrorException pee) {
   pee.printStackTrace();
   errorInfo = "";
   }
   request.setAttribute("errorinfo", errorInfo);
   return mapping.findForward("error");
   }
  }
  3.数据持久层
  在生成数据模型时,需要对数据表进行Hibernate逆向工程,此时,每个数据表都会对应于生成一个Hibernate映射文件。以用户信息表User表为例,该过程会创建User.hbm.xml,同时生成User.java 类,并将注册信息加入到hibernate.cfg.xml 文件中。
  下面是User.hbm.xml 配置文件中的部分代码:
  
  
  
  
  

  
   ……
  

  

  下面是hibernate.cfg.xml 配置文件中的部分代码:
  
  
   jdbc:oracle:thin:@192.168.100.1:1521:test
   oracle.jdbc.driver.OracleDriver
   inma_user
   inma2009
   org.hibernate.dialect.OracleDialect
  ……
  
  ……
  

  四、总结:
  基于J2EE的Web应用以其层次性、平台无关性、安全性和可扩展性成为目前企业Web 应用系统的主要解决方案。由于Web 应用系统开发的复杂性,可以采用分层开发的策略,将其分为表示层、业务层、持久层等。每层在应用程序都有明确的责任。Struts作为成熟的应用框架,在J2EE开发平台下有广泛的应用,对于MVC开发模式有着良好的实现;Hibernate框架实现了实体类和数据库中对应数据库之间的对应和沟通,使得Java程序员从复杂的Jdbc来操作中解脱出来,将更多的精力投入到业务逻辑中来。两种框架的整合使用,可以缩短开发时间,开发出低耦合、高内聚、易扩展、易维护的Web应用程序。
  
  
  参考文献:
  [1]段朋鹏:基于Struts和Hibernate的智能考试系统的研究与实现.[D].武汉:武汉理工大学,2008.4: 1-2
  [2]高扩 魏振钢:整合Struts+Spring+Hibernate 框架的信息系统设计与研究.[J]现代计算机.2009.5:147
  [3] 杨波刘渊冷文浩:基于Struts+Hibernate+Spring架构的船舶数字化平台的设计与实现[J]. 计算机应用与软件.2008.2(25):178
其他文献
肺炎支原体感染是小儿呼吸道感染的一种常见病原之一,其发病率在婴幼儿中有逐年升高的趋势,还可引起其他器官系统的并发症。现将我院2007年10月-2008年4月收治的支原体肺炎患儿
采用单因素试验方法研究水胶此及粉煤灰取代率对自密实炉渣混凝土的工作性能、表观密度和力学性能的影响。结果表明:以炉渣作为骨料配制出的自密实轻骨料混凝土工作性能符合JG
在140℃、0.5MPa下蒸养4h,将磷石膏脱水得到半水石膏,并利用脱水后的磷石膏、水泥和聚苯颗粒,制备了磷石膏-水泥-聚苯颗粒保温板。试验结果表明,磷石膏-水泥复合胶凝材料中水
本文根据植物人工种子这一高新生物技术的概况,主要综述了人工种子的概念、制备流程、意义以及存在的问题,并展望了人工种子的应用前景。
一、技术要点施肥深度10—25厘米:肥带宽度3—5厘米;排肥均匀连续,无明显断条;施肥量满足作物栽培的农艺要求。
目的:探讨CT和MRI在腮腺病变的临床诊断效果.方法:分析纳入的30例经病理学检查证实的腮腺病变患者的CT和MRI表现.结果:良性肿瘤患者肿瘤位于腮腺浅叶处,表现为圆形或者椭圆形
手足口病是1957年首次在新西兰发现的一种新型传染病,主要由肠道病毒引起,其中以柯萨奇病毒 A16和肠道病毒71型最常见。春夏季节是手足口病的高发季节,健康带菌者和轻微散发病例
目的:探讨微创经皮锁定加压钢板内固定治疗四肢骨折中的效果.方法:选择随机号码表法在我院2016年1月—2018年1月收治的四肢骨折患者中纳入80例为对象,用单盲法将80例患者分为
庄河市是一个民营经济比较活跃的区域,中小民营企业发展迅速,成为区域经济发展的主导因素。但在企业发展过程中,融资难问题一直困扰着中小企业发展。本文着力分析了庄河地区
以某工厂成型的淤泥坯体为试样,在隧道干燥窑中,通过调整推车的速度得到3种不同干燥制度下的干坯,对比3组干坯的外观质量、残余含水量、抗压强度和烧结砌块的性能,得到最优的窑车