zoukankan      html  css  js  c++  java
  • SSH(Spring Struts2 Hibernate)框架整合(xml版)

    案例描述:使用SSH整合框架实现部门的添加功能

    工程: Maven

    数据库:Oracle

    案例架构:

    1.依赖jar包pom.xml

      1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      2          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      3     <parent>
      4         <artifactId>01MyBatis</artifactId>
      5         <groupId>cn.happy</groupId>
      6         <version>1.0-SNAPSHOT</version>
      7     </parent>
      8     <modelVersion>4.0.0</modelVersion>
      9     <artifactId>10SSHXML</artifactId>
     10     <packaging>war</packaging>
     11     <name>10SSHXML Maven Webapp</name>
     12     <url>http://maven.apache.org</url>
     13     <dependencies>
     14         <!--单测-->
     15         <dependency>
     16             <groupId>junit</groupId>
     17             <artifactId>junit</artifactId>
     18             <version>4.3</version>
     19             <scope>test</scope>
     20         </dependency>
     21         <!--spring配置-->
     22         <dependency>
     23             <groupId>org.springframework</groupId>
     24             <artifactId>spring-context</artifactId>
     25             <version>4.2.0.RELEASE</version>
     26         </dependency>
     27         <!--aop使用的jar-->
     28         <dependency>
     29             <groupId> org.aspectj</groupId >
     30             <artifactId> aspectjweaver</artifactId >
     31             <version> 1.8.7</version >
     32         </dependency>
     33 
     34         <!--SpringWeb-->
     35         <dependency>
     36             <groupId>org.springframework</groupId>
     37             <artifactId>spring-web</artifactId>
     38             <version>4.1.8.RELEASE</version>
     39         </dependency>
     40 
     41         <!--JavaEE-->
     42         <dependency>
     43             <groupId>javaee</groupId>
     44             <artifactId>javaee-api</artifactId>
     45             <version>5</version>
     46         </dependency>
     47 
     48         <dependency>
     49             <groupId>javax.servlet</groupId>
     50             <artifactId>jstl</artifactId>
     51             <version>1.2</version>
     52             <scope>runtime</scope>
     53         </dependency>
     54 
     55         <dependency>
     56             <groupId>org.springframework</groupId>
     57             <artifactId>spring-tx</artifactId>
     58             <version>4.2.5.RELEASE</version>
     59         </dependency>
     60 
     61         <!--c3p0-->
     62         <dependency>
     63             <groupId>com.mchange</groupId>
     64             <artifactId>c3p0</artifactId>
     65             <version>0.9.5.2</version>
     66         </dependency>
     67 
     68         <!--hibernate jar包-->
     69         <!--jta的jar包-->
     70         <dependency>
     71             <groupId>javax.transaction</groupId>
     72             <artifactId>jta</artifactId>
     73             <version>1.1</version>
     74         </dependency>
     75 
     76         <dependency>
     77             <groupId>org.hibernate</groupId>
     78             <artifactId>hibernate-core</artifactId>
     79             <version>5.0.6.Final</version>
     80         </dependency>
     81 
     82         <!--Spring-ORM-->
     83         <dependency>
     84             <groupId>org.springframework</groupId>
     85             <artifactId>spring-orm</artifactId>
     86             <version> 4.2.2.RELEASE</version>
     87         </dependency>
     88 
     89         <!--Oracle驱动的jar-->
     90         <dependency>
     91             <groupId>com.oracle</groupId>
     92             <artifactId>ojdbc6</artifactId>
     93             <version>11.2.0.1.0</version>
     94         </dependency>
     95 
     96         <!--struts2-->
     97         <dependency>
     98             <groupId>org.apache.struts</groupId>
     99             <artifactId>struts2-core</artifactId>
    100             <version>2.3.4.1</version>
    101         </dependency>
    102 
    103         <dependency>
    104             <groupId>org.apache.struts.xwork</groupId>
    105             <artifactId>xwork-core</artifactId>
    106             <version>2.3.4.1 </version>
    107         </dependency>
    108 
    109         <!-- struts2整合spring -->
    110         <dependency>
    111             <groupId>org.apache.struts</groupId>
    112             <artifactId>struts2-spring-plugin</artifactId>
    113             <version>2.3.4.1</version>
    114         </dependency>
    115 
    116         <!-- struts注解核心包 -->
    117         <dependency>
    118             <groupId>org.apache.struts</groupId>
    119             <artifactId>struts2-convention-plugin</artifactId>
    120             <version>2.3.4.1</version>
    121         </dependency>
    122     </dependencies>
    123     <build>
    124         <resources>
    125             <resource>
    126                 <directory>src/main/java</directory>
    127                 <includes>
    128                     <include>**/*.xml</include>
    129                 </includes>
    130             </resource>
    131         </resources>
    132     </build>
    133 </project>

    2.web.xml文件配置

     1 <!DOCTYPE web-app PUBLIC
     2  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     3  "http://java.sun.com/dtd/web-app_2_3.dtd" >
     4 
     5 <web-app>
     6   <display-name>Archetype Created Web Application</display-name>
     7   <context-param>
     8     <param-name>contextConfigLocation</param-name>
     9     <param-value>classpath:applicationContext.xml</param-value>
    10   </context-param>
    11 
    12   <filter>
    13     <filter-name>struts</filter-name>
    14     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    15   </filter>
    16   <filter-mapping>
    17     <filter-name>struts</filter-name>
    18     <url-pattern>/*</url-pattern>
    19   </filter-mapping>
    20 
    21   <!--监听器-->
    22   <listener>
    23     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    24   </listener>
    25 </web-app>

    3.resource目录配置文件

    3.1 applicationContext.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3        xmlns:context="http://www.springframework.org/schema/context"
     4        xmlns:tx="http://www.springframework.org/schema/tx"
     5        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     6        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
     7      http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context.xsd
     8      http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
     9 ">
    10     <!--1.Datasource-->
    11     <!--1.配置数据源c3p0-->
    12     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    13         <property name="driverClass" value="${jdbc.driverClassName}"/>
    14         <property name="user" value="${jdbc.username}"/>
    15         <property name="password" value="${jdbc.password}"/>
    16         <property name="jdbcUrl" value="${jdbc.url}"/>
    17     </bean>
    18 
    19     <!--jdbc.properties-->
    20     <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
    21 
    22     <!--2.SessionFactory         类:Local-->
    23     <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    24         <property name="dataSource" ref="dataSource"></property>
    25         <property name="hibernateProperties">
    26             <props>
    27                 <!--hibernate.xxxxxx必须以hibernate-->
    28                 <prop key="hibernate.show_sql">true</prop>
    29                 <prop key="hibernate.format_sql">true</prop>
    30                 <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
    31                 <!--with current thread bind session和线程绑定的session-->
    32                 <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate5.SpringSessionContext</prop>
    33             </props>
    34         </property>
    35         <!--扫描小配置文件 所有的hbm文件-->
    36         <property name="mappingDirectoryLocations" value="classpath:cn/happy/entity"></property>
    37     </bean>
    38 
    39     <!--3.dao-->
    40     <bean id="deptDAO" class="cn.happy.dao.DeptDAOImpl">
    41         <property name="sessionFactory" ref="sessionFactory"></property>
    42     </bean>
    43 
    44     <!--4.service-->
    45     <bean id="deptService" class="cn.happy.service.DeptServiceImpl">
    46         <property name="deptDAO" ref="deptDAO"></property>
    47     </bean>
    48 
    49     <bean id="deptAction" class="cn.happy.action.DeptAction" scope="prototype">
    50         <property name="deptService" ref="deptService"></property>
    51     </bean>
    52 
    53     <!--  5.事务管理器    -->
    54     <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
    55         <property name="sessionFactory" ref="sessionFactory"></property>
    56     </bean>
    57 
    58     <!--6.事务-->
    59     <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
    60     <!--  <tx:advice id="txAdvice" transaction-manager="transactionManager">
    61           <tx:attributes>
    62               <tx:method name="add*" isolation="DEFAULT" propagation="REQUIRED"/>
    63           </tx:attributes>
    64       </tx:advice>
    65 
    66       <aop:config>
    67           &lt;!&ndash;配置了切点Pointcut&ndash;&gt;
    68          <aop:pointcut id="mypoint" expression="execution(* *..service.*.*(..))"/>
    69         &lt;!&ndash; 顾问&ndash;&gt;
    70          <aop:advisor advice-ref="txAdvice" pointcut-ref="mypoint"></aop:advisor>
    71      </aop:config>-->
    72 </beans>

     3.2 jdbc.properties

    1 jdbc.driverClassName=oracle.jdbc.OracleDriver
    2 jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl
    3 jdbc.username=liutao
    4 jdbc.password=liutao

    3.3  struts.xml

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE struts PUBLIC
     3         "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
     4         "http://struts.apache.org/dtds/struts-2.3.dtd">
     5 
     6 <struts>
     7     <constant name="struts.devMode" value="true"></constant>
     8     <!--将对象工厂的生成全交给Spring-->
     9     <constant name="struts.objectFactory" value="spring"></constant>
    10 
    11     <package name="default" namespace="/" extends="struts-default">
    12         <action name="add" class="deptAction" method="addDept">
    13             <result>/jsp/success.jsp</result>
    14         </action>
    15     </package>
    16 </struts>

    4.分层架构:

    entity:

        Dept:

     1 /**
     2  * Created by Administrator on 2017/12/24.
     3  * 部门表
     4  */
     5 public class Dept {
     6     private Integer deptno;  //部门编号
     7     private String dname;  //部门名称
     8     private String loc;   //部门位置
     9    
    10     //省略set  get方法
    11 }

       Dept.hbm.xml:

     1 <?xml version="1.0"?>
     2 <!DOCTYPE hibernate-mapping PUBLIC
     3         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     4         "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
     5 
     6 <hibernate-mapping package="cn.happy.entity">
     7     <!--实体 name=实体端内容  column=DB端内容-->
     8     <class name="Dept" table="DEPT" dynamic-update="true">
     9         <!--底层数据表对应的主键-->
    10         <id name="deptno" column="DEPTNO">
    11             <!--主键生成策略: assigned  程序员手动给值-->
    12             <generator class="native"/>
    13         </id>
    14         <property name="dname" column="DNAME"></property>
    15         <property name="loc" column="LOC"></property>
    16     </class>
    17 
    18 </hibernate-mapping>

    dao:

       IDeptDAO:

     1 public interface IDeptDAO {
     2     /**
     3      * @author: liutao
     4      * @Description: 添加部门
     5      * @param:
     6      * @return:
     7      * @throws:
     8      * @date: 2018/2/26 16:23
     9      */
    10     public void addDept(Dept dept);
    11 }

    DeptDAOImpl:

     1 public class DeptDAOImpl implements IDeptDAO{
     2     //植入sessionFactory
     3     private SessionFactory sessionFactory;
     4     public void addDept(Dept dept) {
     5         Session session = sessionFactory.getCurrentSession();
     6         session.save(dept);
     7     }
     8 
     9     public SessionFactory getSessionFactory() {
    10         return sessionFactory;
    11     }
    12 
    13     public void setSessionFactory(SessionFactory sessionFactory) {
    14         this.sessionFactory = sessionFactory;
    15     }
    16 }

    service:

       IDeptService:

     1 public interface IDeptService {
     2     /**
     3      * @author: liutao
     4      * @Description: 添加部门
     5      * @param:
     6      * @return:
     7      * @throws:
     8      * @date: 2018/2/26 16:23
     9      */
    10     public void addDept(Dept dept);
    11 }

       DeptServiceImpl:

     1 public class DeptServiceImpl implements IDeptService {
     2     private IDeptDAO deptDAO;
     3     @Transactional
     4     public void addDept(Dept dept) {
     5         deptDAO.addDept(dept);
     6     }
     7 
     8     public IDeptDAO getDeptDAO() {
     9         return deptDAO;
    10     }
    11 
    12     public void setDeptDAO(IDeptDAO deptDAO) {
    13         this.deptDAO = deptDAO;
    14     }
    15 }

    Action:

      DeptAction:

     1 public class DeptAction extends ActionSupport implements ModelDriven<Dept>{
     2     private Dept dept=new Dept();
     3     private IDeptService deptService;
     4 
     5     public String addDept(){
     6         deptService.addDept(dept);
     7         return SUCCESS;
     8     }
     9 
    10     public Dept getDept() {
    11         return dept;
    12     }
    13 
    14     public void setDept(Dept dept) {
    15         this.dept = dept;
    16     }
    17 
    18     public IDeptService getDeptService() {
    19         return deptService;
    20     }
    21 
    22     public void setDeptService(IDeptService deptService) {
    23         this.deptService = deptService;
    24     }
    25 
    26     public Dept getModel() {
    27         return dept;
    28     }
    29 }

    jsp页面:

    add.jsp

     1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
     2 <html>
     3 <head>
     4     <title>添加部门</title>
     5 </head>
     6 <body>
     7 <form method="post" action="/add">
     8 部门名称:<input name="dname" type="text"/>
     9     <input type="submit" value="保存"/>
    10 </form>
    11 </body>
    12 </html>

    success.jsp

    1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    2 <html>
    3 <head>
    4     <title>Title</title>
    5 </head>
    6 <body>
    7 <h1>添加成功</h1>
    8 </body>
    9 </html>
  • 相关阅读:
    C# 排序技术研究与对比
    基于.net的通用内存缓存模型组件
    Scala学习笔记:重要语法特性
    一个初学者的指南,使用D3做数据绑定
    CLR垃圾回收的设计
    CLR线程概览(下)
    CLR线程概览(一)
    使用sos查看.NET对象内存布局
    .NET对象的内存布局
    MYC编译器源码之代码生成
  • 原文地址:https://www.cnblogs.com/liutao1122/p/8492986.html
Copyright © 2011-2022 走看看