`

Struts2.x、Spring3.x、Hibernate3.x整合开发

    博客分类:
  • SSH
阅读更多

SSH整合开发的步骤:

 

一、首先我们先导入jar包:

Struts2.x的jar包、Spring3.x的jar包、Hibernate3.x的jar包、Struts-spring plugin的jar包

二、接下来我们配置web.xml:

 

 

1>添加openSessionInView过滤器,这个配置的作用是:延迟session周期到响应结束,避免延迟加载引起错误,这个过滤器应该放到Struts过滤器的前面,组成过滤器链

 

 

<!-- openSessionInView -->
	<filter>
		<filter-name>openSessionInView</filter-name>
		<filter-class>
			org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
		</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>openSessionInView</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

 

 

2>添加Struts2.x Filter配置,这个是使用Struts开发必须要配置的,大家应该知道

 

<!-- Struts2.x Filter -->
	<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>
 

 

 

 

 3>添加Spring上下文监听器,这个监听器的作用是在web容器启动的时候自动创建applicationContext对象

 

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

 

 4>添加Spring 字符集过滤器,避免中文乱码,你懂得,不想配置的话,也可以自己写一个过滤器

 

<!-- Spring 字符集过滤器 -->
	<filter>
		<filter-name>springEncoding</filter-name>
		<filter-class>
			org.springframework.web.filter.CharacterEncodingFilter
		</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>springEncoding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
 

 

三、在源文件夹中添加配置文件:

1>添加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:p="http://www.springframework.org/schema/p"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"
 >
 	<!-- 启动自动扫描,便于使用注解把类交给Spring管理-->
	<context:component-scan base-package="com.kaishengit"/> 
 
 	<!-- 开启事务的Annotation支持 -->
	<tx:annotation-driven transaction-manager="transactionManager"/>
	
	<!-- 配置事务管理器 -->
	<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"/>
	</bean> 
	
	
	<!-- 配置数据源 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="com.mysql.jdbc.Driver" />
		<property name="jdbcUrl" value="jdbc:mysql:///ssh" />
		<property name="maxIdleTime" value="25000" />
		<property name="properties">
			<props>
				<prop key="user">root</prop>
				<prop key="password">root</prop>
				<prop key="c3p0.acquire_increment">2</prop>
				<prop key="c3p0.max_size">20</prop>
				<prop key="c3p0.min_size">1</prop>
			</props>
		</property>  
  </bean>
<!--配置SessionFactory-->
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
		
		<property name="packagesToScan" value="com.kaishengit.pojo"/>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQLDialect 
				</prop>
				<prop key="hibernate.cache.provider_class">
					org.hibernate.cache.EhCacheProvider 
				</prop>
				<prop key="hibernate.cache.provider_configuration_file_resource_path">
					ehcache.xml 
				</prop>
			</props>
		</property>
	</bean>

 
 </beans>

 

 2>添加Struts配置文件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>
	<package name="myPackage" extends="struts-default">
		<action name="user" class="userAction">
			<result>index.jsp</result>
		</action>
	</package>
</struts>

 3>添加ehcache.xml配置文件,是第三方二级缓存,这个在上面applicationContext.xml中使用到,里面都是默认值

 

<ehcache>
    <diskStore path="java.io.tmpdir"/>
    <defaultCache
        maxElementsInMemory="10000"
        eternal="false"
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        overflowToDisk="true"
        />
</ehcache>
 

 

 

四、在类中使用注解

1>pojo类使用注解,如User.java

 

package com.kaishengit.pojo;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

@Entity
@Table(name="t_user")
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public class User {
	private int id;
	private String username;
	private String password;
	
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
	
}

 

2>Spring类使用注解,类交给Spring管理,一种是在applicationContext.xml中配置,但是使用注解非常简便,把需要交给Spring类管理的类上面加上@Service、@Controller、@Component、@Repository任意一种都行,在需要依赖注入的属性的set方法上面加上@Autowired即可,如:

 

package com.kaishengit.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.kaishengit.dao.UserDao;
import com.kaishengit.pojo.User;

@Transactional
@Service
public class UserService {
	private UserDao userDao;

	public void saveOrUpdate(User user){
		userDao.saveOrUpdate(user);
	}
	
	public void del(int id){
		userDao.del(id);
	}
	
	@Transactional(readOnly=true)
	public User findById(int id){
		return (User) userDao.findById(id);
	}
	
	@Transactional(readOnly=true)
	public List<User> findAll(){
		return userDao.findAll();
	}
	
	
	//set
	@Autowired
	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}
	
	
}
 

3>使用事务,在需要事务的类(一般都是Service类)上面加上@Transactional即可,在查询的方法上面加上@Transactional(readOnly=true),代表只读事务,更利于性能,例子就是上面的java类

4>Action类,暂且使用struts.xml配置

 

 

--end--

 

 

分享到:
评论

相关推荐

    Struts2.X+Hibernate3.X+Spring2.5 整合

    标题"Struts2.X+Hibernate3.X+Spring2.5 整合"指的是将这三个框架的特定版本(Struts2.X,Hibernate3.X,Spring2.5)集成到同一个项目中,实现高效的企业级应用开发。这种整合能够充分利用各个框架的优势,使开发者...

    Ext2.1 struts1.x spring 2.x hibernate 2.x

    【标题】"Ext2.1 struts1.x spring 2.x hibernate 2.x" 涉及的技术栈是Web开发中的经典组合,主要包括EXT JS的2.1版本、Struts1.x、Spring 2.x以及Hibernate 2.x。这些技术在过去的Web应用程序开发中扮演着重要角色...

    Struts1.x Spring2.x Hibernate3.x DWR2.x整合工具文档v1.00

    ### Struts1.x、Spring2.x、Hibernate3.x 和 DWR2.x 整合知识点解析 #### 一、Struts1.x与Spring2.x的整合 **1.1 在web.xml中进行Struts和Spring的配置** 为了实现Struts1.x与Spring2.x的无缝集成,首先需要在...

    DWR+jquery2.x+easyUI1.3.x开发富客户端应用

    1. **整合目标**:本文档的目标是将 Struts2.x、Spring3.x、Hibernate4.x 与 DWR、jquery2.x 和 easyUI1.3.x 进行集成,以构建一个功能齐全且高效的 Web 开发环境。 2. **jQuery 版本选择**:为了兼容性和性能考虑...

    struts2.x hibernate spring 整合

    Struts2、Hibernate和Spring是Java开发中三大主流框架,它们各自在Web应用程序的不同层面上发挥作用,共同构建了所谓的"S2SH"(Struts2、Spring、Hibernate)集成架构。Struts2作为MVC(Model-View-Controller)框架...

    Struts1.x+Spring+Hibernate开发实例

    这个"Struts1.x+Spring+Hibernate开发实例"是一个综合性的学习资料,旨在帮助开发者理解如何将这三个框架整合在一起,构建一个完整的Web应用程序。 Struts1.x是Apache软件基金会的开源MVC(Model-View-Controller)...

    SSH(Struts2.1+Spring2.X+Hibernate3.X)整合,新手必备

    SSH整合是Java Web开发中的一种常见技术组合,指的是Struts2、Spring和Hibernate三大框架的集成。这三种框架分别在表现层、业务层和服务层扮演重要角色,它们的结合能够帮助开发者构建高效、灵活和可维护的Web应用...

    Struts.2.Hibernate.Spring整合开发技术详解.rar

    Struts 2、Hibernate 和 Spring 是Java开发中最流行的三大...通过"Struts.2.Hibernate.Spring整合开发技术详解"的全套视频和源码,你可以深入学习SSH整合的每个细节,从实际案例中积累经验,提升自己的Java开发能力。

    struts1.x+spring 2.x+hibernate3.x jar包 组合

    Struts1.x、Spring 2.x 和 Hibernate3.x 是经典的Java Web开发框架组合,被称为SSH(Struts-Spring-Hibernate)集成。这个jar包集合包含了这三个框架的核心库和其他相关依赖,便于开发者快速搭建一个基于MVC模式的...

    spring,struts1.x ,hibernate整合

    Spring、Struts1.x 和 Hibernate 是经典的 Java Web 开发框架,它们的整合是构建企业级应用的常见方式。这三个框架分别负责不同的职责:Spring 提供依赖注入和事务管理,Struts1.x 负责视图和控制层,而 Hibernate ...

    struts2.3.x+spring3.1.x+hibernate4.1整合工程(好用)

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责不同的职责,而将它们整合在一起可以构建出高效、灵活的企业级应用。这里我们详细探讨一下"Struts2.3.x+Spring3.1.x+Hibernate4.1整合工程"的...

    基于eclipse的struts2.x+hibernate3.x+spring3.x整合文档及实例源码

    综上所述,"基于eclipse的struts2.x+hibernate3.x+spring3.x整合文档及实例源码"提供了一个完整的SSH整合教程,通过下载的源码和文档,开发者可以学习并实践SSH的集成,了解每个框架在实际项目中的作用和它们协同...

    Struts_2+Spring_3+Hibernate整合开发.part5.rar

    Struts_2+Spring_3+Hibernate整合开发.part1.rar Struts_2+Spring_3+Hibernate整合开发.part2.rar Struts_2+Spring_3+Hibernate整合开发.part3.rar Struts_2+Spring_3+Hibernate整合开发.part4.rar Struts_2+...

    Spring3.x_Struts2.x_Hibernate3.x整合

    在Java Web开发中,Spring、Struts2和Hibernate这三大框架的整合是常见的技术栈,被称为SSH(Spring、Struts2、Hibernate)整合。SSH整合能够帮助开发者构建高效、灵活且易于维护的企业级应用程序。接下来,我们将...

    ssh Struts2.3.16.1+Hibernate4.3.4+Spring4.0.2 框架整合jar包

    SSH框架是Java开发中常用的三大开源框架Struts2、Hibernate和Spring的组合,它们各自负责应用程序的不同层面,共同构建了一个高效、灵活的企业级应用开发环境。这个SSH整合jar包是针对Struts2.3.16.1、Hibernate...

    Struts1.x-Hibernate,曾删改查

    **Struts1.x与Hibernate整合:** 在Java Web应用中,Struts1.x与Hibernate的整合能够实现强大的功能。通常,Struts1.x作为前端控制器,负责接收HTTP请求,处理用户的交互,而Hibernate则在后台进行数据操作。Action...

    Struts2 2.3.15 + Hibernate 3.x.x + Spring 3.2.3整合JAR包

    Struts2、Hibernate和Spring(通常简称为SSH)是Java Web开发中的三个核心框架,分别用于处理MVC(模型-视图-控制器)架构、对象关系映射(ORM)和依赖注入(DI)。将这三个框架整合在一起,可以构建出高效、可维护...

    struts1.x+spring+hibernate集成例子(包含所有jar包,ehcache二级缓存)

    Struts1.x、Spring 和 Hibernate 是Java Web开发中经典的“SSH”框架组合,它们各自承担着不同的职责。Struts1.x 是一个 MVC 框架,负责处理用户请求和业务逻辑;Spring 提供了依赖注入和面向切面编程,简化了组件的...

    Struts2.Hibernate3.2.Spring2.0整合

    Struts2、Hibernate3.2和Spring2.0是Java Web开发中三个非常重要的框架,它们的整合在企业级应用中十分常见,旨在提供更高效、灵活和可维护的解决方案。下面将详细介绍这三个框架以及它们整合的核心概念和知识点。 ...

    轻量级JavaEE企业应用实战_Struts2+Spring3+Hibernate整合开发_第3版.part2

    轻量级JavaEE企业应用实战_Struts2+Spring3+Hibernate整合开发_第3版.part2

Global site tag (gtag.js) - Google Analytics