processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/& gt;。
这样你的
action 才能真的委托给 spring。
3.4. 测试
同上一次测试。
测试成功证明 Spring 运行正常。
4. Hibernate 部分
下面开始 Hibernate 部分,将原例修改为使用数据库进行用户名/密码验证。
4.1. 创建 mysql 数据库和表
添加表的代码如下:
CREATE TABLE user_table(
ID int NOT NULL auto_increment,
USERNAME varchar(45) NOT NULL default ”,
PASSWORD varchar(45) NOT NULL default ”,
PRIMARY KEY (ID)
)
再添加一条记录:
insert into user_table (USERNAME,PASSWORD) values (’test’,'test’)
4.2. 创建 MyEclipse 数据库驱动(DB Driver)
操作:
[Menu] MyEclipse/Prefrences/MyEclipse/Database
Explorer/Database Driver/DB Brower
在 DB Brower 的菜单中选择 “New” ,”Driver Name” 项输入 “login-
conn” ,”Connection URL” 项输入
“jdbc:
mysql:
//localhost:
3306/test” ,然后输入正确的用户名(User
Name)和密码(Password)按实际情况输入;
在 “Driver JARs” 项添加 “mysql-connector-java-5.0.4-bin.jar” (可
从网上下载),在 “Driver classname” 里选择 “com.mysql.jdbc.Driver”
,其它自选。
点击 “完成(Finish)”。
4.3. 添加 Hibernate 功能支持
操作:
[Menu] MyEclipse/Project Capabilities/Add Hibernate
Capabilities
Hibernate 版本(Hibernate Specification)选择 “Hibernate 3.1″ ,开
发包(libraries)选择 Hibernate 3.1 Core Libraries 一项;
JAR Library Installation 选择 “copy checked…” ,”Library Folder”
选择 “/WebRoot/WEB-INF/lib” 。
点击 “下一步(Next)” 设置配置文件,选择 “Spring configuration file
(applicationContext.xml)” 。
“下一步(Next)” 设置 Spring-Hibernate,选择 “Existing Spring
configuration file” ,”SessionFactory ID” 项输入
“sessionFactory” 。
“下一步(Next)” 创建数据源对象,在 Bean Id 中输入 dataSource,”
DataSource” 项选择 “Use JDBC Dirver” ,DB Driver 项选择 “login-
conn” ,其余项会自动填充;
记得选中 “Copy DB driver jar(s) to project and add to buidpath” 项,
以便将数据连接的库文件复制到项目,方便以后的布署。
“下一步(Next)” 创建 SessionFactory 类,”Java package” 项设置为
“com.login.Hibernate” (没有则点击”New”按钮添加),”Class name”
项修改为”SessionFactory” ,Java Compliance Level 选择和创建项目时选
择的 Java 版本。
(本例中并没有用到 SessionFactory 类,留作今后扩展)
点击 “完成(Finish)”。
4.4. 创建对象关系映射(ORM)的相关文件
操作:
[Menu] Window/Open Perspective/MyEclipse Database Explorer
选中 user_table 表,点击右键,在出现的菜单中选择 “Hibernate Reverse
Engnieering” 。
在弹出的窗口中保持 “Java package” 项为 “com.login” ;
选中 “Hibernate mapping file (*.hbm.xml) for each databases table”
,并保持 “Update hibernate…” 项选中;
选中 “Java Data Object” 项,并保持 “Create abstract class” 选中;
“Base persistent class” 项留空;
取消 “Java Data Access Object…” 项和 “Use custom templates” 项。
点击 “下一步(Next)” ,再点击 “下一步(Next)” ,在 “Configure
reverse engineering details” 页选中 “user_table” 表,在右边出现的
“Class Name” 项中输入 “com.login.User”,其它不变。
点击 “完成(Finish)”。
完成此操作,会在 “com.login” 包下创建三个文件:
AbstractUser.java、User.java、User.hbm.xml。
4.5. 创建 UserDAO.java 接口和 UserDAOImpl.java 类
UserDAO 和 UserDAOImpl 通过 Hibernate 访问数据库。
UseDAO.java 内容如下:
package com.login;
public interface UserDAO {
public abstract boolean isValidUser(String username, String
password);
}
UserDAOImpl.java 内容如下:
package com.login;
import java.util.List;
import
org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class UserDAOImpl extends HibernateDaoSupport implements
UserDAO {
private static String hql = “from User u where u.username=?
“;
public boolean isValidUser(String username, String password) {
// 验证用户
List userList = this.getHibernateTemplate().find(hql, username);
if (userList.size() > 0) {
return true;
}
return false;
}
}
4.6. 修改 LoginAction.java 文件
使用 UseDAO 对象来验证:
package com.login.struts.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.login.struts.form.LoginForm;
import com.login.UserDAO;
public class LoginAction extends Action {
private UserDAO userDAO;
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;
String username=loginForm.getUsername();
String password=loginForm.getPassword();
if( userDAO.isValidUser( username, password ) ){
return mapping.findForward( “indexForword” );
}else{
return mapping.getInputForward();
}
}
}
绿色字体为修改部分。
4.7. Spring 的最终配制文件 applicationContext.xml
xml version=”1.0″ encoding=”UTF-8″?
>
DOCTYPE beans PUBLIC “-//SPRING//DTD BEAN//EN”
“http:
//www.springframework.org/dtd/spring-beans.dtd”>
class=”mons.dbcp.BasicDataSource”>
value=”com.mysql.jdbc.Driver”>
value=”jdbc:
mysql:
//localhost:
3306/test”>
– 配置 sessionFactory, 注意这里引入的包的不同 –>
class=”org.springframework.orm.hibernate3.LocalSessionFactoryBean”>
com/login/User.hbm.xml
key=”hibernate.dialect”>org.hibernate.dialect.MySQLDialect
true
class=”org.springframework.orm.hibernate3.HibernateTransactionManage
r”>
class=”org.springframework.transaction.interceptor.TransactionProxyF
actoryBean”>
PROPAGATION_REQUIRED
PROPAGATION_REQUIRED,readOnly
PROPAGATION_REQUIRED,readOnly
singleton=”false”>
4.8. 测试
同第一次测试。