SSH回顾

1 引入jar包

Struts2的jar包

  • D:\Struts2\struts-2.3.35\apps\struts2-blank\WEB-INF\lib  开发基本包
  • Struts2有一些包是需要了解的:
  • struts2-convention-plugin-2.3.35   注解开发包
  • struts2-json-plugin-2.3.35.jar  整合ajax
  • struts2-spring-plugin-2.3.35.jar  整合Spring

Hibernate的jar包

  • D:\Hibernate\hibernate-release-5.0.7.Final\lib\required  开发必须
  • mysql-connector-java-5.1.43-bin   mysql驱动
  • 日志记录
  • 注意:Struts2和Hibernate都引入了一个相同的javasistjar包(javasist版本不一样容易冲突),删掉一个版本低的
  • 使用C3P0连接池,还需要引:

Spring的jar包

  • IOC的开发
  • AOP的开发
  • JDBC模版的开发
  • 整合web项目的开发
  • 整合单元测试
  • 整合Hibernate的开发

IOC的6个基本包

AOC的包

JDBC开发,事务管理:

整合单元测试:spring-test-4.2.4.RELEASE.jar

整合web项目:

整合Hibernate的开发:

进行Spring和Struts2的整合:

引入整合的插件包

第二步:引入配置文件

Struts2的配置文件:

  • web.xml
  • struts.xml

Hibernate的配置文件:

  • hibernate.cfg.xml,删掉与线程绑定的session
  • 映射文件
  • 日志文件

Spring的配置文件:

  • web.xml
  • applicationContext.xml
  • 日志记录(一个就行,如果引过) log4j.properties

第三步:创建包结构和类

第四步: 引入相关的页面

第五步:修改menu.jsp,修改add.jsp

第六步:编写Action,添加到提交数据到action

第七步:Spring整合Struts2 方式一:Action由Struts2创建(Service由Spring,在Action类中注入Service)

编写Action:

在action中引入Service

传统方式:

进行Spring和Struts2的整合:

引入整合的插件包

在插件包中有如下配置:

开启了一个常量,在Struts2中开启这个常量,就会引发下面常量生效

让action按照名称自动注入service

将service交给Spring管理:

Action中注入Service

aaarticlea/png;base64,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" alt="" />

第八步:Spring整合Struts2方式二:Action交给Spring创建(推荐,如果用Struts2创建Action不如用Spring工厂配置,因为可以用AOP增强action)

引入插件包

将Action交给Spring

struts.xml配置Action,使用Spring创建的

注意:

1 原来的Action是多例的,现在是单例的,一个Action只有一个值栈,如果你保存,删除,修改都用一个值栈,在取值的时候就会出现问题。

2 需要手动注入Service

测试:

aaarticlea/png;base64,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" alt="" />

第九步:Service调用Dao

将Dao交给Spring管理

在Service层注入Dao

第十步:Spring整合Hibernate框架

  • 创建数据库和表
  • 编写实体和映射

Spring和Hibernate整合

在Spring配置文件中引入Hibernate配置信息

在Spring和Hibernate整合后,Spring提供了一个Hibernate的模板类,用来简化Hibernate开发,改写Dao继承HibernateDaoSupport

配置的时候在Dao中直接注入SessionFactory,就会创建Hibernate模版类

在Dao中使用Hibernate的模版实现保存操作

第十步:配置Spring的事务管理

配置事务管理器

开启注解事务

在业务层使用注解

测试:

<?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"> <!--通过context标签引入jdbc.properties -->
<context:property-placeholder location="classpath:jdbc.properties"/> <!-- <context:annotation-config/> --> <!-- 配置C3P0连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClass}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</bean> <!-- 配置Action -->
<bean id="customerAction" class="com.ssh.web.action.CustomerAction" scope="prototype">
<property name="customerService" ref="customerService"/>
</bean> <!-- 注入CustomerService -->
<bean id="customerService" class="com.ssh.service.impl.CustomerServiceImpl">
<property name="customerDao" ref="customerDao"/>
</bean> <!-- 注入Dao -->
<bean id="customerDao" class="com.ssh.dao.impl.CustomerDaoImpl"> </bean> </beans>

一 SSH整合:Spring整合Struts2的两种方式,struts.xml管理Action&Bean管理Action的更多相关文章

  1. Spring创建JobDetail的两种方式

    一.Spring创建JobDetail的两种方式 二.整合方式一示例步骤 1.将spring核心jar包.quartz.jar和Spring-context-support.jar导入类路径. 2.编 ...

  2. spring配置属性的两种方式

    spring配置属性有两种方式,第一种方式通过context命名空间中的property-placeholder标签 <context:property-placeholder location ...

  3. spring实现定时任务的两种方式

    本文为博主原创,未经允许不得转载 项目中要经常事项定时功能,在网上学习了下用spring的定时功能,基本有两种方式,在这里进行简单的总结, 以供后续参考,此篇只做简单的应用. 1.在spring-se ...

  4. SpringBoot集成Mybatis实现多表查询的两种方式(基于xml)

     下面将在用户和账户进行一对一查询的基础上进行介绍SpringBoot集成Mybatis实现多表查询的基于xml的两种方式.   首先我们先创建两个数据库表,分别是user用户表和account账户表 ...

  5. 在Spring整合aspectj实现aop的两种方式

    -----------------------------基于XML配置方案目标对象接口1 public interface IUserService { public void add(); pub ...

  6. spring实现定时任务的两种方式之spring @scheduled注解方式

    1.使用spring的 scheduled使用注解的方式 这种方法的好处是:使用方便,配置少,提高开发效率: 缺点是:如果使用服务器集群部署方式的时候,其自身无法解决定时任务重复执行的问题. 2.首先 ...

  7. SSH深度历险记(八) 剖析SSH核心原则+Spring依赖注入的三种方式

           于java发育.一类程序猿必须依靠类的其他方法,它是通常new依赖类的方法,然后调用类的实例,这样的发展问题new良好的班统一管理的例子.spring提出了依赖注入的思想,即依赖类不由程 ...

  8. spring事务配置的两种方式

    spring所有的事务管理策略类都继承自org.springframework.transaction.PlatformTransactionManager接口. <!-- 事务管理器配置,单数 ...

  9. Spring整合Struts2的两种方式

    https://blog.csdn.net/cuiyaoqiang/article/details/51887594

随机推荐

  1. iOS开发常用Mac终端命令

    常用命令: 1.grep -lr "prefs:root=" * cd 当某一文件夹下,在当前文件目录下搜索对应的内容(橘色字符串替换为你想要搜索的内容).可以用来搜索工程中在第三 ...

  2. 本地缓存Caffeine

    Caffeine 说起Guava Cache,很多人都不会陌生,它是Google Guava工具包中的一个非常方便易用的本地化缓存实现,基于LRU算法实现,支持多种缓存过期策略.由于Guava的大量使 ...

  3. streamsets 安装

    这里有很多坑点 1. 我下载的是rpm 包,full 直接安装, 安装好后,路径在 /opt 目录 2. 启动    -注意报错 2.1  先给他创建 一个 日志目录, 安装好后是不存在这个目录 mk ...

  4. 15 个优秀开源的 Spring Boot 学习项目

    Spring Boot 算是目前 Java 领域最火的技术栈了,松哥年初出版的 <Spring Boot + Vue 全栈开发实战>迄今为止已经加印了 8 次,Spring Boot 的受 ...

  5. win10配置cuda和pytorch

    简介 pytorch是非常流行的深度学习框架.下面是Windows平台配置pytorch的过程. 一共需要安装cuda.pycharm.anancoda.pytorch. 主要介绍cuda和pytor ...

  6. 源代码管理工具(1)——SVN(1)——SVN 的使用新手指南,具体到步骤详细介绍----TortoiseSVN

    一.客户端的使用: TortoiseSVN(下载地址:https://pan.baidu.com/s/14cAEV5ZfMA9mLlQAb4oznw 这里有包含中文版的语言包). 1.先下载安装(这个 ...

  7. vs2008每次build都会重新编译链接 && 项目已经过期

    转自:http://blog.csdn.net/movezzzz/article/details/6816605 无外乎两种情况: 1.时间问题,所创建的文件的时间比如是:2011-09-22 09: ...

  8. netty代理http&https请求

    (1)关键代码 package test; import java.security.cert.CertificateException; import javax.net.ssl.SSLExcept ...

  9. win10上的程序兼容win7、xp等

  10. QWidget: “Must construct a QApplication before a QWidget”

    最近在做一个关于Qt的项目,在debug版本中没有任何问题,所以就想看看在Release版本下的运行情况,结果在开始运行时,出现如下图1-1所示的错误.在网上搜索答案,大多数是关于QWidget: M ...