摘 要:本文主要介绍了利用目前的开源框架来开发一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类对应的配置文件,以用户登录系统为例,二配置文件主要内容如下:
:(使用mysql数据库)
<?xml version='1.0' encoding='utf-8'?>
<!doctype hibernate-configuration
public "-//hibernate/hibernate configuration dtd//en"
"">
<hibernate-configuration>
<session-factory>
<property name="_class"></property>
<property name="">jdbc:mysql:///user</property>
<property name="me">root</property>
<property name="rd"></property>
<property name="_size">100</property>
<property name="dialect"> ialect</property>
<!-- mapping files -->
<mapping resource=""/>
</session-factory>
</hibernate-configuration>
:
<?xml version="1.0"?>
<!doctype hibernate-mapping public
"-//hibernate/hibernate mapping dtd 2.0//en"
"" >
<hibernate-mapping>
<class
name=" "
table="user"
> <id
name="id"
type=""
column="id"
> <generator class="assigned" />
</id>
<property
name="name"
type=""
column="name"
not-null="true"
length="20"
/>
<property
name="psw"
type=""
column="psw"
not-null="true"
length="20"
/>
</class>
</hibernate-mapping>
三、视图(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方法,在其中添加相关的业务逻辑处理代码。
五、配置与文件
在设计完数据层、视图层和控制层后,还要对与文件进行配置,文件是mvc各层联系的纽带,它主要定义了form表单的名称及对应的具体类,配置了与表单对应的处理action类及执行后转发的页面,配置了请求范围和错误提示页面等。只有一个登录模块的文件可能会象下面这样:
<?xml version="1.0" encoding="iso-8859-1" ?>
<!doctype struts-config public
"-//apache software foundation//dtd struts configuration 1.2//en"
"">
<struts-config>
<form-beans>
<form-bean type="ctionform" name="loginactionform"/>
</form-beans>
<action-mappings>
<!-- *************** login **************** -->
<action path="/login"
type="ction"
name="loginactionform"
scope="request"
input="/">
<forward name="success" path="/"/>
</action>
……
</struts-config>
是一个通用的配置文件,适用于所有web应用,它主要配置了actionservlet的声明和初始化,系统启动是创建servlet的实例数目,系统初始化参数配置,默认显示的页面等。鉴于篇幅具体文件内容在此省略。
六、中文问题
由于浏览器与java采用的字符编码不同,所以在进行中文存储与显示时常出现乱码,常用的解决方法是编写一个过滤器组件,进行编码的转换,然后在文件中对过滤器进行配置。
七、其他问题
由于数据源的多样性,如: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.
中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。 返回通信学论文列表