入门SSH整合

  • 首先部署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的管理
     <!-- 声明引用资源文件的位置  在工程项目中加入一个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整合方式
posted @ 2015-04-07 14:11  山寨少主  阅读(179)  评论(0编辑  收藏  举报