• ssh基本整合(配置版本)


    本篇文章,和大家分享一下如何使用ssh框架做基本的整合(配置式)

    1.首先第一步我们需要部分jar包,我这里用的是idea工具,所以只需要引入对应的pom节点。

     1 <!--spring配置-->
     2         <dependency>
     3             <groupId>org.springframework</groupId>
     4             <artifactId>spring-context</artifactId>
     5             <version>4.2.0.RELEASE</version>
     6         </dependency>
     7         <!--aop使用的jar-->
     8         <dependency>
     9             <groupId> org.aspectj</groupId >
    10             <artifactId> aspectjweaver</artifactId >
    11             <version> 1.8.7</version >
    12         </dependency>
    13         <!--SpringWeb-->
    14         <dependency>
    15             <groupId>org.springframework</groupId>
    16             <artifactId>spring-web</artifactId>
    17             <version>4.1.8.RELEASE</version>
    18         </dependency>
    19         <!--JavaEE-->
    20         <dependency>
    21             <groupId>javaee</groupId>
    22             <artifactId>javaee-api</artifactId>
    23             <version>5</version>
    24         </dependency>
    25 
    26         <dependency>
    27             <groupId>javax.servlet</groupId>
    28             <artifactId>jstl</artifactId>
    29             <version>1.2</version>
    30             <scope>runtime</scope>
    31         </dependency>
    32 
    33         <dependency>
    34             <groupId>org.springframework</groupId>
    35             <artifactId>spring-tx</artifactId>
    36             <version>4.2.5.RELEASE</version>
    37         </dependency>
    38 
    39         <!--c3p0-->
    40         <dependency>
    41             <groupId>com.mchange</groupId>
    42             <artifactId>c3p0</artifactId>
    43             <version>0.9.5.2</version>
    44         </dependency>
    45 
    46         <!--hibernate jar包-->
    47         <!--jta的jar包-->
    48         <dependency>
    49             <groupId>javax.transaction</groupId>
    50             <artifactId>jta</artifactId>
    51             <version>1.1</version>
    52         </dependency>
    53 
    54         <dependency>
    55             <groupId>org.hibernate</groupId>
    56             <artifactId>hibernate-core</artifactId>
    57             <version>5.0.6.Final</version>
    58         </dependency>
    59 
    60         <!--Spring-ORM-->
    61         <dependency>
    62             <groupId>org.springframework</groupId>
    63             <artifactId>spring-orm</artifactId>
    64             <version> 4.2.2.RELEASE</version>
    65         </dependency>
    66 
    67         <dependency>
    68             <groupId>org.apache.struts</groupId>
    69             <artifactId>struts2-core</artifactId>
    70             <version>2.3.4.1</version>
    71         </dependency>
    72 
    73         <dependency>
    74             <groupId>org.apache.struts.xwork</groupId>
    75             <artifactId>xwork-core</artifactId>
    76             <version>2.3.4.1</version>
    77         </dependency>
    78 
    79         <!--Struts整合Spring的jar包-->
    80         <dependency>
    81             <groupId>org.apache.struts</groupId>
    82             <artifactId>struts2-spring-plugin</artifactId>
    83             <version>2.3.4.1</version>
    84         </dependency>
    85 
    86         <!--Struts2注解支持jar包-->
    87         <dependency>
    88             <groupId>org.apache.struts</groupId>
    89             <artifactId>struts2-convention-plugin</artifactId>
    90             <version>2.3.4.1</version>
    91         </dependency>
    92 
    93         <dependency>
    94             <groupId>com.oracle</groupId>
    95             <artifactId>ojdbc6</artifactId>
    96             <version>11.2.0.1.0</version>
    97         </dependency>
    所需maven节点

    2.配置web.xml文件,既然叫ssh整合,那么spring的配置和struts2的配置也就必不可少了。

    首先是spring配置,我们需要配置两点:

    <!--Spring配置
        1.上下文  识别applicationContext.xml
        2.监听器 在Tomcat容器启动的时候,帮我创建Spring容器,并且放入application中
    -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    然后是struts2的配置

    <!--Struts2配置  核心过滤器 -->
      <filter>
        <filter-name>struts</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
      </filter>
      <filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>

    注意:因为配置文件规定的顺序,所以spring的 listener配置要配置在struts2的filter后面。

    3.接下来我们关注实体层

    我这里以部门类为例

      private Integer deptno;        
    private String deptname;
    //set,get方法省略

    然后配置其hbm.xml

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    
    <hibernate-mapping package="cn.ssh.entity">
        <class name="Dept" table="Dept" schema="y2166">
            <id name="deptno" column="DEPTNO">
                <generator class="native"></generator>
            </id>
            <property name="deptname" column="DEPTNAME"></property>
        </class>
    </hibernate-mapping>

    4.DAO层比较简单两个文件

    IDeptDAO

    public interface IDeptDAO {
        public int addDept(Dept dept);
    }

    DeptDAOImpl

    public class DeptDAOImpl implements IDeptDAO {
        SessionFactory sessionFactory;
        //set,get方法省略
       
    public int addDept(Dept dept) { Session session = sessionFactory.getCurrentSession(); Serializable count = session.save(dept); return (Integer)count; } }

    5.service层

    IDeptService

    public interface IDeptService {
        public int addDept(Dept dept);
    }

    DeptServiceImpl

       private IDeptDAO dao;
       //set,get方法省略
       @Transactional
       public int addDept(Dept dept) {
            return dao.addDept(dept);
       }

    6.action层

      public class DeptAction implements Action{
        private Dept dept;
    //set,get方法省略

    private IDeptService service; //set,get方法省略
    public String execute() throws Exception { service.addDept(dept); return SUCCESS; } }

    7.配置文件

    首先jdbc.properties文件,此文件专门用于配置连接数据库的属性

    jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl
    jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
    jdbc.username=y2166
    jdbc.password=y2166

    然后就是最主要的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:aop="http://www.springframework.org/schema/aop"
           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/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
    ">
        <!--1.数据源  c3p0-->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="jdbcUrl" value="${jdbc.url}"></property>
            <property name="driverClass" value="${jdbc.driverClassName}"></property>
            <property name="user" value="${jdbc.username}"></property>
            <property name="password" value="${jdbc.password}"></property>
        </bean>
    
        <!--2.识别到jdbc.properties-->
        <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
    
        <!--3.形成SessionFactory-->
        <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
            <property name="dataSource" ref="dataSource"></property>
            <property name="hibernateProperties">
                <props>
                    <!--方言-->
                    <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
                    <!--是否打印sql-->
                    <prop key="hibernate.show_sql">true</prop>
                    <prop key="hibernate.format_sql">true</prop>
                    <prop key="hibernate.hbm2ddl.auto">update</prop>
                    <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate5.SpringSessionContext</prop>
                </props>
            </property>
            <!--关联小配置-->
            <property name="mappingDirectoryLocations" value="classpath:cn/ssh/entity"></property>
        </bean>
    
        <!--4.dao-->
        <bean id="deptDao" class="cn.ssh.dao.DeptDAOImpl">
            <property name="sessionFactory" ref="sessionFactory"></property>
        </bean>
    
        <!--5.service-->
        <bean id="deptService" class="cn.ssh.service.DeptServiceImpl">
            <property name="dao" ref="deptDao"></property>
        </bean>
    
        <!--6.action-->
        <bean id="deptAction" class="cn.ssh.action.DeptAction">
            <property name="service" ref="deptService"></property>
        </bean>
    
        <!--7.事务管理器-->
        <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
            <property name="sessionFactory" ref="sessionFactory"></property>
        </bean>
    
        <!--8.事务真实配置-->
        <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
    </beans>

    以及最后的struts2文件

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
            "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
            "http://struts.apache.org/dtds/struts-2.3.dtd">
    <struts>
       <!--修改这个文件的时候,可以自动重新部署-->
        <constant name="struts.devMode" value="true" />
        <package name="default" namespace="/" extends="struts-default">
            <action name="add" class="deptAction">
                <result>/jsp/index.jsp</result>
            </action>
        </package>
    </struts>

    8.jsp界面

    <form method="post" action="/add">
          部门名称: <input name="dept.deptname"/>
           <input type="submit" value="添加"/>
    </form>

    9.最终效果

     

    点击添加后

    数据库

    以上就是使用ssh简单的使用

  • 相关阅读:
    Spring 循环依赖的三种方式(三级缓存解决Set循环依赖问题)
    终于有人把“TCC分布式事务”实现原理讲明白了
    Java synchronized 关键字的实现原理
    Synchronized的实现原理(汇总)
    Spring的Bean的生命周期(大众版)
    Synchronized与Lock的区别与应用场景
    Lock与synchronized 的区别
    线程的同步控制synchronized和lock的对比和区别
    lock和synchronized的同步区别与选择
    Mybatis3.x与Spring4.x整合
  • 原文地址:https://www.cnblogs.com/liuhonglihahaha/p/8508722.html
Copyright © 2020-2023  润新知