SSH框架整合

1 Struts2+Spring+Hibernate导包

Struts2导入jar包:

* struts2/apps/struts2-blank.war/WEB-INF/lib/*.jar

导入与spring整合的jar

* struts2/lib/struts2-spring-plugin-2.3.15.3.jar--- 整合Spring框架

* struts2/lib/struts2-json-plugin-2.3.15.3.jar--- 整合AJAX

* struts2/lib/struts2-convention-plugin-2.3.15.3.jar--- 使用Struts2注解开发.

Spring导入jar包:

Spring3.2 开发最基本jar包

spring-beans-3.2.0.RELEASE.jar

spring-context-3.2.0.RELEASE.jar

spring-core-3.2.0.RELEASE.jar

spring-expression-3.2.0.RELEASE.jar

com.springsource.org.apache.commons.logging-1.1.1.jar

com.springsource.org.apache.log4j-1.2.15.jar

AOP开发

spring-aop-3.2.0.RELEASE.jar

spring-aspects-3.2.0.RELEASE.jar

com.springsource.org.aopalliance-1.0.0.jar

com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar

Spring Jdbc开发

spring-jdbc-3.2.0.RELEASE.jar

spring-tx-3.2.0.RELEASE.jar

Spring事务管理

spring-tx-3.2.0.RELEASE.jar

Spring整合其他ORM框架

spring-orm-3.2.0.RELEASE.jar

Spring在web中使用

spring-web-3.2.0.RELEASE.jar

Spring整合Junit测试

spring-test-3.2.0.RELEASE.jar

Hibernate的jar包导入:

* 核心包:hibernate3.jar

* lib/required/*.jar

* lib/jpa/*.jar

* 引入hibernate整合日志系统的jar包:

* 数据连接池:

* 数据库驱动:

二级缓存:(可选的.)

* backport-util-concurrent.jar

* commons-logging.jar

* ehcache-1.5.0.jar

2 配置文件

2.1 web.xml

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

<!-- 配置Spring的监听器 -->

<listener>

<!-- 监听器默认加载的是WEB-INF/applicationContext.xml -->

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

</listener>

<!-- 指定Spring框架的配置文件所在的位置 -->

<context-param>

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

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

</context-param>

2.2 struts.xml

<struts><constant name="struts.devMode" value="true" /><package name="default" namespace="/" extends="struts-default"></package></struts>

2.3 加入配置文件

applicationContext.xml

<?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.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"><!-- 零障碍整合 在spring配置文件中引入hibernate的配置文件 --><bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="configLocation" value="classpath:hibernate.cfg.xml"/></bean><!-- 配置Action --><bean id="bookAction" class="com.sihai.action.BookAction" scope="prototype"><property name="bookService" ref="bookService"/></bean><!-- Service的配置 --><bean id="bookService" class="com.sihai.service.BookService"><property name="bookDao" ref="bookDao"/></bean><!-- DAO的配置 --><bean id="bookDao" class="com.sihai.dao.BookDao"><property name="sessionFactory" ref="sessionFactory"/></bean><!-- 管理事务 --><bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory"/></bean><!-- 注解开启事务 --><tx:annotation-driven transaction-manager="transactionManager"/>
</beans>

Log4j.properties

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c:/mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### set log levels - for more verbose logging change 'info' to 'debug' ###log4j.rootLogger=info, stdout

 Hibernate的配置:

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration>
<session-factory><!-- 必须去配置的属性 --><!-- 配置数据库连接的基本信息: --><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><property name="hibernate.connection.url">jdbc:mysql:///ssh1</property><property name="hibernate.connection.username">root</property><property name="hibernate.connection.password">123</property><!-- Hibernate的方言 --><!-- 生成底层SQL不同的 --><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><!-- 可选的属性 --><!-- 显示SQL --><property name="hibernate.show_sql">true</property><!-- 格式化SQL --><property name="hibernate.format_sql">true</property><property name="hibernate.connection.autocommit">false</property><!-- hbm:映射 to DDL: create drop alter --><property name="hibernate.hbm2ddl.auto">update</property><!-- C3P0连接池设定--><!-- 使用c3po连接池  配置连接池提供的供应商--><property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property><!--在连接池中可用的数据库连接的最少数目 --><property name="c3p0.min_size">5</property><!--在连接池中所有数据库连接的最大数目  --><property name="c3p0.max_size">20</property><!--设定数据库连接的过期时间,以秒为单位,如果连接池中的某个数据库连接处于空闲状态的时间超过了timeout时间,就会从连接池中清除 --><property name="c3p0.timeout">120</property><!--每3000秒检查所有连接池中的空闲连接 以秒为单位--><property name="c3p0.idle_test_period">3000</property><!-- 通知Hibernate加载那些映射文件 --><mapping resource="cn/itcast/vo/Book.hbm.xml" /></session-factory>
</hibernate-configuration>

映射:

格式:类名.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="com.sihai.vo.Book" table="book"><id name="id"><generator class="native"/></id><property name="name"/><property name="price"/></class>
</hibernate-mapping>

3 Struts2和Spring的整合

3.1.新建包结构:

com.sihia.action

com.sihia.service

com.sihia.dao

com.sihia.vo

3.2创建实体类:

Book

package com.sihia.vo;public class Book {private Integer id;private String name;private Double price;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Double getPrice() {return price;}public void setPrice(Double price) {this.price = price;}}

3.3.新建一个jsp页面:

addBook.jsp

  <s:form action="book_add" namespace="/" method="post" theme="simple">图书名称:<s:textfield name="name"/><br/>图书价格:<s:textfield name="price"/><br/><s:submit value="添加图书"/></s:form>

3.4.编写Action:

public class BookAction extends ActionSupport implements ModelDriven<Book>{// 模型驱动类private Book book = new Book();public Book getModel() {return book;}// 处理请求的方法:public String add(){System.out.println("web层的添加执行了...");return NONE;}}

3.5.配置struts.xml

<?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="book_*" class="bookAction" method="{1}"></action></package></struts>

4 Struts2和Spring的整合两种方式

4.1 Struts2自己管理Action:(方式一)

<action name="book_*" class="com.sihia.action.BookAction" method="{1}">

4.2 Action交给Spring管理:(方式二)

可以在<action>标签上通过一个伪类名方式进行配置:

<action name="book_*" class="bookAction" method="{1}"></action>

在spring的配置文件中:

<!-- 配置Action --><bean id="bookAction" class="com.sihai.action.BookAction"></bean>

注意:Action交给Spring管理一定要配置scope=”prototype”

4.3 Web层获得Service:

传统方式:

* 获得WebApplicationContext对象.

* 通过WebAppolicationContext中getBean(“”);

实际开发中:

* 引入了struts2-spring-plugin-2.3.15.3.jar

* 有一个配置文件 : struts-plugin.xml

开启常量 :

<constant name="struts.objectFactory" value="spring" />

引发另一个常量的执行:(Spring的工厂类按照名称自动注入)

struts.objectFactory.spring.autoWire = name

5 Spring整合Hibernate:

Spring整合Hibernate框架的时候有两种方式:

5.1 零障碍整合:(一)

可以在Spring中引入Hibernate的配置文件.

1.通过LocalSessionFactoryBean在spring中直接引用hibernate配置文件

<!-- 零障碍整合 在spring配置文件中引入hibernate的配置文件 --><bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="configLocation" value="classpath:hibernate.cfg.xml"/></bean>

2.Spring提供了Hibernate的模板.只需要将HibernateTemplate模板注入给DAO.

DAO继承HibernateDaoSupport.

<!-- DAO的配置 --><bean id="bookDao" class="com.sihai.dao.BookDao"><property name="sessionFactory" ref="sessionFactory"/></bean>

改写DAO:继承HibernateDaoSupport类.

public class BookDao extends HibernateDaoSupport{public void save(Book book) {System.out.println("DAO层的保存图书...");this.getHibernateTemplate().save(book);}}

3.创建一个映射文件 :

<hibernate-mapping><class name="com.sihai.vo.Book" table="book"><id name="id"><generator class="native"/></id><property name="name"/><property name="price"/></class></hibernate-mapping>

4.别忘记事务管理:

事务管理器:

<!-- 管理事务 --><bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory"/></bean>

5.注解管理事务:

<!-- 注解开启事务 --><tx:annotation-driven transaction-manager="transactionManager"/>

6.在业务层类上添加一个注解:

@Transactional

5.2 没有Hibernate配置文件的形式(二)

不需要Hibernate配置文件的方式,将Hibernate配置文件的信息直接配置到Spring中.

Hibernate配置文件中的信息 :

* 连接数据库基本参数:

* Hibernate常用属性:

* 连接池:

* 映射:

把Hibernate配置文件整合Spring中:

连接池:

<!-- 引入外部属性文件. --><context:property-placeholder location="classpath:jdbc.properties"/><!-- 配置c3p0连接池 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="${jdbc.driver}"/><property name="jdbcUrl" value="${jdbc.url}"/><property name="user" value="${jdbc.user}"/><property name="password" value="${jdbc.password}"/></bean>

Hibernate常用属性:

<!-- 配置Hibernate的属性 --><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><prop key="hibernate.show_sql">true</prop><prop key="hibernate.format_sql">true</prop><prop key="hibernate.hbm2ddl.auto">update</prop><prop key="hibernate.connection.autocommit">false</prop></props></property>

映射

<!-- <property name="mappingResources"><list><value>cn/itcast/vo/Book.hbm.xml</value></list></property> --><property name="mappingDirectoryLocations"><list><value>classpath:cn/itcast/vo</value></list></property>

6 HibernateTemplate的API:

Serializable save(Object entity) :保存数据

void update(Object entity) :修改数据

void delete(Object entity) :删除数据

<T> T get(Class<T> entityClass, Serializable id) :根据ID进行检索.立即检索

<T> T load(Class<T> entityClass, Serializable id) :根据ID进行检索.延迟检索.

List find(String queryString, Object... values) :支持HQL查询.直接返回List集合.

List findByCriteria(DetachedCriteria criteria)  :离线条件查询.

List findByNamedQuery(String queryName, Object... values):命名查询的方式.

【struts2+spring+hibernate】ssh框架整合开发相关推荐

  1. Struts2+Spring+Hibernate 三大框架的合并集成

    这次来看看Struts2+Spring+Hibernate三大框架的整合应用,主要是Spring和Hibernate框架的整合,因为前边已经将Strtus2+Spring整合过了基本一样. 首先看一下 ...

  2. ssh(Struts+spring+Hibernate)三大框架整合-简述

    ssh(Struts+spring+Hibernate)三大框架配合使用来开发项目,是目前javaee最流行的开发方式,必须掌握: 注意: 为了稳健起见,每加入一个框架,我们就需要测试一下,必须通过才 ...

  3. SSH框架整合开发(SSH框架整合过程)

    SSH框架整合过程 第一步 导入需要用到的jar包 第二步 搭建struts2环境 (1) 创建action ,创建struts.xml配置文件,配置action (2) 配置struts2 的过滤器 ...

  4. 浅谈ssh(struts,spring,hibernate三大框架)整合的意义及其精髓

    hibernate工作原理 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6.提 ...

  5. SSH之IDEA2017整合Struts2+Spring+Hibernate

    摘要 IDEA无疑是Java编程的利器,在下面我们将介绍如何使用IDEA来整合SSH(Struts2 + Spring + Hibernate):介绍將分为三个部分来讲,分别是新建工程,Spring引 ...

  6. java高级框架应用开发案例教程_Java高级框架应用开发案例教程:struts2+spring+hibernate PDF...

    资源名称:Java高级框架应用开发案例教程:struts2+spring+hibernate PDF 第1章 struts+spring+hibernate概述 1.1 框架概述 1.2 struts ...

  7. Spring、Struts2+Spring+Hibernate整合步骤

    所使用的Jar包: Hibernate: Spring(使用MyEclipse自动导入框架功能) Struts2: 注解包和MySql驱动包: 1.配置Hibernate和Spring: <be ...

  8. Struts2+Spring+Hibernate的整合

    整体程序结构 1.maven依赖 <!--实现Struts2+Spring+Hibernate的整合 --><dependencies><!--Spring --> ...

  9. 【Java EE (Struts2 + Spring + Hibernate)开发】:Struts2(二)之【拦截器机制】

    [Java EE (Struts2 + Spring + Hibernate)开发]:Struts2(二)之[拦截器机制] 本文地址:http://blog.csdn.net/shanglianlm/ ...

最新文章

  1. 2019年上半年收集到的中国人工智能发展详情文章
  2. 理解域信任关系,Active Directory系列之十六
  3. 韩顺平java笔记 第1讲 内容介绍 项目演示 原理剖析
  4. Python Django 生成随机字符串UUID的使用示例
  5. munin安装---已成功安装
  6. MFC 类库结构 总结
  7. javascript:history.go()和history.back()的区别
  8. 阜阳男子拿22万硬币去银行转账,银行员工数钱数到“手抽筋”
  9. TCP/IP SOCKET HTTP及HTTPS之间的关系
  10. 计算器java程序设计报告总体设计,java程序设计实验报告-计算器
  11. Struts项目中引入了过滤器filter后出现中文乱码情况
  12. [原创] Wireshark工具培训
  13. 6467t 1080php,DM6467T开发板领航——开发环境的文件配置
  14. vue+IOS9页面白屏
  15. 免费下载 客道巴巴文档 教程
  16. php集成坏境下载,常见php集成环境安装包
  17. 如何压缩PPT文档的大小
  18. 分析完百年飞机空难数据,我发现了这几条“保命”小秘诀
  19. python爬取文献资料_Python 批量爬取Web of Science 文献信息数据
  20. java开发中推荐的防御sql注入方法_Java防止SQL注入

热门文章

  1. 刚登录,有点感觉就想写下来
  2. 再谈STM32的CAN过滤器-bxCAN的过滤器的4种工作模式以及使用方法总结
  3. 【ESP8266】NONOS SDK开发,发送HTTP请求
  4. 机器学习中样本不平衡处理办法
  5. css设置背景图片缩小,css3 设置背景图片大小(缩略图形式缩小)
  6. 计算机文档插入操作,电脑在word2007文档中插入数学公式的方法
  7. 初等数论--整除--判断一个数是否是素数
  8. Android手机使用命令行增加/删除/修改密码(password/pin/pattern)
  9. 【攻防世界008】answer_to_everything
  10. 红帽杯——childRE