SSH整合(Spring+Struts2+Hibernate)
1.架构
1.jar包
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>Y2_SSH</artifactId>
<groupId>cn.happy</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>SSHBase_XML</artifactId>
<packaging>war</packaging>
<name>SSHBase_XML Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.3</version>
<scope>test</scope>
</dependency>
<!--jta的jar包-->
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.1</version>
</dependency>
<!--mysql数据库驱动-->
<dependency>
<groupId>org.wisdom-framework</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.34_1</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.0.6.Final</version>
</dependency>
<!--以上是hibernate-->
<!--spring-->
<!--c3p0-->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
<!--Spring-ORM-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version> 4.2.2.RELEASE</version>
</dependency>
<!--AOP的相关jar-->
<dependency>
<groupId> org.aspectj</groupId >
<artifactId>aspectjweaver</artifactId >
<version> 1.8.7</version >
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>
<!--struts 2-->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.struts.xwork</groupId>
<artifactId>xwork-core</artifactId>
<version>2.3.4.1</version>
</dependency>
<dependency>
<groupId>javaee</groupId>
<artifactId>javaee-api</artifactId>
<version>5</version>
</dependency>
<!--Spring-web-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.1.8.RELEASE</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.1.0</version>
</dependency>
<!--Struts整合Spring的jar包-->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>2.3.4.1</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
</project>
2.实体层
package cn.ssh.beans;
/**
* Created by linlin on 2017/10/13.
*/
public class Dept {
private Integer deptno;
private String deptname;
public Integer getDeptno() {
return deptno;
}
public void setDeptno(Integer deptno) {
this.deptno = deptno;
}
public String getDeptname() {
return deptname;
}
public void setDeptname(String deptname) {
this.deptname = deptname;
}
}
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.ssh.beans">
<class name="Dept" table="Dept" schema="sll">
<id name="deptno" column="deptno">
<generator class="native"></generator>
</id>
<property name="deptname"></property>
</class>
</hibernate-mapping>
3.Dao层
package cn.ssh.dao;
import cn.ssh.beans.Dept;
/**
* Created by linlin on 2017/10/13.
*/
public interface IDeptDao {
public void addDept(Dept dept);
}
package cn.ssh.dao;
import cn.ssh.beans.Dept;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
/**
* Created by linlin on 2017/10/29.
*/
public class DeptDaoImpl implements IDeptDao {
private SessionFactory sessionFactory;
public void addDept(Dept dept) {
Session session = sessionFactory.getCurrentSession();
session.save(dept);
}
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
}
4.service
package cn.ssh.service;
import cn.ssh.beans.Dept;
/**
* Created by linlin on 2017/10/13.
*/
public interface DeptService {
public void addDept(Dept dept);
}
package cn.ssh.service;
import cn.ssh.beans.Dept;
import cn.ssh.dao.IDeptDao;
import org.springframework.transaction.annotation.Transactional;
/**
* Created by linlin on 2017/10/29.
*/
public class DeptServiceImpl implements DeptService {
private IDeptDao deptDao;
@Transactional
public void addDept(Dept dept) {
deptDao.addDept(dept);
}
public IDeptDao getDeptDao() {
return deptDao;
}
public void setDeptDao(IDeptDao deptDao) {
this.deptDao = deptDao;
}
}
package cn.ssh.action;
import cn.ssh.beans.Dept;
import cn.ssh.service.DeptService;
import com.opensymphony.xwork2.ActionSupport;
/**
* Created by linlin on 2017/10/29.
*/
public class DeptAction extends ActionSupport{
private Dept dept;
private DeptService deptService;
public String add(){
deptService.addDept(dept);
return SUCCESS;
}
public Dept getDept() {
return dept;
}
public void setDept(Dept dept) {
this.dept = dept;
}
public DeptService getDeptService() {
return deptService;
}
public void setDeptService(DeptService deptService) {
this.deptService = deptService;
}
}
6.applicationcontext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<!--1.Datasource-->
<!--1.配置数据源c3p0-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClassName}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
</bean>
<!--jdbc.properties-->
<context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
<!--2.SessionFactory 类:Local-->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<!-- <prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.dialect"> org.hibernate.dialect.Oracle10gDialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>-->
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
<prop key="hibernate.current_session_context_class">
org.springframework.orm.hibernate5.SpringSessionContext
</prop>
</props>
<!--扫描小配置文件 所有的hbm文件-->
</property>
<property name="mappingDirectoryLocations" value="classpath:cn/ssh/beans"></property>
</bean>
<!--3.dao-->
<bean id="deptDAO" class="cn.ssh.dao.DeptDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!--service-->
<bean id="deptService" class="cn.ssh.service.DeptServiceImpl">
<property name="deptDao" ref="deptDAO"></property>
</bean>
<bean id="DeptAction" class="cn.ssh.action.DeptAction" scope="prototype">
<property name="deptService" ref="deptService"></property>
</bean>
<!-- 5.事务管理器-->
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!--6.事务-->
<tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
</beans>
7.jdbc.porperties
jdbc.driverClassName=oracle.jdbc.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl
jdbc.username=sll
jdbc.password=sll
8.struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true"></constant>
<package name="default" namespace="/" extends="struts-default">
<action name="add" class="DeptAction" method="add">
<result name="success">/index.jsp</result>
</action>
</package>
</struts>
9。页面
<%--
Created by IntelliJ IDEA.
User: linlin
Date: 2017/10/10
Time: 19:29
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" isELIgnored="false" %>
<%--导入Struts2标签库--%>
<%@taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<title>SSH整合</title>
</head>
<body>
<h1>SSH第一次整合</h1>
<form action="/add" method="post">
名字 :<input name="dept.deptname"/><br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
10.web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<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>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<welcome-file-list>
<welcome-file>addDept.jsp</welcome-file>
</welcome-file-list>
</web-app>
11然后启动 项目 执行