资源描述
struts2 + spring2 + hibernate3.1整合
用的工具Tomcat 5.5,MyEclipse6.0,mysql5.5
在mysql中建立数据表users如下:
Create table users(id int primary key,username varchar(20),pwd varchar(20));
1创建工程
2.创建struts2
1.创建action 类
然后导入struts2的包
然后在www底下创建index.jsp
代码如下:
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Example</title>
</head>
<body>
<table width="300" border="0">
<s:form action="LoginAction" theme="simple">
<tr>
<td width=50%>ID:</td>
<td width=50%><s:textfield name="id" /></td>
</tr>
<tr>
<td width=50%>用户名:</td>
<td width=50%><s:textfield name="username" /></td>
</tr>
<tr>
<td width=50%>密码:</td>
<td width=50%><s:textfield name="pwd" /></td>
</tr>
<tr><td colspan=2 align=center width=100%><s:submit /></td></tr>
</s:form>
</table>
</body>
</html>
下面我们开始写LoginAction类:
package com.test.action;
import com.opensymphony.xwork2.ActionSupport;
import com.yyi.bean.Users;
import com.yyi.bean.UsersDAO;
public class LoginAction extends ActionSupport {
private int id;
private String username;
private String pwd;
private UsersDAO dao;
private Users user;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String execute() {
user=new Users();
user.setId(id);
user.setPwd(pwd);
user.setUsername(username);
dao.save(user);
return SUCCESS;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public UsersDAO getDao() {
return dao;
}
public void setDao(UsersDAO dao) {
this.dao = dao;
}
}
再接下来就是在src目录底下创建一个struts.xml来写我们的跳转:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- <constant name="struts.objectFactory" value="spring" /> 是在后面的spring2配置中用到意思是把控制交给spring2 -->
<constant name="struts.objectFactory" value="spring" />
<include file="struts-default.xml"></include>
<package name="test" extends="struts-default">
<!-- <action name="LoginAction" class="LoginAction"> 这里用class来关联spring2配置文件中的配置关联 -->
<action name="LoginAction" class="LoginAction">
<result name="input">/index.jsp</result>
<result name="success">/success.html</result>
<result name="error">/error.html</result>
</action>
</package>
</struts>
成功和失败的页面大家自己建一下就行了!
下面我们来配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" id="WebApp"
xmlns="
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
<display-name>test</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<!-- 那么哪些请求交给struts过滤呢,这里包括 /struts2spring2hibernate3下和根目录/下的所有请求-->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- OpenSessionInViewFilter过滤器 -->
<filter>
<filter-name>lazyLoadingFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>lazyLoadingFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<!-- 定义默认返回页,如输入http://127.0.0.1/那么根目录下的index.html或者其他文件就被请求 -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<listener>
<!-- 下面也是spring2的配置 -->
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
</web-app>
到这里我们的struts2配置完了 下面我们运用MyEclipse 来加入spring2
3 创建spring2
选好要导入的jar包点next --> finish。
spring2加入到了我们的项目中了。下面我们来把hibernate3.1加入到项目中去。
4 创建hibernate3.1
选好要导入的jar包点next。
点next.
SessionFactory ID 是写在applicationContext.xml中的在创建完成后会在直接更新applicationContext.xml文件的。
Bean ID 也是写在applicationContext.xml中的在创建完成后会在直接更新applicationContext.xml文件。点next。
我们要用的是spring2的SessionFactory控制所以不用hibernate3.1 自己的SessionFactory。
如果有包的重复,保留使用spring的相关包。
点finish
下面我们来看看applicationContext.xml更新后的文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="dataSource"
class="mons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/test"></property>
<property name="username" value="root"></property>
<property name="password" value="123"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/yyi/bean/Users.hbm.xml</value>
</list>
</property>
</bean>
<bean id="usersDao" class="com.yyi.bean.UsersDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="LoginAction" class="com.test.action.LoginAction"
scope="prototype">
<property name="dao">
<ref bean="usersDao" />
</property>
</bean>
</beans>
5 创建数据源
点New 出现一个窗口,
Driver template (数据库类型)
Driver name(创建的数据源名称)
Connection URL (连接数据库用到的驱动URL)
User Name (数据库的用户名)
Password (数据库的密码)
Driver JARS (数据库驱动包)
Driver Classname (数据库驱动类)
点finish完成创建。
下面我们来针对表用hibernate来创建程序和数据库之间的联系。
我们对users表进行操作并且实现通过hibernate把程序和数据库连接在一起,首先在users上右击然后出现一个菜单,
然后选择Hibernate Reverse Engineering
点next
选择native 之后点next.
这个菜单的设置是表与表的范式关系。点finish.
我们基本上实现了struts2+spring2+hibernate3的衔接了。下面我们来具体调试一下。
6 调试
首先我们要导入两个jar包
如果不导入这两个包连接就会出错。并且把MyEclipse创建spring2时候生成的commons-collections2.11删除。接下来我们来完善LoginAction.java
代码如下:
package com.test.action;
import com.opensymphony.xwork2.ActionSupport;
import com.yyi.bean.Users;
import com.yyi.bean.UsersDAO;
public class LoginAction extends ActionSupport {
private int id;
private String username;
private String pwd;
private UsersDAO dao;
private Users user;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String execute() {
user=new Users();
user.setId(id);
user.setPwd(pwd);
user.setUsername(username);
dao.save(user);
return SUCCESS;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public UsersDAO getDao() {
return dao;
}
public void setDao(UsersDAO dao) {
this.dao = dao;
}
}
下面我们把struts2的控制转交给spring2
在appliction.xml中加入以下代码:
<bean id="LoginAction" class="com.test.action.LoginAction"
scope="prototype">
<property name="dao">
<ref bean="usersDao" />
</property>
</bean>我们现在进行测试一下!
启动Tomcat
然后我们点Submit.
看看结果!
再看看数据库的结果!
到此为止struts2+spring2+hibernate3配置完毕!由于时间问题例子比较简单!
展开阅读全文