• 三大框架SSH整合


    -------------------------------Spring整合Hibernate-------------------------------

    一、为什么要整合Hibernate?
    1、使用Spring的IOC功能管理SessionFactory对象
         LocalSessionFactoryBean
    2、使用Spring管理Session对象 
         HibernateTemplate
    3、使用Spring的功能实现声明式的事务管理

    二、引入Spring和Hibernate公共的JAR文件(共计28个)

    Spring-orm是Spring和hibernate整合的核心JAR文件

    以股票案例为例--添加股票:

    1.搭建分层 在entity中定义一个名称为Stock的类,并封装属性。 同时定义了名称Stock.hbm.xml

    Stock:

    Stock.hbm.xml:

    定义接口IStockDao,并自定义add方法

    public interface IStockDao {
     //添加账户
     public int addStock(Stock stock);
                 
    }

    定义接口实现类StockDaoImpl,并重写add(),在该类中植入sessionFactory,通过调用getCurrentSession()中的save方法获取到stock

    业务逻辑层Service。定义接口IStockService

    public interface IStockService {
     
        // 添加股票
        public int addStock(Stock stock);
     
    }
    

      

    接口的实现类,StockServiceImpl实现接口,重写方法,并返回到dao的add方法  

    public class StockServiceImpl implements IStockService{
        //植入dao
         
        private IStockDao stockDao;
     
        //添加股票
        public int addStock(Stock stock) {
            return stockDao.addStock(stock);
        }
    

      

    applicationContext.xml大配置:※※※※※※※

    注:在大配置中,首先需要配置C3P0数据源,打通与Oracle的连接,其次是事务管理器,以及SessionFactory的配置,并植入DataSource数据源,各种hibernate属性并关联小配置。最后就是配置DAO以及Service

    <?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:context="http://www.springframework.org/schema/context"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx"
        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">
       
      <!-- sessionFactory 的配置-->
      <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
      <!-- 数据源 -->
      <property name="dataSource" ref="dataSource"></property>
      <!-- 各种hibernate属性 -->
      <property name="hibernateProperties">
      <props>
      <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
      <prop key="hibernate.show_sql">true</prop>
      <prop key="hibernate.format_sql">true</prop>
      <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate3.SpringSessionContext</prop>
      </props>
      </property>
       
      <!-- 引入小配置 -->
      <property name="mappingLocations" value="classpath:cn/happy/entity/Stock.hbm.xml"></property>
      </bean>
       
       <!-- c3p0数据源 -->
       <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
          <property name="driverClass" value="oracle.jdbc.OracleDriver"></property>
          <property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>
          <property name="user" value="wj"></property>
          <property name="password" value="9090"></property>
       </bean>
       
     
      <!-- StockDAO -->
      <bean id="stockDao" class="cn.happy.daoImpl.StockDaoImpl">
      <property name="sessionFactory" ref="sessionFactory"></property>
      </bean>
       
      <!-- StockService -->
      <bean id="service" class="cn.happy.serviceImpl.StockServiceImpl">
       
      <property name="stockDao" ref="stockDao"></property>
      </bean>
       
      <!-- 事务管理器 -->
      <bean id="mytx" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
      <property name="sessionFactory" ref="sessionFactory"></property>
      </bean>
       
      
     <!--Aspectj AOP配置事务 -->
      
     <tx:advice id="txAdvice" transaction-manager="mytx">
     <tx:attributes>
     <tx:method name="add*" isolation="DEFAULT" propagation="REQUIRED"/>
     </tx:attributes>
     </tx:advice>
      
     <aop:config>
     <aop:pointcut expression="execution(* *..service .*.*(..))" id="pointcut"/>
     <aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"/>
     </aop:config>
      
    </beans>
    

      

    测试类: 

    public class Test01 {
    @Test
    public void addTest(){
        ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
         
        IStockService service=(IStockService)ctx.getBean("service");
         
        Stock stock=new Stock();
        stock.setSname("逗比");
        stock.setCount(22);
         
        service.addStock(stock);
        System.out.println("ok!!!");
    }

    实现效果:  

     

    (附带一图:)

    -------------------------------Spring整合Struts-------------------------------

     1、引入JAR文件:

     

    在Struts2中 :struts2-spring-plugin-2.3.24.jar
    作用: 获取容器,读取Spring容器创建的各个bean
    在Spring中: spring-web-4.2.0.RELEASE.jar 
    作用:在ServletContext初始化的时候自动注入Spring容器

    (注意:下面的代码是在上面Spring整合Hibernate的基础上修改添加的)

     2、创建Action类StockAction并继承ActionSupport 

     

     3、编写struts.xml

    大配置:applicationContext.xml。需要在Action中注入Service

     

    4、Web.xml的配置:[核心点]---需指定配置文件的位置和监听器。

    监听器作用是在整个网站运行的时候,获取到ServletContext(application)初始化的时候,自动
    注入Spring容器!

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5"
        xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
      <display-name></display-name>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
       
       <!-- 指定配置文件的位置和名称 -->
       <context-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>classpath:applicationContext.xml</param-value>
       </context-param>
        
       <!-- 监听器  作用是在整个网站运行的时候,获取到ServletContext(application)初始化的时候,自动
        注入Spring容器-->
         
        <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
       
      <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>
    </web-app>  
    

      

     5、准备简单的表单页面

     

    最后创建页面进行访问:

    add.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'add.jsp' starting page</title>
      </head>
      
      <body>
        <form action="addStock" method="post">
       	    股票名称:<input name="sname"/>
       	    股票股数:<input name="scount"/>
       	  <input type="submit" value="提交"/>
        </form>
      
      
       <%--  <s:form action="addStock" method="post">
       	    股票名称:<s:textfield name="stock.sname"></s:textfield>
       	    股票股数:<s:textfield name="stock.scount"></s:textfield>
       	  <input type="submit" value="提交"/>
        </s:form> --%>
      </body>
    </html>
    

      

    成功页面:

    index.jsp

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'index.jsp' starting page</title>
      </head>
      
      <body>
         成功了!!!!
      </body>
    </html>
    

    (附带一图:)

  • 相关阅读:
    【odoo14】【好书学习】第一章、安装odoo的开发环境
    echarts 根据geojson 数据绘制区域图(精确到镇)
    百度地图 获取具体位置经纬度
    js 实时监听滚动条状态 判断滚动条位置
    vue cli3 使用elemet-plus
    关于vue告警 More than 1 blank line not allowed
    vue cli3 创建项目
    intelliJ idea 自动修复eslint语法问题
    函数式编程
    二分法
  • 原文地址:https://www.cnblogs.com/yangronglin/p/6039606.html
Copyright © 2020-2023  润新知