利用开源框架Struts+Hibernate实现Web应用程序
摘 要:本文主要介绍了利用目前的开源框架来开发一MVC结构Web程序的主要过程,对作为Struts与Hibernate核心的配置文件作了简单介绍,最后提出了在开发类似项目时可能会遇到的一些问题和解决方案。
关键词:Web;开源框架;解决方案;Struts;Hibernate;MVC;计算机
一、概述
大多数Web应用在职责上至少可被分成四层,表示层、持久层、业务层和域模块层,每一层相互独立,在功能上与其他层互不混合,这样为程序的后期维护及扩充提供了方便,而在Web应用的分层设计中,MVC模式成为一种十分流行的结构,Struts则是MVC模式的一种具体实现,他让开发人员可以把主要精力集中在如何解决实际业务处理问题上,同时Struts框架也允许开发人员根据实际需求进行扩展和定制,从而更好地适应用户的需要。在数据持久层上,Hibernate是目前最好的框架之一,Hibernate不仅管理Java类到数据库表的映射,还提供数据查询和获取数据的方法,可以大幅减少开发时人工使用SQL和JDBC处理数据的时间。Struts架构与Hibernate相结合实现Web应用已成为Web Service十分流行的解决方案。下面我们将简要介绍一下采用Struts+Hibernate实现Web应用的主要方法。
二、数据库设计及持久化
大多数Web应用都要涉及到数据库,数据库的设计是系统设计首先要考虑的问题,数据库设计得是否合理对系统的设计有着直接的影响,数据库如果设计的不好,有可能会使整个系统在最后阶段推倒重建。这里我们不打算详细讨论数据库的设计细节,只要遵循一般的数据库设计原则即可。包括找出所有实体,建立关系,画ER图,建立数据库表等。持久化是通过Hibernate来实现的,Hibernate对数据库的`增加、删除、更新、查找操作进行了封装,使程序员可以使用面向对象的方式来设计程序,而不用为写大量的SQL语句而苦恼。因此我们需要建立相应的配置文件来帮助程序完成数据持久化,其中包括一个Hibernate基本配置文件和若干个数据库表与基本Java类对应的配置文件,以用户登录系统为例,二配置文件主要内容如下:
hibernate.cfg.xml:(使用Mysql数据库)
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
com.mysql.jdbc.Driver
jdbc:mysql:///user
root
100
org.hibernate.dialect.MySQLDialect
User.hbm.xml:
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
name=" hibernate.User"
table="user"
>
name="id"
type="java.lang.String"
column="id"
>
name="name"
type="java.lang.String"
column="name"
not-null="true"
length="20"
/>
name="psw"
type="java.lang.String"
column="psw"
not-null="true"
length="20"
/>
三、视图(View)组件的实现
当用户提交表单时(如当用户登录时)Struts会把请求参数封装到动作表单(Form Bean)里,所以我们需要建立一个动作表单类,它继承ActionForm类,这个表单类实际上是一个JavaBean,类中需要创建与HTML提交表单中字段对应的相同名称的属性,并创建每一个属性的set和get方法,如登录表单中有用户名(name)和密码(psw)两个字段,则在表单类中应创建与之对应的属性name和psw,同时创建对应的方法setName()、getName()、setPsw()、getPsw(),另外还可以有Validate方法对输入字段进行验证。
其他的视图页面文件只需使用简单的Jsp文件即可。
四、控制器(Control)组件的实现
控制器是Struts的核心,主要负责接受客户端的HTTL请求,更新属性以及生成Jsp页面呈现在客户端浏览器上,它位于试图组件(V)与模型组件(M)之间,将二者有机地联系起来,发挥协调作用。控制器组件的核心是一个Action类,它主要负责访问业务逻辑层,类中的execute方法负责处理用户的请求,所以我们主要的工作就是改写execute方法,在其中添加相关的业务逻辑处理代码。
五、配置struts-config.xml与Web.xml文件
在设计完数据层、视图层和控制层后,还要对struts-config.xml与Web.xml文件进行配置,struts-config.xml文件是MVC各层联系的纽带,它主要定义了form表单的名称及对应的具体类,配置了与表单对应的处理Action类及执行后转发的页面,配置了请求范围和错误提示页面等。只有一个登录模块的struts-config.xml文件可能会象下面这样:
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
type="action.LoginAction"
name="loginActionForm"
scope="request"
input="/login.jsp">
……
Web.xml是一个通用的配置文件,适用于所有Web应用,它主要配置了ActionServlet的声明和初始化,系统启动是创建Servlet的实例数目,系统初始化参数配置,默认显示的页面等。鉴于篇幅具体文件内容在此省略。
六、中文问题
由于浏览器与Java采用的字符编码不同,所以在进行中文存储与显示时常出现乱码,常用的解决方法是编写一个过滤器组件,进行编码的转换,然后在Web.xml文件中对过滤器进行配置。
七、其他问题
由于数据源的多样性,如:Oracle,MySQL,SQL Server等,一旦数据源发生变化,或将来由于某种原因而不再使用Hibernate,在数据层会有较大改动,为保证系统的灵活性,通常的做法是在数据层使用DAO模式,即在业务核心方法与具体数据源之间再增加一层,用这一层来连接业务逻辑与数据源,实现二者的解藕。
八、结束语
通过对一个通用的Web应用程序的设计,我们可了解使用Struts+Hibernate框架设计Web应用系统的一般过程,表面看来使用Struts+Hibernate框架比单独使用Jsp+JavaBean方式还要复杂,但这样做的好处也显而易见,那就是设计的程序层次清晰,程序的可维护性与可扩充性大大加强,各层次间的耦合性非常小,将来一旦有需求变化,可以很容易更改。我想在程序设计的初期多做一些工作来换取程序良好的可维护性、可扩充性及可移植性是值得的。
参考文献:
[1] 邬继成.Struts与Hibernate实用教程.电子工业出版社.2006.
[2] 张桂元 贾燕枫. Struts开发入门与项目实践.人民邮电出版社.2005.
[3] 梁立新.项目实践精解:基于Struts-Spring-Hibernate的Java应用开发.电子工业出版社.2006.
【利用开源框架Struts+Hibernate实现Web应用程序】相关文章:
利用开源框架Struts+Hibernate实现Web应用程序11-03
浅谈利用开源框架Struts+Hibernate实现Web应用程序09-19
关于Web服务实现技术12-18
WEB服务器多框架解决方案10-07
论利用ebXML和SOAP开发Web服务10-07
java实现web服务器的方法11-14
WEB服务器多框架的解决方法06-17
WEB服务器多框架的解决方案11-15