singleton="false">
//在myeclipse5.5及以上中,上面singleton="false"需要去掉。
3.4.运行测试
同2.9。
重新部署后,测试成功证明Spring已经正常运行。
4.Hibernate
下面开始Hibernate部分,将LoginAction修改为使用数据库进行身份验证。
4.1.创建MySql数据库和表
在MySql默认的test库下新建user_table表,建表sql如下:
CREATETABLEuser_table(
IDintNOTNULLauto_increment,
USERNAMEvarchar(45)NOTNULLdefault'',
PASSWORDvarchar(45)NOTNULLdefault'',
PRIMARYKEY(ID)
)
再在user_table表中添加一条记录:
insertintouser_table(USERNAME,PASSWORD)values('test','test')
上面的语句有一定问题。
导出的user_table.sql文件应该是:
/*
MySQLDataTransfer
SourceHost:
localhost
SourceDatabase:
test
TargetHost:
localhost
TargetDatabase:
test
Date:
2009-4-417:
51:
47
*/
SETFOREIGN_KEY_CHECKS=0;
------------------------------
--Tablestructureforuser_table
------------------------------
CREATETABLE`user_table`(
`ID`int(11)NOTNULLauto_increment,
`USERNAME`varchar(45)NOTNULLdefault'',
`PASSWORD`varchar(45)NOTNULLdefault'',
PRIMARYKEY(`ID`)
)ENGINE=InnoDBDEFAULTCHARSET=latin1;
------------------------------
--Records
------------------------------
INSERTINTO`user_table`VALUES('1','test','test');
4.2.创建MyEclipse数据库驱动(DBDriver)
操作:
MyEclipse菜单->Window->Preferences…->MyEclipse->DatabaseExplorer->Drivers
点击New按钮为新建一个MySql数据库的DBDriver
DriverName:
mysql-test
ConnectionURL:
jdbc:
mysql:
//localhost:
3306/test
“DriverJARs”添加“mysql-connector-java-5.0.4-bin.jar”(可从网上下载)
“Driverclassname”选择“com.mysql.jdbc.Driver”
4.3.创建数据库连接对象
操作:
MyEclipse菜单->Window->OpenPerspective->MyEclipseDatabaseExplorer
在DBBrowser中点击
按钮新建一个DatabaseConnectionProfile
ProfileName:
login-conn
Driver:
选择刚才创建的mysql-test
用户名和密码根据实际MySql数据库的设置填写
//在myeclipse5.5中,这步不需要
4.4.添加Hibernate功能支持
操作:
工程名login右键菜单->MyEclipse->AddHibernateCapabilities…
Hibernate版本:
选择Hibernate3.1
开发包(libraries)选择MyEclipseLibraries下的全部
JARLibraryInstallation选择“CopycheckedLibrariesJarsto…”
“LibraryFolder”项选择“/WebRoot/WEB-INF/lib”(这样的话所需的类库都将拷贝到项目目录,方便以后的部署)
点击“Next”设置配置文件,选择“Springconfigurationfile(applicationContext.xml)”
点击“Next”设置Spring-Hibernate,选择“ExistingSpringconfigurationfile”
“SessionFactoryID”项输入“sessionFactory”
点击“Next”创建数据源对象
BeanId:
dataSource
DataSource:
UseJDBCDirver
DBProfile:
选择前面创建的“login-conn”,其余项会自动填充
选中“CopyDBProfileJDBCDriverJar(s)toprojectandaddtoclasspath?
”项,以便将数据连接的库文件复制到项目,方便以后的部署
点击“Next”创建SessionFactory类
Javapackage:
com.login.Hibernate(没有则点击New按钮添加)
Classname:
修改为“SessionFactory”
JavaComplianceLevel:
和创建项目时选择的Java版本一致
点击Finish按钮,如果出现部分jar包已经存在的提示,选择KeepExisting
4.5.创建对象关系映射(ORM)的相关文件
操作:
MyEclipse菜单->Window->OpenPerspective->MyEclipsehibernate
选中刚才创建的login-conn,点击
按钮连接
选中test库中的user_table表点击右键,选择“HibernateReverseEngineering”
Javapackage:
com.login
其他设置如下图
点击“Next”,再点击“Next”
Generateartifactsforthefollowingtables:
选中“user_table”表
右边出现的“ClassName”项中输入“com.login.User”,其它不变
点击“Finish”完成此操作,会在“com.login”包下创建三个文件:
AbstractUser.java、User.java、User.hbm.xml
4.6.修改User.hbm.xml文件
去掉下标签中的catalog="test"属性(为啥?
)
4.7.创建UserDAO.java接口和UserDAOImpl.java类
操作:
在com.login包下建立UserDAO.java接口和UserDAOImpl.java类,通过Hibernate访问数据库
UserDAO接口内容如下:
packagecom.login;
publicinterfaceUserDAO{
publicabstractbooleanisValidUser(Stringusername,Stringpassword);
}
UserDAOImpl类内容如下:
packagecom.login;
importjava.util.List;
importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;
publicclassUserDAOImplextendsHibernateDaoSupportimplementsUserDAO{
publicbooleanisValidUser(Stringusername,Stringpassword){
//验证用户
ListuserList=this.getHibernateTemplate().find("fromUseruwhereu.username='"+
username+"'andu.password='"+password+"'");
if(userList.size()>0){
returntrue;
}
returnfalse;
}
}
4.8.修改LoginAction.java文件
使用UseDAO对象来进行login身份验证,新的LoginAction类内容如下:
packagecom.login.struts.action;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importorg.apache.struts.action.Action;
importorg.apache.struts.action.ActionForm;
importorg.apache.struts.action.ActionForward;
importorg.apache.struts.action.ActionMapping;
importcom.login.struts.form.LoginForm;
importcom.login.UserDAO;
publicclassLoginActionextendsAction{
privateUserDAOuserDAO;
publicUserDAOgetUserDAO(){
returnuserDAO;
}
publicvoidsetUserDAO(UserDAOuserDAO){
this.userDAO=userDAO;
}
publicActionForwardexecute(ActionMappingmapping,ActionFormform,
HttpServletRequestrequest,HttpServletResponseresponse){
LoginFormloginForm=(LoginForm)form;//TODOAuto-generatedmethod
Stringusername=loginForm.getUsername();
Stringpassword=loginForm.getPassword();
if(userDAO.isValidUser(username,password)){
returnmapping.findForward("indexForward");
}else{
returnmapping.getInputForward();
}
}
}
蓝色部分为添加的部分,红色部分为修改的部分
4.9.修改Spring配制文件applicationContext.xml
新的applicationContext.xml文件内容如下:
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN//EN""http:
//www.springframework.org/dtd/spring-beans.dtd">
singleton="false">
--
class="mons.dbcp.BasicDataSource">
这段要修改为以下class!
!
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
com.mysql.jdbc.Driver
jdbc:
mysql:
//localhost:
3306/test
root
root
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
org.hibernate.dialect.MySQLDialect
com/login/User.hbm.xml
class="org.springframework.orm.hibernate3.HibernateTransactionManag