摘 要:本文主要介绍了利用目前的开源框架来开发一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应用都要涉及到数据库,数据库的设计是系统设计首先要考虑的问题,数据库设计得是否合理对系统的设计有着直接的影响,数据库如果设计的不好,有可能会使整个系统在最后阶段推倒重建。www.133229.CoM这里我们不打算详细讨论数据库的设计细节,只要遵循一般的数据库设计原则即可。包括找出所有实体,建立关系,画er图,建立数据库表等。持久化是通过hibernate来实现的,hibernate对数据库的增加、删除、更新、查找操作进行了封装,使程序员可以使用面向对象的方式来设计程序,而不用为写大量的sql语句而苦恼。因此我们需要建立相应的配置文件来帮助程序完成数据持久化,其中包括一个hibernate基本配置文件和若干个数据库表与基本java类对应的配置文件,以用户登录系统为例,二配置文件主要内容如下:
hibernate.cfg.xml:(使用mysql数据库)
<?xml version='1.0' encoding='utf-8'?>
<!doctype hibernate-configuration
public "-//hibernate/hibernate configuration dtd//en"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///user</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.connection.pool_size">100</property>
<property name="dialect"> org.hibernate.dialect.mysqldialect</property>
<!-- mapping files -->
<mapping resource="user.hbm.xml"/>
</session-factory>
</hibernate-configuration>
user.hbm.xml:
<?xml version="1.0"?>
<!doctype hibernate-mapping public
"-//hibernate/hibernate mapping dtd 2.0//en"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<hibernate-mapping>
<class
name=" hibernate.user"
table="user"
> <id
name="id"
type="java.lang.string"
column="id"
> <generator class="assigned" />
</id>
<property
name="name"
type="java.lang.string"
column="name"
not-null="true"
length="20"
/>
<property
name="psw"
type="java.lang.string"
column="psw"
not-null="true"
length="20"
/>
</class>
</hibernate-mapping>
三、视图(view)组件的实现