三大框架整合详解

SSH三大框架整合

1、 各个框架知识点分析 --- 整合(并不是真正意义上整合)

1)struts2 学习版本2.3.7

解压目录 apps 案例demo , docs 文档 ,lib jar包, src 框架源代码

最基本jar包 : apps/struts2-blank.war 11个jar

struts2-convention-plugin-2.3.7.jar用于struts使用注解 (不用注解时 一定不要导入 )

struts2-json-plugin-2.3.7.jar 用于struts2整合Ajax (使用 json-lib )

struts2-spring-plugin-2.3.7.jar 用于struts2整合Spring (用于整合Spring)

配置 web.xml Filter作为struts2框架核心控制器入口 、src目录配置struts.xml

web.xml

<!-- 为Struts2 配置核心控制器 -->

<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>

2) spring3 学习版本 3.2.0

解压目录 docs 文档规范,lib jar包, schema 约束文件

最基本jar包 :spring-beans.jar  spring-core.jar spring-context.jar spring-expression.jar 、common-loggins.jar  log4j.jar

web应用中使用spring :  spring-web.jar

测试spring和junit整合: spring-test.jar

spring aop编程 : spring-aop.jar spring-aspect.jar aopalliance.jar  aspect-weaver.jar

jdbcTemplate : spring-jdbc.jar spring-tx.jar

spring整合其他ORM框架: spring-orm.jar  (用于整合Hibernate )

配置 log4j.properties 、web.xml 配置核心监听器 、 src或WEB-INF下创建applicationContext.xml

web.xml

<!-- 配置Spring核心监听器 -->

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:applicationContext.xml</param-value>

</context-param>

在Servlet/Filter中获得Spring上下文对象

WebApplicationContext context= WebApplicationContextUtils.getWebApplicationContext(servletContext);

3) hibernate3 学习版本 3.6.10

解压目录 documentation 文档规范, lib jar包, project 源码 , hibernate3.jar 框架核心jar包

最基本jar包:hibernate3.jar 、lib\required\*.jar (6个)、lib\jpa\jpa.jar 、slf4j-log4j12-1.7.2.jar、 log4j.jar 、 lib\optional\c3p0\c3p0.jar、 jdbc驱动

二级缓存 EHCache : backport-util-concurrent.jar、commons-logging.jar 、ehcache-1.5.0.jar

配置 log4j.properties 、src下创建hibernate.cfg.xml (jdbc连接基本参数) 、为domain创建 hbm映射文件

hibernate.cfg.xml

<hibernate-configuration>

<session-factory>

<!-- jdbc四个基本连接参数,方言 -->

<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

<property name="hibernate.connection.url">jdbc:mysql:///spring3day3</property>

<property name="hibernate.connection.username">root</property>

<property name="hibernate.connection.password">abc</property>

<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>

<!-- 自动建表 -->

<property name="hibernate.hbm2ddl.auto">update</property>

<!-- 使用c3p0连接池 -->

<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>

<!-- 控制台打印SQL -->

<property name="hibernate.show_sql">true</property>

<property name="hibernate.format_sql">true</property>

</session-factory>

</hibernate-configuration>

Product.hbm.xml

<hibernate-mapping>

<class name="domain.Product" table="products" catalog="spring3day3">

<id name="id">

<generator class="native"></generator>

</id>

<property name="name"></property>

<property name="price"></property>

</class>

</hibernate-mapping>

在hibernate.cfg.xml 注册hbm文件 <mapping resource="domain/Product.hbm.xml"/>

*** SessionFactory 只初始化一次,编写HibernateUtils

2、 XML方式整合三大框架 (Struts2整合Spring3,Spring3整合Hibernate3)

1) struts2出现默认就提供对Spring的整合

第一步 到入整合插件包 struts2-spring-plugin-2.3.7.jar

第二步 在struts.xml 配置常量, 将Action对象创建权 交给Spring  <constant name="struts.objectFactory" value="spring"></constant>

第一种 struts2 整合 Spring配置 ,将Action 创建权交给Spring

struts.xml

<package name="basic" extends="struts-default" namespace="/">

<!-- 第一种,action标签 class属性,配置伪类 -->

<action name="addProduct" class="productAction" method="add">

<result>/success.jsp</result>

</action>

</package>

applicationContext.xml

<!-- 配置Action -->

<bean id="productAction" class="web.action.ProductAction" scope="prototype">

<property name="productService" ref="productService"></property>

</bean>

**********************  重点重点重点 : struts2管理Action对象是多例的, Spring管理Action ,默认单例的

第二种 自动装配Service ,由struts和spring整合插件 创建Action, 会自动装配Service对象

struts.xml

<action name="addProduct" class="web.action.ProductAction" method="add">

<result>/success.jsp</result>

</action>

applicationContext.xml

<bean id="productService" class="service.ProductService"></bean>

2) spring3整合hibernate  导入jar :spring-orm-3.2.0.RELEASE.jar 需要依赖 spring-jdbc.jar spring-tx.jar

第一种 零障碍整合

配置Spring 加载Hibernate配置文件

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

<!-- hibernate配置文件位置 -->

<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>

</bean>

使DAO类 继承HibernateDaoSupport ,为DAO注入 SessionFactory

<bean id="productDAO" class="dao.ProductDAO">

<property name="sessionFactory" ref="sessionFactory"></property>

</bean>

将DAO 注入到Service中

<bean id="productService" class="service.ProductService">

<property name="productDAO" ref="productDAO"></property>

</bean>

将Service注入到Action中

****** DAO中操作Hibernate 通过 HibernateTemplate 进行操作

进行事务管理  ----- 依赖AOP

<!-- 配置事务管理器 -->

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

<property name="sessionFactory" ref="sessionFactory"></property>

</bean>

<!-- 注解驱动事务管理 -->

<tx:annotation-driven transaction-manager="transactionManager"/>

在Service方法上 应用 @Transactional 注解

第二种 不需要编写Hibernate配置文件,直接将Hibernate配置参数 写入到Spring的配置文件  (开发中常用)

hibernate配置文件主要有三个部分 (JDBC连接基本参数、Hibernate常用属性、hbm文件映射 ) -------------- 写入spring的配置文件

通过 dataSource 配置,配置jdbc基本连接参数

<context:property-placeholder location="classpath:jdbc.properties"/>

<!-- c3p0数据源  -->

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">

<property name="driverClass" value="${jdbc.driverClass}"></property>

<property name="jdbcUrl" value="${jdbc.url}"></property>

<property name="user" value="${jdbc.user}"></property>

<property name="password" value="${jdbc.password}"></property>

</bean>

通过hibernateProperties 配置Hibernate基本属性

<property name="hibernateProperties">

<props>

<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</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.current_session_context_class">thread</prop>

</props>

</property>

通过mappingDirectoryLocations配置hbm文件

<property name="mappingDirectoryLocations">

<list>

<value>classpath:domain</value>

</list>

</property>

----------------------------------------------------------------------------------------------------------------------

在SSH整合后,Spring提供HibernateTemplate, 在DAO中,通过HibernateTemplate 间接操作Hibernate API

1) 增加操作  save

2) 修改操作  update

3) 删除操作  delete

4) 根据id查询 get/load

List find(String queryString,Object... values) 查询一个集合对象 (带条件查询) ----- 手动写HQL语句

List findByCriteria(DetachedCriteria criteria) 条件查询   ------ 面向对象方式封装,自动生成HQL

List findByCriteria(DetachedCriteria criteria,int firstResult, int maxResults)  ----- 分页查询

List findByNamedQuery(String queryName, Object...values)  将HQL语句命名,配置到配置文件 ,进行查询

List findByExample(Object exampleEntity) 根据范例查询 ,默认等值查询,设置like查询

----------------------------------------------------------------------------------------------------------------------

3、 采用全注解方式三大框架整合

39个jar包 ,在ssh2基础上 导入 struts2-convention-plugin-2.3.7.jar

复制web.xml

web.action 必须含有 action actions struts struts2 才能被struts2 注解插件扫描到

Action的注解配置

@Namespace("/")

@ParentPackage("struts-default")

public class ProductAction extends ActionSupport{

@Action(value="addProduct",results={@Result(name="success",location="/success.jsp")})

public String add(){

System.out.println("添加商品");

return SUCCESS;

}

}

在Action中注入Service

applicationContext.xml

<!-- 自动扫描Service -->

<context:annotation-config />

<context:component-scan base-package="service"></context:component-scan>

在ProductService 使用 @Service

在Service中注入DAO

applicationContext.xml

<context:component-scan base-package="service,dao"></context:component-scan>

在ProductDAO 使用 @Repository

配置PO类

@Entity

@Table(name="products")

public class Product {

@Id

@GeneratedValue(strategy=GenerationType.AUTO)

private Integer id;

private String name;

private Double price;

applicationContext.xml

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">

<!-- JDBC数据源 -->

<property name="dataSource" ref="dataSource"></property>

<!-- Hibernate常规属性 -->

<property name="hibernateProperties">

<props>

<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</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.current_session_context_class">thread</prop>

</props>

</property>

<!-- 会自动扫描路径下所有PO类文件  -->

<property name="packagesToScan">

<list>

<value>domain</value>

</list>

</property>

</bean>

将SessionFactory 交给DAO操作, 继承HibernateDaoSupport 不能用注解

<!-- 配置Hibernate模板 -->

<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">

<property name="sessionFactory" ref="sessionFactory"></property>

</bean>

@Repository

public class ProductDAO {

@Autowired

private HibernateTemplate hibernateTemplate;

对业务层添加事务管理

@Service // 这可以用@Component

@Transactional

public class ProductService {

}

时间: 2024-08-24 18:29:07

三大框架整合详解的相关文章

ssh框架整合详解一

步骤一:三大框架整合原理图 步骤二:导入hibernate相关的jar包 1.我使用的版本hibernate版本是:hibernate-release-5.0.7.Final.zip,解压后再lib目录可以看到下图目录 2.导入lib/required下的jar包:该目录下的jar包是进行hibernate开发所需要的基本jar包 3.导入lib/jpa目录下的jar包. jpa:java persist api java的持久化规范,JPA是需要Provider来实现其功能的,Hibernat

SpringMVC详解(四)------SSM三大框架整合之登录功能实现

为了后面讲解的需要,我们取数据都会从数据库中获取,所以这里先讲讲三大框架(Spring.SpringMVC.MyBatis)的整合.前面讲解 MyBatis 时,写了一篇 MyBatis 和 Spring 的整合,有兴趣的可以先看看:http://www.cnblogs.com/ysocean/p/7368499.html ,那么接下来我们直接进入正题! 本篇博客源码下载链接:http://pan.baidu.com/s/1skAfNRZ 密码:n3fn 1.整合思路 ①.表现层,也就是 Con

SSH框架的整合详解

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> SSH框架的整合详解 - super_YC的博客 - 博客频道 - CSDN.NET super_YC的博客 记录我生活的一点一滴!我很开心拥有这样一个自己心事的笔记本 目录视图 摘要视图 订阅 [活动]2017 CSDN博客专栏评选 &nbsp [5月书讯]流畅的P

SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)【转】

使用SSM(Spring.SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没有记录SSM整合的过程,这次刚刚好基于自己的一个小项目重新搭建了一次,而且比项目搭建的要更好一些.以前解决问题的过程和方法并没有及时记录,以后在自己的小项目中遇到我再整理分享一下.这次,先说说三大框架整合过程.个人认为使用框架并不是很难,关键要理解其思想,这对于我们提高编程水平很有帮助.不过,如果用都不会,谈思想就

[转]ssh2三大框架整合

提示:eclipse环境.工程环境.tomcat环境的jdk保持一致 1.新建一个工程,把工程的编码为utf-8 2.把jsp的编码形式改成utf-8 3.把jar包放入到lib下               (eclipse下jar包要放在lib下,不能在lib下还有文件夹) 4.建立三个src folder src      存放源代码 config   存放配置文件 hibernate  存放hibernate的配置文件 spring     存放spring的配置文件 struts   

测试框架mochajs详解

测试框架mochajs详解 章节目录 关于单元测试的想法 mocha单元测试框架简介 安装mocha 一个简单的例子 mocha支持的断言模块 同步代码测试 异步代码测试 promise代码测试 不建议使用箭头函数 钩子函数 钩子函数的描述参数 异步的钩子函数 全局钩子 延迟启动测试 测试用例TODO 仅执行一个用例集/用例 跳过哪些用例集/用例 重新执行用例 动态生成用例 测试时间 测试超时 用例集执行超时 用例执行超时 钩子函数超时 diff差异比较功能 mocha使用命令和参数 mocha

SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)(转)

使用 SSM ( Spring . SpringMVC 和 Mybatis )已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没有记录 SSM 整合的过程, 这次刚刚好基于自己的一个小项目重新搭建了一次,而且比项目搭建的要更好一些.以前解决问题的过程和方法并没有及时记录,以后在自己的小项目中遇到我再整理分享一下. 这次 , 先说说 三大框架整合过程 .个人认为使用框架并不是很难,关键要理解其思想,这对于我们提高编程水平很有帮

转 :手动配置三大框架整合:Spring+Struts2+mybatis

现在主流的项目框架中,数据库持久层有可能不是hibernate,而是mybatis或者ibatis,其实它们都是一样的,下面我来把环境搭建一下: [导入相关jar包]新建web项目工程mss,Spring+Struts2+mybatis整合,除了Spring和Struts的jar包外(可以在我的资源中下载),我们还需导入mybatis的几个想jar包: 三大框架整合后jar包: [配置web.xml] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)

使用SSM(Spring.SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没有记录SSM整合的过程,这次刚刚好基于自己的一个小项目重新搭建了一次,而且比项目搭建的要更好一些.以前解决问题的过程和方法并没有及时记录,以后在自己的小项目中遇到我再整理分享一下.这次,先说说三大框架整合过程.个人认为使用框架并不是很难,关键要理解其思想,这对于我们提高编程水平很有帮助.不过,如果用都不会,谈思想就