基于SSH实现员工管理系统之框架整合篇

整理来自慕课网的课程
一、SSH框架的知识点的回顾:
WEB层——>业务层——>持久层——>DB
Struts2——Spring —— Hibernate
Hibernate:

public class BookDao {

    public void save(Book book){
        Configuration cfg = new Configuration().configure();
        SessionFactory sf = cfg.buildSessionFactory();
        Transaction tx = session.beginTransaction();

        session.save(booke);

        rx.commit();
        session.close();

    }

}

Spring:

public class BookService {

    private BookDao bookDao;
    public void setBookDao(BookDao bookDao){
        this.bookDao = bookDao;
    }
    public void save(Book book){
        bookDao.save(book);
    }

}


<bean id="bookDao" class="...BookDao"></bean>

<bean id="bookService" class="...BookService">
        <property name="bookDao" ref="bookDao"/>
</bean>

Struts2:

public class BookAction extends ActionSupport implements ModelDriven<Book>{

    private BookDao bookDao;
    public void getModel(){
        return book;
    }

    public String save(){
        WebApplicationContext wap = WebApplicationContextUtils.getWebApplicationContext(...);
        BookService bs = wap.getBean("bookService");
        bs.save(book);
    }

}

二、开发环境搭建

 **1. 创建项目导入jar包**

(1)Struts2:
struts2-core-2.3.16.3.jar
struts2-convention-plugin-2.3.16.3.jar
struts2-spring-plugin-2.3.16.3.jar
asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-fileupload-1.3.1.jar
commons-io-2.2.jar
commons-lang3-3.1.jar
commons-logging-1.1.3.jar
freemarker-2.3.19.jar
javassist-3.11.0.GA.jar
log4j-1.2.17.jar
ognl-3.0.6.jar
spring-core-3.0.5.RELEASE.jar
struts2-core-2.3.16.3.jar
xwork-core-2.3.16.3.jar
(2)Hibernate:
hibernate-core-4.3.8.Final.jar
antlr-2.7.7.jar
dom4j-1.6.1.jar
hibernate-commons-annotations-4.0.5.Final.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar
jandex-1.1.0.Final.jar
javassist-3.18.1-GA.jar
jboss-logging-3.1.4.GA.jar
jboss-logging-annotations-1.2.0.Final.jar
jboss-transaction-api_1.2_spec-1.0.0.Final.jar
(3)Spring:
com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar(连接池)
com.springsource.org.aopalliance-1.0.0.jar
spring-aop-4.2.4.RELEASE.jar
spring-aspects-4.2.4.RELEASE.jar
spring-beans-4.2.4.RELEASE.jar
spring-context-4.2.4.RELEASE.jar
spring-context-support-4.2.4.RELEASE.jar
spring-core-4.2.4.RELEASE.jar
spring-expression-4.2.4.RELEASE.jar
spring-instrument-4.2.4.RELEASE.jar
spring-instrument-tomcat-4.2.4.RELEASE.jar
spring-jdbc-4.2.4.RELEASE.jar
spring-jms-4.2.4.RELEASE.jar
spring-messaging-4.2.4.RELEASE.jar
spring-orm-4.2.4.RELEASE.jar
spring-oxm-4.2.4.RELEASE.jar
spring-test-4.2.4.RELEASE.jar
spring-tx-4.2.4.RELEASE.jar
spring-web-4.2.4.RELEASE.jar
spring-webmvc-4.2.4.RELEASE.jar
spring-webmvc-portlet-4.2.4.RELEASE.jar
spring-websocket-4.2.4.RELEASE.jar
struts2-spring-plugin-2.3.16.3.jar

 **2. 引入相应配置文件**
 ①、Struts2框架的配置文件
     web.xml
     struts.xml
 ②、Hibernate框架的配置文件
     Hibernate.cfg.xml(在ssh整合中该配置文件可以省略)
     映射文件
 ③、Spring配置文件
     web.xml
     applicationContext.xml

1)、Struts2中配置文件struts.xml: struts2-blank中WEB-INF\src\java下struts.xml。

2)、日记文件 log4j2.xml:struts2-blank中WEB-INF\src\java下的log4j2.xml文件

3)、jdbc.properties文件:

user=??
password=??
driverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbcUrl=jdbc\:sqlserver\://localhost\:1433;DatabaseName\=ssh

4)Spring中配置文件:applicationContext.xml文件:创建一个新的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"  

    xmlns:aop="http://www.springframework.org/schema/aop"   

    xmlns:tx="http://www.springframework.org/schema/tx"  

    xmlns:context="http://www.springframework.org/schema/context"

    xsi:schemaLocation="http://www.springframework.org/schema/beans 

    http://www.springframework.org/schema/beans/spring-beans.xsd  

    http://www.springframework.org/schema/context

    http://www.springframework.org/schema/context/spring-context.xsd

    http://www.springframework.org/schema/aop  

    http://www.springframework.org/schema/aop/spring-aop.xsd 

    http://www.springframework.org/schema/tx   

    http://www.springframework.org/schema/tx/spring-tx.xsd">  
/beans>

5)最后在web.xml文件中配置Struts2和Spring:在web.xml文件中输入以下内容即可(Ctrl+Shift+T快捷查找)。
(1)配置Spring:

<!-- Spring的框架的核心监听器 -->

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

<!-- 加载本地的applicationContext.xml文件 -->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:applicationContext.xml</param-value>

</context-param> 

(2)配置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>
 **3. 创建包结构及创建主体**

1)、创建以下包结构
xu.ssh.action
xu.ssh.dao
xu.ssh.domain
xu.ssh.service
2)、在domain包下面创建product实体,封装了pid,pname和price三个变量的javaBean类:

public class Product {

    private Integer pid;
    private String pname;
    private Double price;
    public Integer getPid() {
        return pid;
    }
    public void setPid(Integer pid) {
        this.pid = pid;
    }
    public String getPname() {
        return pname;
    }
    public void setPname(String pname) {
        this.pname = pname;
    }
    public Double getPrice() {
        return price;
    }
    public void setPrice(Double price) {
        this.price = price;
    }

}

三、Struts2整合Spring

 **1. 创建页面addProduct.jsp**
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>

  <h1>保存商品的页面</h1>
  <s:form action="product_save" method="post" namespace="/" theme="simple">
    <table border="1" width="400">
        <tr>
            <td>商品名称</td>
            <td><s:textfield name="pname" /></td>
        </tr>
        <tr>
            <td>商品价格</td>
            <td><s:textfield name="price" /></td>
        </tr>
        <tr>
            <td colspan="2"><input type="submit" value="添加" /></td>
        </tr>
    </table>
  </s:form>
  <body>

  </body>
</html>
 **2. 编写Action、DAO、Service层代码**

(1)在dao包下面创建ProductDao.java文件;

(2)在service包下面创建ProductService.java文件:

public class ProductService {
//业务层注入Dao的类
private ProductDao productDao;
public void setProductDao(ProductDao productDao) {
this.productDao = productDao;
}
}

(3)在action包下面创建ProductAction.java:继承ActionSupport类,以及实现模型驱动,即实现ModelDriven接口,并加上泛型;

public class ProductAction extends ActionSupport implements ModelDriven<Product>{

private static final long serialVersionUID = 1L;

/**

* 模型驱动使用的类

*/

private Product product=new Product();

@Override

public Product getModel() {

return this.product;

}



/**

* Struts和Spring整合过程中按名称自动注入的业务层类

*/

private ProductService productService;

public void setProductService(ProductService productService) {

this.productService = productService;

}

}
 **3. 配置Action、Service、DAO类**

(1)在applicationContext.xml中加入action,dao和service的bean结构:

  <!-- Action 的类交给 Spring框架创建 -->
  <!-- Action,Service 和 DAO 的配置:applicationContext.xml-->

  <bean id="productAction" class="xu.ssh.action.ProductAction" scope="prototype"> 
    <!-- 手动注入 Service -->
  <property name="productService" ref="productService"></property>
  </bean> 


  <!-- 配置业务层类 -->
  <bean id="productService" class="xu.ssh.service.ProductService">
    <property name="productDao" ref="productDao"></property>    
  </bean>

  <!-- 配置DAO的类 -->
  <bean id="productDao" class="xu.ssh.dao.ProductDao">
    <property name="sessionFactory" ref="sessionFactory"></property>
  </bean>

(2)在struts.xml中配置action类:

<package name="ssh" extends="struts-default" namespace="/">

    <!-- Action自身管理类:Struts2和Spring整合的方法一 -->

    <!-- <action name="product_*" class="xu.ssh.action.ProductAction" method="{1}"></action> -->



    <!-- 交给Spring管理,能够实现AOP处理,建议使用第二种方式:就是class中使用Spring中的id名称即可-->

    <action name="product_*" class="productAction" method="{1}"></action>    

    </package>

(3)配置完成后,在action类中创建save方法,然后分别创建service和dao层的save方法给action调用,然后就可以启动服务器进行测试(点击添加按钮,Console控制台将出现三行在action,service和dao中需要输出的内容)

//保存商品的执行的方法:save

public String save(){

System.out.println("Action中的save方法执行了...");

productService.save(product);

return NONE;

}  

四、Spring整合Hibernate

 **1.创建数据库并配置实体类文件;**

(1)进入dos界面:输入用户名密码登录SQLServer数据库,并创建ssh数据库,过程略;

(2)在domain包下创建product.hbm.xml实体类映射文件:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE 

hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 

"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" 

>

<hibernate-mapping>

<class name="cn.gdedu.ssh.domain.Product" table="product">

<id name="pid" column="pid">

<generator class="native"/><!-- native表示自增 -->

</id> 

<property name="pname" column="pname" length="20"/>

<property name="price" column="price"/>


</class>

</hibernate-mapping>
 **2.配置c3p0连接池和Hibernate的一些属性;**

(1)在applicationContext.xml中加入以下内容:

<!-- 启动服务器,自动加载配置文件,将自动创建表 -->

<!-- 引入外部的属性文件 -->
  <context:property-placeholder location="classpath:jdbc.properties"/>
  <!-- 配置连接池 -->
  <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="${driverClass}"></property>
    <property name="jdbcUrl" value="${jdbcUrl}"></property>
  </bean>

  <!-- 配置Hibernate的相关属性 -->
  <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <!-- 注入连接池 -->
    <property name="dataSource" ref="dataSource"></property>
    <!-- 配置Hibernate的属性 -->
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.format_sql">true</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
        </props>
    </property>
    <!-- 加载Hibernate中的映射文件 -->
    <property name="mappingResources">
        <list>
            <value>xu/ssh/domain/Product.hbm.xml</value>
        </list>
    </property>
  </bean>
 **3.编写DAO中的代码**

(1)productDao类继承HibernateDaoSupport类;

(2)在applicationContext.xml中配置Dao时加入:

<!-- 配置DAO的类 -->

<bean id="productDao" class="xu.ssh.dao.ProductDao">

<!-- 注入HibernateDaoSupport模板,只需要注入sessionFactory,然后通过getHibernateTemplate方法即可 -->

<property name="sessionFactory" ref="sessionFactory"></property>

</bean>

(3)在productDao中调用模板完成:

//DAO中的保存商品的方法

public void save(Product product) {

System.out.println("DAO中的save方法执行了");
        this.getSessionFactory().getCurrentSession().save(product);
        /**
         * 由于hibernate4已经完全可以实现事务了 ,与spring3.1中的hibernatedao,hibernateTemplete等有冲突,
         * 所以spring3.1里已经不提供hibernatedaosupport,hibernateTemplete了,只能用hibernate原始的方式用session。
         *      
         * 解决方法:Session session = getSessionFactory().getCurrentSession()。
         */

}  
 **4.添加事务管理**

(1)在applicationContext.xml中加入以下内容:

<!-- 配置事务管理器 -->

<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">

<property name="sessionFactory" ref="sessionFactory"></property>

</bean>



<!-- 开启注解事务,在Service类上面写上transational注解,注意导对包即可 -->

<tx:annotation-driven transaction-manager="transactionManager"/>

(2)在ProductService类上加上@Transactional注解

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值