- 首先部署Spring框架
I:需要加入的jar包:
Spring核心包
org.springframework.asm-3.1.1.RELEASE.jar
org.springframework.beans-3.1.1.RELEASE.jar
org.springframework.context-3.1.1.RELEASE.jar
org.springframework.core-3.1.1.RELEASE.jar
org.springframework.expression-3.1.1.RELEASE.jar
commons-logging-1.1.3.jar spring 依赖的日志包
org.springframework.web-3.1.1.RELEASE.jar 在web工程中需要加入的spring web包
II:在web.xml文件中进行配置 spring 启动IOC容器
<context-param >
<param-name >contextConfigLocation </param-name>
//spring配置文件的位置
<param-value> classpath:applicationAction.xml</param-value >
</context-param >
<!-- 配置启动 Spring IOC 容器的 Listener -->
<listener >
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class >
</listener >
III:创建spring配置文件 applicationAction.xml
- 加入Sturts2的框架
I:加入Struts2的核心jar包:
asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-fileupload -1.2.2.jar
commons-io -2.0.1.jar
commons-lang3-3.1.jar
freemarker-2.3.19.jar
javassist-3.11.0.GA.jar
ognl-3.0.5.jar
II:在web.xml文件中加入struts2的配置
<!--配置启动Struts2 -->
<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 >
III:添加struts2的配置文件struts.xml
IV:整合Spring和struts2
需要添加加入一个 jar 包: Struts2 下的 struts2-spring-plugin-2.3.15.3.jar
VI:最好先测试一下是否可以 跑通
- 整合hibernate
I:加入hibernate核心jar(注意要和已有jar去除重复的,原则是去除低版本的相同jar)
antlr-2.7.7.jar
dom4j-1.6.1.jar
hibernate-commons-annotations-4.0.2.Final.jar
hibernate-core-4.2.4.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
javassist-3.15.0-GA.jar
jboss-logging-3.1.0.GA.jar
jboss-transaction-api_1.1_spec-1.0.1.Final.jar
//这是常用jar包
c3p0-0.9.1.2.jar
mysql-connector-java-5.0.8-bin.jar
加入 jar 包:
注:这是spring3.X的版本,其他版本可以不一样
集成 hibernate 需要加入的
在spring包中
org.springframework.jdbc-3.1.1.RELEASE.jar
org.springframework.orm-3.1.1.RELEASE.jar
org.springframework.transaction-3.1.1.RELEASE.jar
使用 Spring 的声明式事务:
在依赖文件包中
com.springsource.net.sf.cglib-2.2.0.jar
com.springsource.org.aopalliance-1.0.0.jar
com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
这个是在spring的jar包中
spring-aop-4.0.0.RELEASE.jar
II:创建hibernate的配置文件hibernate.cfg.xml
<session-factory>
<property name="dialect" >org.hibernate.dialect.MySQLInnoDBDialect </property>
<property name= "show_sql">true</property >
<property name= "format_sql">true</property >
<property name="hibernate.connection.isolation" >2 </property>
<!-- 指定自动生成数据表的策略 -->
<property name= "hbm2ddl.auto">update</property >
</session-factory >
配置最简单的hibernate文件,数据库连接和读取.hbm.xml文件都放在spring的配置文件中进行配置
以上是对SSH的jar包和基本配置描述,下面是在以上配置的基础上的一个简单的SSH例子进行实现
- 首先在以上配置的基础上 创建一个Model ,Employee类
//员工信息类
public class Employee {
private Integer empId ;
private String empName;
private Integer age ;
public Integer getEmpId() {
return empId ;
}
public void setEmpId(Integer empId) {
this.empId = empId;
}
public String getEmpName() {
return empName ;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public Integer getAge() {
return age ;
}
public void setAge(Integer age) {
this.age = age;
}
}
- 2:创建Dao层 EmployeeDao
public class EmployeeDao {
//session工厂获取一个hibernate 的session会话
private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
//获取一个hibernate 的session会话
public Session getCurrentSession(){
Session currentSession = sessionFactory.getCurrentSession();
return currentSession;
}
//插入一条员工信息对象
public void save(Employee emp) {
getCurrentSession().save(emp);
}
}
- 创建逻辑层 EmployeeService
public class EmployeeService {
//注入对象
private EmployeeDao employeeDao;
public void setEmployeeDao(EmployeeDao employeeDao) {
this.employeeDao = employeeDao;
}
//插入一条数据
public void save(Employee emp){
employeeDao.save(emp);
}
}
- 创建VIEW层EmployeeAction 接受页面访问的action
public class EmployeeAction {
private EmployeeService employeeService;
public void setEmployeeService(EmployeeService employeeService) {
this.employeeService = employeeService;
}
public String save() {
Employee employee = new Employee();
employee.setAge(13);
employee.setEmpName( "xiaoxiao");
employeeService.save(employee);
return "save" ;
}
}
- 配置Struts.Xml文件
<package name= "default" namespace ="/" extends="struts-default" >
<action name= "emp-*" class ="employeeAction" method="{1}" >
<result name="save" >/WEB-INF/pages/list.jsp </result>
</action>
</package >
- 生成Employee的hibernate的映射文件
<hibernate-mapping>
<class name="ssh.beans.Employee" table= "EMPLOYEES">
<id name= "empId" type ="java.lang.Integer">
<column name= "EMPID" />
<generator class= "native" />
</id>
<property name= "empName" type ="java.lang.String">
<column name= "EMPNAME" />
</property>
<property name= "age" type ="java.lang.Integer">
<column name= "AGE" />
</property>
</class >
</hibernate-mapping>
- 最要是spring的配置文件applicationAction.xml中对Struts2和hibernate的管理
I:首先是配置数据源
<!-- 声明引用资源文件的位置 在工程项目中加入一个db.properties文件保存数据库的连接和配置信息-->
<context:property-placeholder location="classpath:db.properties" />
<!-- 配置 C3P0 数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" >
<property name= "user" value="${user}" ></property>
<property name= "password" value="${password}" ></property>
<property name= "driverClass" value="${driver}" ></property>
<property name= "jdbcUrl" value="${url}" ></property>
</bean >
II:初始化sessionfactory
<!-- 初始化 hibernate的session会话 -->
<bean id="sessionFactory"
class= "org.springframework.orm.hibernate4.LocalSessionFactoryBean" >
<property name= "dataSource" ref="dataSource" ></property>
<!--hibernate的配置文件的路径-->
<property name= "configLocation" value="classpath:hibernate.cfg.xml" ></property>
<!--hibernate的各个类的Maping的路径-->
<property name= "mappingLocations" value="classpath:ssh/beans/*.hbm.xml" ></property>
</bean >
III:开启spring的事务进行对hibernate的操作同一管理
<bean id= "transactionManager"
class= "org.springframework.orm.hibernate4.HibernateTransactionManager" >
<property name= "sessionFactory" ref="sessionFactory" ></property>
</bean >
//事务作用的方法和作用的方式
<tx:advice id="advice">
<tx:attributes>
<tx:method name= "*" />
</tx:attributes>
</tx:advice >
<aop:config >
//针对相应的包中的类方法进行事务处理
<aop:pointcut expression="execution(* ssh.service.*.*(..))"
id= "exp" />
<aop:advisor advice-ref="advice" pointcut-ref="exp" />
</aop:config >
VI:把需要注入的类交给IOC进行管理和配置
<bean id= "employeeAction" class="ssh.Actions.EmployeeAction"
scope= "prototype">
<property name= "employeeService" ref="employeeService" ></property>
</bean >
<bean id="employeeService" class="ssh.service.EmployeeService" >
<property name= "employeeDao" ref="employeeDao" ></property>
</bean >
<bean id="employeeDao" class= "ssh.Dao.EmployeeDao">
<property name= "sessionFactory" ref="sessionFactory" ></property>
</bean >
以上就是最简单SSH整合方式