attribute=”loginForm”
input=”/login.jsp”
name=”loginForm”
path=”/login”
scope=”request”
type=”org.springframework.web.struts.DelegatingActionProxy”/>
绿色字体部份为被修改过的内容,这里将使用spring的代理器DelegatingActionProxy来对Action进行控制。
3.3.修改Spring配置文件applicationContext.xml
xmlversion=”1.0″encoding=”UTF-8″?
>
DOCTYPEbeansPUBLIC“-//SPRING//DTDBEAN//EN”“http:
//www.springframework.org/dtd/spring-beans.dtd”>
绿色字体是关于接受和处理Action控制权的配置内容,”com.login.struts.action.LoginAction”即为原struts里的配置。
3.4.测试
同上一次测试。
测试成功证明Spring运行正常。
4.Hibernate部分
下面开始Hibernate部分,将原例修改为使用数据库进行用户名/密码验证。
4.1.创建mysql数据库和表
添加表的代码如下:
CREATETABLEuser_table(
IDintNOTNULLauto_increment,
USERNAMEvarchar(45)NOTNULLdefault”,
PASSWORDvarchar(45)NOTNULLdefault”,
PRIMARYKEY(ID)
)
再添加一条记录:
insertintouser_table(USERNAME,PASSWORD)values(’test’,'test’)
4.2.创建MyEclipse数据库驱动(DBDriver)
操作:
[Menu]MyEclipse/Prefrences/MyEclipse/DatabaseExplorer/DatabaseDriver/DBBrower
在DBBrower的菜单中选择“New”,”DriverName”项输入“login-conn”,”ConnectionURL”项输入“jdbc:
mysql:
//localhost:
3306/test”,然后输入正确的用户名(UserName)和密码(Password)按实际情况输入;
在“DriverJARs”项添加“mysql-connector-java-5.0.4-bin.jar”(可从网上下载),在“Driverclassname”里选择“com.mysql.jdbc.Driver”,其它自选。
点击“完成(Finish)”。
4.3.添加Hibernate功能支持
操作:
[Menu]MyEclipse/ProjectCapabilities/AddHibernateCapabilities
Hibernate版本(HibernateSpecification)选择“Hibernate3.1″,开发包(libraries)选择Hibernate3.1CoreLibraries一项;
JARLibraryInstallation选择“copychecked…”,”LibraryFolder”选择“/WebRoot/WEB-INF/lib”。
点击“下一步(Next)”设置配置文件,选择“Springconfigurationfile(applicationContext.xml)”。
“下一步(Next)”设置Spring-Hibernate,选择“ExistingSpringconfigurationfile”,”SessionFactoryID”项输入“sessionFactory”。
“下一步(Next)”创建数据源对象,在BeanId中输入dataSource,”DataSource”项选择“UseJDBCDirver”,DBDriver项选择“login-conn”,其余项会自动填充;
记得选中“CopyDBdriverjar(s)toprojectandaddtobuidpath”项,以便将数据连接的库文件复制到项目,方便以后的布署。
“下一步(Next)”创建SessionFactory类,”Javapackage”项设置为“com.login.Hibernate”(没有则点击”New”按钮添加),”Classname”项修改为”SessionFactory”,JavaComplianceLevel选择和创建项目时选择的Java版本。
(本例中并没有用到SessionFactory类,留作今后扩展)
点击“完成(Finish)”。
4.4.创建对象关系映射(ORM)的相关文件
操作:
[Menu]Window/OpenPerspective/MyEclipseDatabaseExplorer
选中user_table表,点击右键,在出现的菜单中选择“HibernateReverseEngnieering”。
在弹出的窗口中保持“Javapackage”项为“com.login”;
选中“Hibernatemappingfile(*.hbm.xml)foreachdatabasestable”,并保持“Updatehibernate…”项选中;
选中“JavaDataObject”项,并保持“Createabstractclass”选中;
“Basepersistentclass”项留空;
取消“JavaDataAccessObject…”项和“Usecustomtemplates”项。
点击“下一步(Next)”,再点击“下一步(Next)”,在“Configurereverseengineeringdetails”页选中“user_table”表,在右边出现的“ClassName”项中输入“com.login.User”,其它不变。
点击“完成(Finish)”。
完成此操作,会在“com.login”包下创建三个文件:
AbstractUser.java、User.java、User.hbm.xml。
4.5.创建UserDAO.java接口和UserDAOImpl.java类
UserDAO和UserDAOImpl通过Hibernate访问数据库。
UseDAO.java内容如下:
packagecom.login;
publicinterfaceUserDAO{
publicabstractbooleanisValidUser(Stringusername,Stringpassword);
}
UserDAOImpl.java内容如下:
packagecom.login;
importjava.util.List;
importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;
publicclassUserDAOImplextendsHibernateDaoSupportimplementsUserDAO{
privatestaticStringhql=“fromUseruwhereu.username=?
“;
publicbooleanisValidUser(Stringusername,Stringpassword){
//验证用户
ListuserList=this.getHibernateTemplate().find(hql,username);
if(userList.size()>0){
returntrue;
}
returnfalse;
}
}
4.6.修改LoginAction.java文件
使用UseDAO对象来验证:
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;
Stringusername=loginForm.getUsername();
Stringpassword=loginForm.getPassword();
if(userDAO.isValidUser(username,password)){
returnmapping.findForward(“indexForword”);
}else{
returnmapping.getInputForward();
}
}
}
绿色字体为修改部分。
4.7.Spring的最终配制文件applicationContext.xml
xmlversion=”1.0″encoding=”UTF-8″?
>
DOCTYPEbeansPUBLIC“-//SPRING//DTDBEAN//EN”“http:
//www.springframework.org/dtd/spring-beans.dtd”>
class=”mons.dbcp.BasicDataSource”>
mysql:
//localhost:
3306/test”>
–配置sessionFactory,注意这里引入的包的不同–>
com/login/User.hbm.xml
org.hibernate.dialect.MySQLDialect
true
PROPAGATION_REQUIRED
PROPAGATION_REQUIRED,readOnly
PROPAGATION_REQUIRED,readOnly
4.8.测试
同第一次测试。