基于SSH实现员工管理系统之框架整合篇
本篇文章来源于: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实现员工管理系统之框架整合篇的更多相关文章
- JavaWeb_(SSH论坛)_二、框架整合
基于SSH框架的小型论坛项目 一.项目入门 传送门 二.框架整合 传送门 三.用户模块 传送门 四.页面显示 传送门 五.帖子模块 传送门 六.点赞模块 传送门 七.辅助模块 传送门 导入Jar包 导 ...
- 实现基于SSH的门票管理系统开发的质量属性
我要做的是一个基于SSH的门票售卖系统,在系统中常见的质量属性有:可用性.可修改性.性能.安全性.易用性. 可用性方面: 可用性是指系统正常运行时间的比例,是通过两次故障之间的时间长度或在系统崩溃情况 ...
- 基于SSM实现的简易员工管理系统(网站上线篇)
经历无数苦难,好不容易,网站终于上线了.=.=内牛满面ing.chengmingwei.top就是本员工管理系统的主页啦.是的,很简陋,但是毕竟是第一次嘛,所以慢慢来嘛. 如上次所说的(网站简介,见: ...
- 浅谈ssh(struts,spring,hibernate三大框架)整合的意义及其精髓
hibernate工作原理 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6.提 ...
- [转] 浅谈ssh(struts,spring,hibernate三大框架)整合的意义及其精髓
hibernate工作原理 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6 ...
- SSM框架整合篇
目录 SSM整合 框架搭建步骤 SSM整合 Author:SimpleWu github(已上传SSMrest风格简单增删该查实例):https://gitlab.com/450255266/code ...
- 最基础的SSM框架整合篇
一.简单理解 Spring.Spring MVC和MyBatis的整合主要原理就是将我们在单独使用Spring MVC和MyBatis过程中需要自己实例化的类都交由Ioc容器来管理,过程分为两步: 第 ...
- Struts2+Spring+Hibernate实现员工管理增删改查功能(一)之ssh框架整合
前言 转载请标明出处:http://www.cnblogs.com/smfx1314/p/7795837.html 本项目是我写的一个练习,目的是回顾ssh框架的整合以及使用.项目介绍: ...
- 基于SSH框架的学生公寓管理系统的质量属性
系统名称:学生公寓管理系统 首先介绍一下学生公寓管理系统,在学生公寓管理方面,针对学生有关住宿信息问题进行管理,学生公寓管理系统主要包含了1)学生信息记录:包括学号.姓名.性别.院系.班级:2)住宿信 ...
随机推荐
- django 中的 ajax
(Asynchronous Javascript And XML ) 特点: 异步 页面局部刷新 传递的数据量小 ajax 请求返回数据 重定向 location.href='/index/' 发请求 ...
- 如何用命令行刷新,启用,禁用Magento2的缓存
当你使用Magento商店时如何刷新Magento 2中的Cache命令行是基本的常用操作.Magento 2默认有12种缓存类型.在命令行中有5个简单的命令来管理缓存.在这篇文章中,我将逐步向您展示 ...
- php 抛出异常信息try catch
<meta charset="utf-8"> <?php /** * 自定义方法输出异常信息 */ $i=11; try { if ($i==1) { echo ...
- ucml JS调用其它页面上的服务端方法
var params = { _bpoName: "BPO_KH_ED" + "Service", //BPO的名字(拥有那个服务端函数的BPO) _metho ...
- 3902-luogu 最长不下降子区间
题目 现有数列A1,A2,…An ,修改最少的数字,使得数列严格单调递增. 依旧是书上的题 但是书上的范围比较小 而 lg上的数据范围很大 按书上的 方法 是会超时 只能过一半的数据 但是 算法思路还 ...
- android 3.0+百度地图api地图如何移动到指定的经纬度处
由于百度地图api,2.0+和3.0+的改动比较大,api基本上被全换过了,有些同学可能2.0+的api使用的非常熟悉,但是更新到3.0+时,却会遇到一些小麻烦(由于api变了,你就需要重新学习它的a ...
- Java中关于类型自动提升的两个注意点。
问题一:在进行赋值运算时,进行类型提升: 例如:short s1 = 1;s1 = s1 + 1; (错的编译通不过) short s2 = 1;s2 += 1;(正确,编译和运行都能通过) 为什么呢 ...
- 监控 -- kubernetes -- prometheus
1.但是Heapster无法做Kubernetes下应用的监控.现在,Heapster作为Kubernetes下的开源监控解决方案已经被其弃用,Prometheus成为Kubernetes官方推荐的监 ...
- 你想要的Python面试都在这里了【315+道题】
写在前面 近日恰逢学生临近毕业,课程后期大家"期待+苦逼"的时刻莫过于每天早上内容回顾和面试题问答部分[临近毕业每天课前用40-60分钟对之前内容回顾.提问和补充,专挑班里不爱说话 ...
- Python、Lua和Ruby三大语言脚本哪家强?
这三种语言中的哪一种更合适你的项目?很大程度取决于你想达到什么样的目标.作为一书的结尾,在这一节里,我会描述一下它们各自的优点和不足. Python的优点和不足 Python的优点如下: 1. P ...