本篇文章来源于:https://blog.csdn.net/zhang_ling_yun/article/details/77803178

以下内容来自慕课网的课程:基于SSH实现员工管理系统之框架整合篇(不同的是我用的jar包都是最新版本)

一、创建项目引入jar包

1、下载包(我选用的是Hibernate5.2.10+Struts2.3.33+Spring4.3.5)

Hibernate包下载地址: http://hibernate.org/orm/

Struts2下载地址: http://struts.apache.org/download

Spring下载地址: http://repo.spring.io/release/org/springframework/spring/

2、导入项目用到的jar包

(1)Hibernate用到的包:分别是lib->required中的10个包以及lib->optional->c3p0中的c3p0-0.9.5.2.jar和

mchange-commons-java-0.2.11.jar这两个包;

(2)Struts2用到的jar包:解压apps->struts2-blank.war,然后拷贝struts2-blank->WEB-INF->lib下的13个包,

然后在和apps同目录下的lib文件夹下找到commons-logging-1.1.3.jar和struts2-spring-plugin-2.3.33.jar两个包(可以直接在lib文件夹下

找到这15个包,但是有点麻烦.)。

(3)Spring用到的jar包:lib文件夹下所有的.jar包,即不选择javadoc.jar和sources.jar即可;

导好包之后的状态为:

二、引入相应配置文件

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文件:输入以下内容,修改自己的数据库名,用户名和密码即可;

jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssh
jdbc.username=root
jdbc.password=123

4、Spring中配置文件:

(1)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>

三、创建包结构并创建实体

1、创建以下包结构(可以自定义前面的模块名):

(1)cn.gdedu.ssh.action

(2)cn.gdedu.ssh.dao

(3)cn.gdedu.ssh.domain

(4)cn.gdedu.ssh.service

2、在domain包下面创建product实体,封装了pid,pname和price三个变量的javaBean类:

private Integer pid;
private String pname;
private Double price;

下面的getter和setter方法省略...

四、创建页面addProduct.jsp

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

五、编写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;
}

}

六、配置Action、DAO、Service类

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

<!-- 配置Action的类,其中scope是指action中的productService变量是多例模式 -->
<bean id="productAction" class="cn.gdedu.ssh.action.ProductAction" scope="prototype">
<!-- 注入业务层的类 -->
<property name="productService" ref="productService"></property>
</bean>

<!-- 配置业务层的类 -->
<bean id="productService" class="cn.gdedu.ssh.service.ProductService">

<!-- 注入DAO的类 -->
<property name="productDao" ref="productDao"/>
</bean>

<!-- 配置DAO的类 -->
<bean id="productDao" class="cn.gdedu.ssh.dao.ProductDao">
</bean>

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

<package name="ssh" extends="struts-default" namespace="/">
    <!-- Action自身管理类:Struts2和Spring整合的方法一 -->
    <!-- <action name="product_*" class="cn.gdedu.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;
}

七、创建数据库并配置实体类文件;

(1)进入dos界面:输入用户名密码登录mysql数据库,并创建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>

八、配置c3p0连接池和Hibernate的一些属性

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

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

<!-- 引入外部的属性文件 -->
<context:property-placeholder location="classpath:jdbc.properties"/>

<!-- 配置c3p0连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="jdbcUrl" value="${jdbc.url}"></property>

<property name="user" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>

<!-- 配置Hibernate的相关属性 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<!-- 注入连接池 -->
<property name="dataSource" ref="dataSource"></property>

<!-- 配置Hibernate的属性 -->
<property name="hibernateProperties">
<props>
<!-- 这里注意我们使用的是Hibernate5,所以要用MySQL5Dialect方言,否则会报错 -->
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.fromat_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>

</props>
</property>

<!-- 加载Hibernate的映射文件 -->
<property name="mappingResources">
<list>
<!-- 这里注意是/而不是. -->
<value>cn/gdedu/ssh/domain/Product.hbm.xml</value>
</list>
</property>
</bean>

九、编写DAO中的代码

(1)productDao类继承HibernateDaoSupport类;

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

<!-- 配置DAO的类 -->
<bean id="productDao" class="cn.gdedu.ssh.dao.ProductDao">
<!-- 注入HibernateDaoSupport模板,只需要注入sessionFactory,然后通过getHibernateTemplate方法即可 -->
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>

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

//DAO中的保存商品的方法
public void save(Product product) {
//调用sessionFactory中的getHibernateTemplate的方法.
this.getHibernateTemplate().save(product);
System.out.println("DAO中的save方法执行了...");
}

十、添加事务管理

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

<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>

<!-- 开启注解事务,在Service类上面写上transational注解,注意导对包即可 -->
<tx:annotation-driven transaction-manager="transactionManager"/>

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

最后测试的结果:

基于SSH实现员工管理系统之框架整合篇的更多相关文章

  1. JavaWeb_(SSH论坛)_二、框架整合

    基于SSH框架的小型论坛项目 一.项目入门 传送门 二.框架整合 传送门 三.用户模块 传送门 四.页面显示 传送门 五.帖子模块 传送门 六.点赞模块 传送门 七.辅助模块 传送门 导入Jar包 导 ...

  2. 实现基于SSH的门票管理系统开发的质量属性

    我要做的是一个基于SSH的门票售卖系统,在系统中常见的质量属性有:可用性.可修改性.性能.安全性.易用性. 可用性方面: 可用性是指系统正常运行时间的比例,是通过两次故障之间的时间长度或在系统崩溃情况 ...

  3. 基于SSM实现的简易员工管理系统(网站上线篇)

    经历无数苦难,好不容易,网站终于上线了.=.=内牛满面ing.chengmingwei.top就是本员工管理系统的主页啦.是的,很简陋,但是毕竟是第一次嘛,所以慢慢来嘛. 如上次所说的(网站简介,见: ...

  4. 浅谈ssh(struts,spring,hibernate三大框架)整合的意义及其精髓

    hibernate工作原理 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6.提 ...

  5. [转] 浅谈ssh(struts,spring,hibernate三大框架)整合的意义及其精髓

      hibernate工作原理 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6 ...

  6. SSM框架整合篇

    目录 SSM整合 框架搭建步骤 SSM整合 Author:SimpleWu github(已上传SSMrest风格简单增删该查实例):https://gitlab.com/450255266/code ...

  7. 最基础的SSM框架整合篇

    一.简单理解 Spring.Spring MVC和MyBatis的整合主要原理就是将我们在单独使用Spring MVC和MyBatis过程中需要自己实例化的类都交由Ioc容器来管理,过程分为两步: 第 ...

  8. Struts2+Spring+Hibernate实现员工管理增删改查功能(一)之ssh框架整合

    前言        转载请标明出处:http://www.cnblogs.com/smfx1314/p/7795837.html 本项目是我写的一个练习,目的是回顾ssh框架的整合以及使用.项目介绍: ...

  9. 基于SSH框架的学生公寓管理系统的质量属性

    系统名称:学生公寓管理系统 首先介绍一下学生公寓管理系统,在学生公寓管理方面,针对学生有关住宿信息问题进行管理,学生公寓管理系统主要包含了1)学生信息记录:包括学号.姓名.性别.院系.班级:2)住宿信 ...

随机推荐

  1. 采用spring的schedule注解配置定时任务

    1 在springmvc配置文件中新增以下配置 <!-- 此处对于定时时间的配置会被注解中的时间配置覆盖,因此,以注解配置为准 --> <task:scheduled-tasks s ...

  2. [CQOI2014]排序机械臂

    嘟嘟嘟 最近复习复习平衡树,然后又体会到了那种感觉:"写代码半小时,debug一下午". 这题其实就是让你搞一个数据结构,支持一下操作: 1.区间翻转. 2.查询区间最小值所在位置 ...

  3. session、cookie 记住登录状态的实现

    Cookie的机制 Cookie是浏览器(User Agent)访问一些网站后,这些网站存放在客户端的一组数据,用于使网站等跟踪用户,实现用户自定义功能. Cookie的Domain和Path属性标识 ...

  4. day20 Python 装饰器

    装饰器:本质就是函数,为其他函数添加附加功能,一个原则是不修改函数的源代码,另外一个原则是不修改被修饰函数的调用功能 装饰器=高阶函数+函数嵌套+闭包 前戏 import time def cal(l ...

  5. maven中的mirrors

    文章转自http://blog.csdn.net/technologyboy/article/details/17143641 简单点来说,repository就是个仓库.maven里有两种仓库,本地 ...

  6. select * 和select 所有字段的区别

    文章取自http://blog.csdn.net/u014305991/article/details/44964171 MySQL 5.1.37 表记录数41,547,002,即4000w行 使用远 ...

  7. PAT A1121 Damn Single (25 分)——set遍历

    "Damn Single (单身狗)" is the Chinese nickname for someone who is being single. You are suppo ...

  8. django_redis作为 session backend 使用配置

    Django 默认可以使用任何 cache backend 作为 session backend, 将 django-redis 作为 session 储存后端不用安装任何额外的 backend # ...

  9. Android学习之基础知识九 — 数据存储(持久化技术)之SQLite数据库存储

    前面一讲介绍了数据持久化技术的前两种:文件存储.SharedPreferences存储.下面介绍第三种技术:SQLite数据库存储 一.SQLite数据库存储 SQLite数据库是一款轻量级的关系型数 ...

  10. Luogu P2661 信息传递

    传送门 一眼就能看出来是个并查集 但是并不会写... 看了一下题解说是并查集求最小环qwq 所以,每次加入第i个小同学,判断如果他要告诉的小同学k最后会告诉他(也就是转回来了), 就说明出现了一个环, ...