基于Webwork+Hibernate+Spring的BS开发.docx
《基于Webwork+Hibernate+Spring的BS开发.docx》由会员分享,可在线阅读,更多相关《基于Webwork+Hibernate+Spring的BS开发.docx(61页珍藏版)》请在冰豆网上搜索。
基于Webwork+Hibernate+Spring的BS开发
基于Webwork+Hibernate的J2EE开发入门实例
广东省电信规划设计院有限公司
信息系统咨询研究院
GuangdongPlanningandDesigningInstituteofTelecommunicationsCo.,Ltd
2008年8月
文档更改历史记录
序号
主要更改内容
版本号
更改人
更改时间
1
编写文档主体内容
1.0.0
薛珂
2008-08
目录
1.概述4
2.搭建J2EE开发环境4
2.1软件获取安装4
2.2环境配置5
3.Hibernate入门9
3.1Hibernate简介9
3.2开始前的准备10
3.2JDBC直接操纵数据库11
3.3Hibernate操作数据库17
3.3.1第一个Hibernate程序17
3.3.2表与表关联29
3.4本章小结34
4.使用Webwork进行B/S开发35
4.1第一个B/S程序35
4.2处理变量输入输出41
4.3另外一种处理变量的方法45
4.4最常用的一种变量处理方法46
4.5本章小结48
5.Hibernate和Webwork结合49
1.概述
使用JAVA技术进行B/S项目开发经过多年的研究发展,目前主要有两种主要的方式:
一种是重量级的EJB(EnterpriseJavaBean),另一种是轻量级的Struts
(2)+Hibernate+Spring.由于EJB编程复杂性很高,一般的中小型应用系统大多会采用轻量级的J2EE开发.
本文所介绍的Webwork+Hibernate+Spring的技术,就是属于轻量级J2EE开发.Struts2本质上是Webwork(具体内容可参见http:
//struts.apache.org/),但由于Struts2目前文档方面欠缺,因此大多数人学习Struts2均从Webwork入手。
本文的组织结构如下:
第2章介绍如何搭建J2EE开发环境,第3章介绍Hibernate数据库开发基本方法,第4章介绍Webwork基本使用方法,第5章以实例介绍如何将Hibernate和Webwork结合起来用于J2EE开发。
2.搭建J2EE开发环境
2.1软件获取安装
1)本教程所使用的所有软件都打包在\\file-server-1\新同事交换目录\x薛珂\env.rar里面,将env.rar下载至本地。
2)建立目录e:
\j2ee\env(也可以是其它路径,为简单起见,建议设为该路径)
3)将env.rar移动至e:
\j2ee\env。
4)将env.rar解压至当前目录。
解压后将会看到以下目录结构:
E:
\j2ee\env
--ant1.7
--apache-tomcat-5.5.20
--eclipse
--Java
--myeclipse
--mysql
--setenv.bat
5)如果你的目录结构如上图所示,那么软件安装工作已经完成!
下面进行配置。
2.2环境配置
1)设置环境变量。
右键[编辑]setenv.bat,将看到以下内容:
setJDIR=e:
\j2ee\env
setJAVA_HOME=%JDIR%\Java\jdk1.5.0_10
setANT_HOME=%JDIR%\ant1.7
setCATALINA_BASE=%JDIR%\apache-tomcat-5.5.20
setCATALINA_HOME=%JDIR%\apache-tomcat-5.5.20
setCLASSPATH=%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;.;
setPath=%path%;%ANT_HOME%\bin;%JAVA_HOME%\bin;%JDIR%\mysql5\bin
上面是我们要设置的环境变量。
进入桌面-》右键我的电脑-》高级-》环境变量。
在系统变量栏点击[新建(W)],填写变量名和变量值后点[确定]
依次将setenv.bat里的项和值添加进去。
2)在开始-》运行输入cmd,打开命令行,输入echo%JAVA_HOME%,测试环境变量是否建立成功。
成功的界面如下:
3)将mysql注册为系统服务,并且启动。
(当然可以采用其它数据库,如果使用其它数据库,直接跳过这步)
a.从命令行进入>cde:
\j2ee\env\mysql\bin
b.输入命令>mysqld-nt–install-manualmysql5
该命令的意思是将mysql安装为系统服务,服务名称为mysql5,但是必须手工启动才可以运行,开机不会自动运行。
c.启动mysql5服务。
输入命令>netstartmysql5
d.安装MYSQL客户端工具SQLYOG。
从\\file-server-1\新同事交换目录\x薛珂\tools下载SQLyog.rar,解压后安装。
e.安装成功后,运行SQLyog.exe。
点New…按钮,弹出如入对话框。
UserName为:
root
Password为:
442_dylan
点击[Connect]。
4)新建目录e:
\j2ee\workdir
5)进入e:
\j2ee\env\eclipse目录,双击eclipse.exe运行eclipse。
6)第一次运行eclipse会要求选择工作目录,请选择为e:
\j2ee\workdir。
7)点击MyEclipse->UpdateSubscription
在此输入
Subscriber:
www.1cn.biz
SubscriberCode:
jLR8ZC-444-55-4467865481680090
注册成功后会发现:
Subscriber:
www.1cn.biz
ProductID:
E3MP(MyEclipseProfessionalSubscription)
Licenseversion:
9.99
FullMaintenanceIncluded
Subscriptionexpirationdate(YYYYMMDD):
20991231
Numberoflicenses:
Unlimited
至此,环境搭建完毕。
3.Hibernate入门
3.1Hibernate简介
Hibernate是一个开放源代码的对象关系映射(R/O映射)框架,它对JDBC进行了轻量级的对象封装,使Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
它不仅提供了从Java类到数据表之间的映射,也提供了数据查询和恢复机制。
相对于使用JDBC和SQL来手工操作数据库,Hibernate可以大大减少操作数据库的工作量。
另外Hibernate可以利用代理模式来简化载入类的过程,这将大大减少利用HibernateQL从数据库提取数据的代码的编写量,从而节约开发时间和开发成本。
Hibernate可以和多种Web服务器或者应用服务器良好集成,如今已经支持几乎所有的流行的数据库服务器。
3.2开始前的准备
我们以地址-员工-部门关系为实,来进行简单的数据库操作,首先需要建立数据库,并导入模拟数据。
三者关系如下:
1个员工对应1个部门,但对应多个地址(1人拥有多处地址)。
--[Mysql版]
createtabledepartment(
idbigint(15)notnullauto_increment,
dnamevarchar(50),
primarykey(id)
);
insertintodepartment(dname)values('xxy');
createtableemployee(
idbigint(15)notnullauto_increment,
enamevarchar(40),
departmentIdbigint(15),
ageint(3),
primarykey(id)
);
insertintoemployee(ename,departmentId,age)values('dylan','1','25');
createtableaddress(
idbigint(15)notnullauto_increment,
addressNametext,
postCodevarchar(10),
employeeIdbigint(15),
primarykey(id)
);
insertintoaddress(addressName,postCode,employeeId)values('Guangzhou','510000','1');
3.2JDBC直接操纵数据库
为了更好地理解Hibernate的工具原理,最好的方法就是与传统的JDBC/ODBC直接操作数据库方法做比较。
因此本小节首先讲述如何直接使用JDBC进行数据库操作。
1.打开Eclipse,选择File->New->Project,选择JavaProject,点击[Next].
2.输入项目名称jdbcTest,之后点击[Finish]
3.点击[Finish],可以看到一个新项目被建立出来。
4.右键点击jdbcTest,在弹出菜单中选择New->Folder,新建一个名称为lib的目录。
5.下载\\file-server-1\新同事交换目录\x薛珂\jars\mysql.jar,把它复制到lib目录下。
6.右键点击jdbcTest,在弹出菜单中选择BuildPath->ConfigureBuildPath
点击[AddJARs…]
选中我们刚刚添加的mysql.jar,之后点击[OK]。
于是mysql驱动就加载完毕。
7.右键点击jdbcTest,在弹出菜单中选择New->SourceFolder。
8.右键点击src目录,在弹出菜单中选择New->Package。
在Name一栏输入:
org.gpdi.jdbcTest作为包(Package)的名称。
9.右键点击刚刚建好的Package,在弹出菜单中选择New->Class,开始真正写程序。
我们建立了一个名称为ControlDB的类,点击[Finish]。
10.下面要做的事情就是在该类里面写操作数据库的代码,代码请参考
\\file-server-1\新同事交换目录\x薛珂\sources\jdbcTest\ControlDB.java。
11.右键点击ControlDB,在弹出菜单中选择RunAs->JavaApplication.运行该程序。
在Console会输出程序运行的结果。
在数据库会看到刚刚插入的数据。
本节通过StepByStep的方法,介绍了使用Eclipse进行开发的详细步骤。
并且通过简单的JDBC连接程序,介绍了使用JAVA进行数据库操作的原始方法。
由于JAVA是高度面向对象的编程语言,它要求一切皆是对象,因此使用JDBC这样的方式读写数据库,与JAVA的设计思想是格格不入的,因此人们就提出来,可否将对数据表的存取转换为对对象的存取,即如何把关系表映射成为对象,这就是Hibernate所要做的工作。
在下节将介绍使用Hibernate方法进行数据库操作。
3.3Hibernate操作数据库
本节使用Hibernate对地址-员工-部门三个关系表进行操作,由于Hibernate功能非常强大,本节只能简约介绍其最基本的使用方法。
主要分为以下几个内容:
1)基本配置2)单表操作3)关联操作。
3.3.1第一个Hibernate程序
Hibernate实质是通过配置文件把数据库(Table)和类(Class)联系起来,把数据库的字段(Field)和类的属性(Property)联系起来。
表department
类Department
idbigint(15)key
privateLongid
dnamevarchar(40)
privateStringdname
表1.department表和Department对象的映射
表employee
类Employee
idbigint(15)key
privateLongid
enamevarchar(40)
privateStringename
departmentIdbigint(15)
PrivateDepartmentdepartment
ageint(3)
privateintage
表2.employee表和Employee对象的映射
表address
类Address
idbigint(15)key
privateLongid
addressNamevarchar(40)
privateStringaddressName
employeIdbigint(15)
PrivateEmployeeemployee
postCodevarchar(10)
privateStringpostCode
表3.address表和Address对象的映射
下面具体讲述如何进行映射及操作。
关于Eclipse的基本使用方法请参阅3.2节。
本节不再赘述。
1)新建一个JavaProject项目,项目名称为hibernateTest。
2)在项目下新建一个目录Folder,名称为lib。
3)把\\file-server-1\新同事交换目录\x薛珂\sources\hibernateTest\lib下所有文件下载到lib目录。
4)把lib目录下所有jar加入BuildPath(右键->BuildPath->ConfigureBuildPath->AddJars)。
5)建立SourceFolder,名称为src。
6)在src下面建立Package,名称为org.gpdi.hibernateTest
7)把\\file-server-1\新同事交换目录\x薛珂\sources\hibernateTest\src下面的hibernate.cfg.xml文件复制到src目录下面,双击打开。
点击下面的[Source],进入手工编辑界面。
xmlversion="1.0"encoding="utf-8"?
>
DOCTYPEhibernate-configurationPUBLIC"-//Hibernate/HibernateConfigurationDTD//EN""
jdbc:
mysql:
//localhost/sample
org.gjt.mm.mysql.Driver
root
442_dylan
net.sf.hibernate.dialect.MySQLDialect
True
True
net.sf.hibernate.transaction.JDBCTransactionFactory
--在此添加自己的mapping.-->
上面就是Hibernate的配置文件,其中:
hibernate.connection.url:
连接字符串
hibernate.connection.driver_class:
驱动名称
hibernate.connection.username:
数据库用户名
hibernate.connection.password:
数据库密码
而下面这句:
是至为关键的,它真正将数据表和类进行关联,这在下面会再次提及。
到目前为止,该文件无须做任何修改,可以直接使用。
8)在org.gpdi.hibernateTest包下面建立一个新的类,名称为Department,它需要实现java.io.Serializable接口。
添加方法是
a.右键点击org.gpdi.hibernateTest包,在弹出菜单中选择New->Class
b.在弹出的对话框中,在Interfaces一栏,点击[Add],在ChooseInterfaces一栏输入serializable,在MatchingTypes列表里选择java.io.Serializable,点击OK。
点击[Finish],结束创建。
新建成的Department.java内容如下:
/**
*
*/
packageorg.gpdi.hibernateTest;
importjava.io.Serializable;
publicclassDepartmentimplementsSerializable{
}
9)下面我们为Department添加属性id和dname,添加后代码如下:
/**
*
*/
packageorg.gpdi.hibernateTest;
importjava.io.Serializable;
publicclassDepartmentimplementsSerializable{
privateLongid;
privateStringdname;
}
10)Hibernate要求我们的类必须实现Serializable接口,并且有一个参数为空的构造函数,因此我们添加一个空的构造数。
在代码编辑窗口Department类定义范围内(两个大括号之间)点击右键,在弹出菜单里选择Source->GenerateConstructorUsingfields.
点击[OK],生成代码如下:
/**
*
*/
packageorg.gpdi.hibernateTest;
importjava.io.Serializable;
publicclassDepartmentimplementsSerializable{
privateLongid;
privateStringdname;
publicDepartment(){
super();
}
}
当然,构建函数完全可以手工输入,只是借此介绍下一些小技巧。
11)此时我们已经生成了一个Department类,我们称它为POJO(PureOldJavaObject)。
POJO必须通过Getter和Setter来对其属性进行取和写,因此我们需要添加Getter和Setter。
右键点击Department类定义的空白地方,在弹出菜单里选择Source->GenerateGettersandSetters.
选中所有的属性[SelectAll],之后点击[OK]。
现在一个完整的POJO就建立成功了。
其完整代码如下:
packageorg.gpdi.hibernateTest;
importjava.io.Serializable;
/**
*@authorxueke
*
*/
publicclassDepartmentimplementsSerializable{
privateLongid;
privateStringdname;
publicDepartment(){
super();
}
publicStringgetDname(){
returndname;
}
publicvoidsetDname(Stringdname){
this.dname=dname;
}
publicLonggetId(){
returnid;
}
publicvoidsetId(Longid){
this.id=id;
}
}
12)上面我们建立了同数据表department对应的POJO定义Department。
下面我们需要将告诉Hibernate,将他们关联起来。
13)在org.gpdi.hibernateTest下,建立一个新的文件,文件名为Department.hbm.xml。
右键点击org.gpdi.hibernateTest->New->File。
点击[Finish]结束创建文件。
把下面内容写入Department.hbm.xml。
(该文件可以由\\file-server-1\新同事交换目录\x薛珂\sources\hibernateTest\src获取)。
DOCTYPEhibernate-mappingPUBLIC
"-//Hibernate/HibernateMappingDTD3.0//EN"
"http:
//hibernat