SSH框架整(12)

Struts2+Spring+Hibernate导包

1.1   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注解开发.

1.2 * 配置

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>

struts.xml

<struts>

<constant name="struts.devMode" value="true" />

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

</package>

</struts>

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

2.1Spring导入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

(Spring没有引入c3p0和数据库驱动)

2.2* 配置:

applicationContext.xml

Log4j.properties

在web.xml中配置监听器;

<!-- 配置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>

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

3.1Hibernate的jar包导入:

* 核心包:hibernate3.jar

* lib/required/*.jar

* lib/jpa/*.jar

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

* 数据连接池:

* 数据库驱动:

* 二级缓存:(可选的.)

* backport-util-concurrent.jar

* commons-logging.jar

* ehcache-1.5.0.jar

3.2* Hibernate的配置:

* hibernate.cfg.xml

* 映射:

* 格式:类名.hbm.xml

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

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

Struts2和Spring的整合:

1.新建包结构:

* cn.ssh.action

* cn.ssh.service

* cn.ssh.dao

* cn.ssh.vo

2.创建实体类:

* Book

package cn.ssh.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.新建一个jsp页面:

* addBook.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags"  prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>添加图书</h1>
<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>
</body>
</html>

4.编写Action:

package cn.ssh.action;
import cn.ssh.vo.Book;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
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;
}
}

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="cn.ssh.action.BookAction" method="{1}">
    </action>
    </package>
</struts>

6.发布测试

信息: Server startup in 4928 ms
web层的添加执行了...

Struts2和Spring的整合两种方式:

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

<action name="book_*" class="cn.ssh.action.BookAction" method="{1}">
* Struts2框架自动创建Action的类.

Action交给Spring管理:(方式二)默认是单例

可以在<action>标签上通过一个伪类名方式进行配置:
<action name="book_*" class="bookAction" method="{1}"></action>
 
在spring的配置文件中:[scope="prototype"]
<!-- 配置action 这里面的id 跟Struts class="bookAction对应*****重点看scope*****-->
<bean id="bookAction" class="cn.ssh.action.BookAction" scope="prototype"></bean>
(*****)注意:Action交给Spring管理一定要配置scope=”prototype”

第二种方式测试:

Struts.xml配置文件修改为:<action name="book_*" class="bookAction" method="{1}">

applicationContext.xml配置新增:

<!-- 配置action 这里面的id 跟Struts class="bookAction对应*****重点看scope*****-->

<bean id="bookAction" class="cn.ssh.action.BookAction" scope="prototype">

</bean>

推荐使用二:

* 在Spring中管理的类,可以对其进行AOP开发.统一的管理.

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

初始化整合:

BookAction类,修改如下:

//这样就可以或得service对象(1)
private BookService bookService;
public void setBookService(BookService bookService) {
this.bookService = bookService;
}
...
// 处理请求的方法:
	public String add(){
		System.out.println("web层的添加执行了...");
		//有了(1)就可以直接调用bookService的方法了。
		bookService.add(book);
		return NONE;
	}

applicationContext.xml

<!-- 配置action 这里面的id 跟Struts class="bookAction对应*****重点看scope*****-->
<bean id="bookAction" class="cn.ssh.action.BookAction" scope="prototype">
<!-- action注入service -->
<property name="bookService" ref="bookService"/>
</bean>
<!-- service的配置 -->
<bean id="bookService" class="cn.ssh.service.BookService">
<!-- service注入dao -->
<property name="bookDao" ref="bookDao"/>
</bean>
<!-- dao的配置 -->
<bean id="bookDao" class="cn.ssh.dao.BookDao">
</bean>

测试结果:

web层的添加执行了...
Service层保存图书……
dao层保存图书...

Spring整合Hibernate:

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

零障碍整合:(第一种)

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

可以在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="cn.ssh.dao.BookDao">
<!--  -->
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>

改写DAO:继承HibernateDaoSupport类.

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

3.创建一个映射文件 (hibernate核心包hibernate-mapping-3.0.dtd头):

<hibernate-mapping>
<class name="cn.ssh.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

ps:
@Transactional
public class BookService {}

测试结果:

启动tomcat 自动创建表
Hibernate: 
    insert 
    into
        book
        (name, price) 
    values
        (?, ?)


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

不需要Hibernate配置文件的方式,将Hibernate配置文件的信息直接配置到Spring中.
Hibernate配置文件中的信息 :
* 连接数据库基本参数:
* Hibernate常用属性:
* 连接池:
* 映射:

把Hibernate配置文件整合Spring中:

删除hibernate.xml连接池信息

<!-- 必须去配置的属性 -->
	<!-- 配置数据库连接的基本信息: -->
	<property name="hibernate.connection.driver_class">
		com.mysql.jdbc.Driver
	</property>
	<property name="hibernate.connection.url">
		jdbc:mysql://192.168.1.188:3306/ssh1
	</property>
	<property name="hibernate.connection.username">root</property>
	<property name="hibernate.connection.password">123</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>

在applicationContext.xml配置连接池:

<!-- 配置没有hibernate配置文件 -->
	<!-- 连接池信息 -->
	<!-- 配置C3P0连接池 引入配置文件的方式  方法二-->
	<context:property-placeholder location="classpath:JDBC.properties"/>

	<bean id="dateSourceC3p0ref" 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.xml方言信息

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

修改applicationContext.xml配置

<!-- 零障碍整合 在spring配置文件中引入hibernate的配置文件 -->

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

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

<!-- 管理连接池 新增的-->

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

<!-- 配置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>

</bean>

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

映射

删除hibernate.xml配置

<!-- 通知Hibernate加载那些映射文件 -->
<mapping resource="cn/ssh/vo/Book.hbm.xml" />

添加applicationContext.xml配置

<!-- 加载映射   第一种 -->
<property name="mappingResources">
<list>
<value>cn/ssh/vo/Book.hbm.xml</value>
</list>
</property>
↓↓↓↓↓如果配置文件很多,用第二种方式。↓↓↓↓↓
<!-- 映射文件夹所在路径   第二种 -->
<property name="mappingDirectoryLocations">
<list>
<value>classpath:cn/ssh/vo</value>
</list>
</property>
</bean>

原文地址:http://blog.51cto.com/4534309/2116333

时间: 2024-10-16 14:02:57

SSH框架整(12)的相关文章

【j2ee spring】12、整合SSH框架(终结版)

[j2ee spring]12.整合SSH框架(终结版) 最后,我们把整个项目的截图,代码发一下,大家不想下载那个项目的话,可以在这里看到所有的代码(因为那个项目需要一个下载积分,真不多= =,我觉得我搞了那么久,收点积分应该不过分吧...嘿嘿) 这里,我尽量用截图来搞,免得复制粘贴,怪烦的 一.项目整体截图 二.开始全部代码 Person.java Person.hbm.xml PersonService.java package cn.cutter_point.service; import

SSH框架(1)

一. SSH框架相关的面试题: 1.  BeanFactory的作用是什么?   [中] BeanFactory是配置.创建.管理bean的容器,有时候也称为bean上下文.Bean与bean的依赖关系,也是由BeanFactory负责维护的. 2.  bean在spring的容器中两种基本行为是什么? [中] Singleton:单态   Non-singleton或prototype:原型 3.  spring配置文件中的ref元素的作用是什么?它的两个基本属性是什么?  [中] 用于指定属

简单ssh框架整合

Struts2+Spring4 +Hibernate4 首先看看建立项目的框架 第一步  建立web项目 第二步  导入相对应需要的jar包(放在项目WEB-INFO/lib下) 需要导入Spring需要的,Struts2需要的,Hibernate需要的,mysQL连接驱动: 第三步  配置ssh各个的xml文件: 第四步 将log4j.dtd与log4j.xml放在WEB-INFO下: log4j.xml 1 <?xml version="1.0" encoding="

ssh框架构建项目详解--基本概念和struts2

1.ssh是struts+spring+hibernate的继承框架,是目前比较流行的框架,但是已经不如ssm了. 2.集成ssh从职责上分为四层(类似于servlet+jsp+jdbc做项目的三层构架:视图,控制,业务....),分别是表示层,业务逻辑层,数据持久层,域模块层,这样分层可以让程序员短时间内构建一个结构清晰,复用性高,维护方便的web应用程序 a.使用struts作为系统的整体基础架构,负责mvc的分离(模型,视图,控制器), b.在struts框架的模型部分,控制业务反转! c

SSH框架的简化(struts2、spring4、hibernate5)

目的: 在上次的基础下,对ssh框架进行简化. 1.本文提纲:本文通过一个新闻管理系统的实例来简化ssh框架的代码编写,功能包括查询数据库中所有新闻信息,删除某条新闻信息.     2.本项目的搭建环境:Windows 8-64位,Eclipse(开发工具),jdk1.8.0_91,Tomcat 8.0 ,mysql数据库. 第一步:在eclipse里创建web项目 (news) 第二步:导入本次项目要使用到的jar包 第三步:在配置文件web.xml配置一个struts2的过滤器和spring

SSH框架中Spring框架搭建的初步理解(一)

接手基于SSH框架的web项目已经一个月有余了.早有听说javaweb三大框架,第一次接触,先来说下感受. 我感觉SSH框架最明显的优点有如下: 采用MVC模式,层次结构清晰,使程序员只需关注业务逻辑的实现. 通过配置文件,就可以掌握整个系统各个部分之间的关系. 通过AOP,可以实现事务管理和日志管理. 其中Spring框架能使你通过最简单可行的方法来解决问题,这是非常高效的.但是它的搭建也略微复杂,尤其是对于我这样的新手来说,所以开此篇记录一下SPring框架的搭建: 创建web项目,导入SS

基于maven的ssh框架一步一步搭建(一)

一.新建maven项目,配置ssh框架pom的最低支持 1.新建一个maven项目 2.添加一个web.xml ? 1 2 3 4 5 6 7 8 9 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xmlns="http://java.sun.com/xm

Eclipse下面的Maven管理的SSH框架整合(Struts,Spring,Hibernate)

搭建的环境:eclispe下面的maven web项目 Struts:    2.5.10 Spring:    4.3.8 Hibernate:   5.1.7 .Final MySQL:   5.1.30 先来详细的讲解一下SSH框架的整合,在这里是将struts2.0的Action的创建工作由Spring进行统一管理,主要是利用了Spring 控制反转和依赖注入的功能. 而将hibernate.cfg.xml整合Spring的配置文件中.而且利用Spring的面向切向功能对Hibernat

SSH框架整合过程总结

---------------------siwuxie095 SSH 框架整合过程总结 (一)导入相关 jar 包(共 41 个) 1.导入 Spring 的核心 jar 包和日志相关的 jar 包(6 个) Commons Logging 下载链接: http://commons.apache.org/proper/commons-logging/download_logging.cgi LOG4J 下载链接: https://www.apache.org/dist/logging/log4