1 、开发环境
Ø MyEclipse6.0
Ø JDK 1.6
Ø Java EE 5.0
Ø Tomcat6.0
Ø Struts2.1
Ø Spring2.0
Ø Hibernate3
2 、为ssh做好准备
2.1下载包
Ø Struts2.1包下载:http://struts.apache.org/download(现在最新版本估计已经是2.3.12了)
Ø Hibernate3包下载:http://www.hibernate.org/
Ø Spring2.0下载:http://www.springsource.org/download
2.2搭建开发环境
打开MyEclipse,新建一个web project,如图:(J2ee版本设为5.0)
点击Finish完成,建好的工程如图:
设置好你的tomcat6的路径即可,前提你要先安装好tomcat哦。还有需要注意的一点是,看到目录树tomcat6.x下面的JDK了吗?点击它,也要把tomcat的JDK设为jdk1.6才行,以与myeclipse一致。
好了,工程已经建好了,下面就开始配置struts吧。配置之前先把struts的包下载下来哦,下载地址上面已经给出了。
3、配置Struts2.0
3.1基础配置
1)使用struts只需要把下面五个引入即可,以后用到什么jar包,再引入。
2)修改WEB-INF下的web.xml文件,增加struts2的配置。增加代码如下:这些配置代码对于struts2是不变的,直接复制到web.xml即可。
<!-- 配置Struts -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3)添加struts配置文件。 在WEB-INF/classes目录下,新建struts.xml,模版如下:
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTDStruts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
</struts>
这边的2.0是要根据你自己的struts版本而定的。http://hi.baidu.com/albert02/item/e85abb44253ec336fa8960b5这个网址上面的错误就是因为版本的问题。
(以后的增删改查的action会在这两个struts标签里面写,如下:
<package name="default" namespace="/" extends="struts-default">
<action name="queryaction" class="queryaction"
method="excute">
<result name="success">query.jsp</result>
</action>
<action name="insertaction" class="insertaction"
method="excute">
<result name="success">insert.jsp</result>
</action>
<action name="deleteaction" class="deleteaction"
method="excute">
<result name="success">OK.jsp</result>
</action>
<action name="reviseaction" class="reviseaction"
method="excute">
<result name="success">OK.jsp</result>
</action>
<action name="showRecord" class="showRecord" method="excute">
<result name="success">revise.jsp</result>
</action>
</package>
当然测试struts配置成功是不必加这些东西的)
4)现在把工程发布到tomcat上去测试一下,在工程名字上点击右键,选择MyEclipseàAdd and Removeproject Deployments,在打开的窗口里,点击Add,选择我们之前配置好的tomcat6服务器。发布好了,启动tomcat,如果启动无异常,则说明配置成功。
4、配置Hibernate
4.1 基础配置
1) 导入最小jar包,即使用Hibernate3所必需的jar包。
2) 创建数据源
(这边add你的数据库驱动包我的是)
3) 创建Hibernate配置文件。在WEB-INF"calsses目录下(工程的src包下)新建hibernate.cfg.xml。这是hibernate连接数据库的配置文件。这里以连接My SQL为例:
a)首先给工程添加hibernate能力
这边用我自己导入的hibernate包MyEclipse自带的不用。
这边选择刚刚建立的DB Driver
b)配置hibernate.cfg.xml文件,我的配置文件如下:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="connection.username">root</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/databaseoperation
</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="myeclipse.connection.profile">dbOperation</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="connection.autocommit">true</property> //这句是为了以后执行数据库查询的时候自动提交事务的
<mapping resource="entity/User.hbm.xml" />
</session-factory>
</hibernate-configuration>
3)在web.xml文件里面加入以下内容:
<!-- 配置hibernate -->
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
<init-param>
<param-name>flushMode</param-name>
<param-value>AUTO</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
5、配置Spring2.5
5.1 基础配置
1) 导入spring包。
2) 配置web.xml文件。
在web.xml文件里面同样加入:
<!-- 配置Spring -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
3 在src下面新建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">
</beans>
5.2整合Struts和Spring
Spring与Struts的整合其实就是把Struts的Action类交给Spring来管理.!
1) 导入jar包。在Struts2.1.6的lib目录中找到struts2-spring-plugin-2.1.6.jar,引入到工程中。(刚开始已经导入了)
2) 配置web.xml文件。在web.xml中加入以下代码:
<!-- 整合spring和struts -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
3)这边是我的增删改查的action配置applicationContext.xml里面的
<!-- 由于Struts -->
<bean id="queryaction" class="action.QueryAction"
scope="prototype">
<property name="userService">
<ref bean="userService" />
</property>
</bean>
<bean id="insertaction" class="action.InsertAction"
scope="prototype">
<property name="userService">
<ref bean="userService" />
</property>
</bean>
<bean id="reviseaction" class="action.ReviseAction"
scope="prototype">
<property name="userService">
<ref bean="userService" />
</property>
</bean>
<bean id="deleteaction" class="action.DeleteAction"
scope="prototype">
<property name="userService">
<ref bean="userService" />
</property>
</bean>
<bean id="showRecord" class="action.showRecord"
scope="prototype">
<property name="userService">
<ref bean="userService" />
</property>
</bean>
5.3整合Hibernate和Spring
Spring整合Hibernate主要是对hibernate的Session进行管理,包含Session的创建、提交、关闭的整个生命周期。Spring对事务的管理应用了AOP的技术。
1) 配置sessionFactory,让spring来创建Session。在applicationContext.xml中增加如下代码:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml" />
</bean>
2) 配置事务管理器。增加如下代码:
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
3) 对事务管理器进行事务设置。
<bean id="transactionBase"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
lazy-init="true" abstract="true">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
4)事务运用到dao层下:applicationContext.xml里面的
<!-- 由于hibernate -->
<bean id="userDao" class="dao.UserDAOImpl">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="userService" class="biz.UserServiceImpl">
<property name="userDao">
<ref bean="userDao" />
</property>
</bean>
(
这边我会给出我建的项目的具体框架以及dao层的一个类文件UserDAOImpl
package dao;
import java.sql.SQLException;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import entity.User;
public class UserDAOImpl extends HibernateDaoSupport implements IUserDAO {
@SuppressWarnings("unchecked")
public List<User> findAllUser() {
String hql = "from User user order by user.id";
return (List<User>) this.getHibernateTemplate().find(hql);
}
public User findUserById(Integer id) {
User user = (User) this.getHibernateTemplate().get(User.class, id);
return user;
}
public void removeUser(int id) {
// final String hql = "delete User u where u.id= " + id;
// Integer count = (Integer) getHibernateTemplate().execute(
// new HibernateCallback() {
// public Object doInHibernate(Session session)
// throws HibernateException, SQLException {
// int deletedEntities = session.createQuery(hql)
// .executeUpdate();
// return deletedEntities;
// }
// });
User user = (User) this.getHibernateTemplate().get(User.class, id);
this.getHibernateTemplate().delete(user);
}
public void saveUser(User user) {
this.getHibernateTemplate().save(user);
}
public void updateUser(User user) {
this.getHibernateTemplate().update(user);
}
}
)
总结:
具体的SSH配置就这些了,其他的就是写实现增删改查action的类了我的项目架构如下: