`
king_tt
  • 浏览: 2233033 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

struts2+spring+hibernate集成(annotation版)

 
阅读更多

费话不多说......

(1)由于本人最常用的是Oracle,所以本例就采用Oracle为例,下面是建表语句:

--用户表
create table t_user
(
 user_id number primary key not null,--编号
 user_name varchar2(24),--姓名
 user_sex varchar2(4),--性别
 user_class varchar2(24)--班级
);
create sequence user_seq
start with 1
increment by 1;
insert into t_user values(user_seq.nextval,'张一','男','大班');
insert into t_user values(user_seq.nextval,'张二','男','大班');
insert into t_user values(user_seq.nextval,'张三','男','大班');
insert into t_user values(user_seq.nextval,'张四','男','大班');
insert into t_user values(user_seq.nextval,'张五','男','大班');

insert into t_user values(user_seq.nextval,'李一','女','小班');
insert into t_user values(user_seq.nextval,'李二','女','小班');
insert into t_user values(user_seq.nextval,'李三','女','小班');
insert into t_user values(user_seq.nextval,'李四','女','小班');
insert into t_user values(user_seq.nextval,'李五','女','小班');
select * from t_user;


(2)spring配置文件,个人主要分成两个,便于管理,放到src目录下,

首先是数据源配置applicationContext-datasource.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"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">


	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"  destroy-method="close">
	        <property name="driverClass"><value>oracle.jdbc.driver.OracleDriver</value></property>
	        <property name="jdbcUrl"><value>jdbc:oracle:thin:@localhost:1521:ORCL</value></property>              
	        <property name="user"><value>scott</value></property>        
	        <property name="password"><value>tiger</value></property>      
	        <property name="minPoolSize"><value>5</value></property>
	        <property name="maxPoolSize"><value>50</value></property>
	        <property name="maxIdleTime"><value>1800</value></property>
	        <property name="acquireIncrement"><value>5</value></property>
	        <property name="maxStatements"><value>0</value></property>
	        <property name="maxStatementsPerConnection"><value>100</value></property>
	        <property name="initialPoolSize"><value>5</value></property>
	        <property name="acquireRetryAttempts"><value>30</value></property>
	        <property name="breakAfterAcquireFailure"><value>false</value></property>
	        <property name="testConnectionOnCheckout"><value>false</value></property>
	        <property name="idleConnectionTestPeriod"><value>1800</value></property>
  </bean>

	<!-- 注入jdbcTemplate,查询数据时使用 -->
	<bean id="jdbcTemplete" class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSource"></property>
	</bean>

	<!-- 
           <context:annotation-config></context:annotation-config>
        -->
        <!-- 如果配置了自动扫描,则上面的可以注释掉 -->
        <context:component-scan base-package="com.test"></context:component-scan>
</beans>



然后是sessionFactory以及事务相关配置 applicationContext-hibernate.xml,将实体bean以及事务交给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:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">


	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
		<property name="hibernateProperties">
	    	 <props>
	            <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9iDialect</prop>
	            <prop key="hibernate.show_sql">false</prop>
	            <prop key="hibernate.format_sql">false</prop>
	            <prop key="hibernate.hbm2ddl.auto">update</prop>
	            <prop key="hibernate.connection.release_mode">auto</prop>
	         </props>
	    </property>
   		<property name="mappingDirectoryLocations">
   			<list>
   			   <value>classpath:com/test/model/</value>
   			</list>
   		</property>
	</bean>
	
	<bean name="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
   	  	<property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    
	<bean name="baseTransaction" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
  		<property name="transactionManager" ref="transactionManager"></property>
  		<property name="proxyTargetClass" value="true"></property>
  		<property name="transactionAttributes">
  			<props>
  				<prop key="create*">PROPAGATION_REQUIRED</prop>
  				<prop key="save*">PROPAGATION_REQUIRED</prop>
  				<prop key="update*">PROPAGATION_REQUIRED</prop>
  				<prop key="edit*">PROPAGATION_REQUIRED</prop>
  				<prop key="del*">PROPAGATION_REQUIRED</prop>
  				<prop key="copy*">PROPAGATION_REQUIRED</prop>
  				<prop key="sync*">PROPAGATION_REQUIRED</prop>
  				<prop key="*">readOnly</prop>
  			</props>
  		</property>
  </bean>
	
</beans>


(3)接下来就是struts的配置文件了,同样放到src目录下,struts.xml代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd" >
<struts>

	<constant name="struts.ui.theme" value="simple" />
	<constant name="struts.ui.templateDir" value="template" />
	<constant name="struts.ui.templateSuffix" value="ftl" />

	<constant name="struts.devMode" value="true"></constant>
	<constant name="struts.configuration.xml.reload" value="true"></constant>
	
	<package name="default" extends="struts-default">
		<action name="userAction" class="com.test.user.action.UserAction">
			<result name="all">/all.jsp</result><!-- 此处代码配置forward跳转,可不必理会 -->
			<result name="all_group">/all_group.jsp</result>
		</action>
	</package>
	
</struts>



(4)接下来就是最核心的web.xml配置了,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	
	<filter>
		<filter-name>struts</filter-name>
		<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	
	<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>
	
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>


相关配置做好了,接下来就开始以用户添加和查询为例......
(5)User.java,实体Bean

package com.test.model;

import java.io.Serializable;

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

@Entity
@Table(name="t_user",catalog="scott")
public class User implements Serializable{

	private int user_id;
	
	private String user_name;
	
	private String user_sex;
	
	private String user_class;
	
	public User(){
		
	}
	
	public User(String user_name,String user_sex,String user_class){
		this.user_name = user_name;
		this.user_sex=user_sex;
		this.user_class=user_class;
	}

	@Id
	@Column(name="user_id")
	@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="user_seq")
	@SequenceGenerator(sequenceName="user_seq",name="user_seq")
	public int getUser_id() {
		return user_id;
	}
	
	public void setUser_id(int user_id) {
		this.user_id = user_id;
	}

	@Column(name="user_name",length=24)
	public String getUser_name() {
		return user_name;
	}

	public void setUser_name(String user_name) {
		this.user_name = user_name;
	}

	@Column(name="user_sex",length=4)
	public String getUser_sex() {
		return user_sex;
	}

	public void setUser_sex(String user_sex) {
		this.user_sex = user_sex;
	}
	
	@Column(name="user_class",length=24)
	public String getUser_class() {
		return user_class;
	}

	public void setUser_class(String user_class) {
		this.user_class = user_class;
	}
	
}

(6)新建接口类:UserService.java

package com.test.user.service;

import java.util.List;

import org.springframework.stereotype.Service;

import com.test.model.User;

@Service
public interface UserService {

	/*************
	 * 创建用户
	 * 
	 * @param user
	 * @throws Exception
	 */
	public void createUser(User user) throws Exception;

	/************
	 * 获取用户列表
	 * 
	 * @return
	 * @throws Exception
	 */
	public List<User> getAllUser() throws Exception;
	
}

(6)新建UserDao,实现增加和查询的功能,继承HibernateDaoSupport ,代码如下:

package com.test.user.dao;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;

import org.hibernate.SessionFactory;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.support.rowset.SqlRowSet;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;

import com.test.model.User;

@Repository
public class UserDao extends HibernateDaoSupport {

	private JdbcTemplate jdbcTemplate;

	@Resource
	public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
		this.jdbcTemplate = jdbcTemplate;
	}

	@Resource
	public void setSessionFactoryOverride(SessionFactory sessionFactory) {
		super.setSessionFactory(sessionFactory);
	}

	public void createUser(User user) throws Exception {
		this.getHibernateTemplate().save(user);

	}

	@SuppressWarnings("unchecked")
	public List<User> getAllUser() throws Exception {

		// return this.getHibernateTemplate().find("from User");

		// 用jdbcTemplate查询
		List<User> list = new ArrayList<User>();
		SqlRowSet rs = this.jdbcTemplate
				.queryForRowSet("select user_id,user_name,user_sex,user_class from t_user");
		while (rs.next()) {
			User user = new User();
			user.setUser_id(rs.getInt("user_id"));
			user.setUser_name(rs.getString("user_name"));
			user.setUser_sex(rs.getString("user_sex"));
			user.setUser_class(rs.getString("user_class"));
			list.add(user);
		}
		return list;
	}

}


(7)新建UserServiceImpl.java,注入UserDao,调用UserDao里的方法,实现UserServie接口,代码如下:

package com.test.user.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Component;

import com.test.model.User;
import com.test.user.dao.UserDao;
import com.test.user.service.UserService;

@Component
public class UserServiceImpl implements UserService {
	@Resource
	private UserDao userDao;

	@Override
	public void createUser(User user) throws Exception {
		this.userDao.createUser(user);

	}

	@Override
	public List<User> getAllUser() throws Exception {
		return this.userDao.getAllUser();
	}
	
	
}

(8)接下来理所应当就是我们的控制器UserAction.java类了

package com.test.user.action;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;

import com.opensymphony.xwork2.ActionSupport;
import com.test.model.User;
import com.test.user.service.UserService;

@Controller
public class UserAction extends ActionSupport {

	@Resource
	private UserService userService;

	private List<User> userList = new ArrayList<User>();
	
	
	public List<User> getUserList() {
		return userList;
	}

	public void setUserList(List<User> userList) {
		this.userList = userList;
	}

	public String getAllUser() {
		try {
//			this.userList = this.userService.getAllUser();//全查询
			this.userList = new ArrayList<User>();
			System.out.println(this.userList.size());
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "all";
	}

}

(10)为了避免麻烦就不用jsp页面进行演示,直接用Junit进行测试,添加jar包junit-4.8.2.jar,测试代码如下:


package com.test.test;

import java.util.List;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.test.user.service.UserService;

public class UserTest {

	private static UserService userService;
	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
		System.out.println("JUnit start......");
		ApplicationContext app=new ClassPathXmlApplicationContext("applicationContext-*.xml");
		userService=(UserService) app.getBean("userServiceImpl");
	}

	@AfterClass
	public static void afterClass() throws Exception {
		System.out.println("JUnit end......");
	}
	
	
	@Test
	public void getAllUser(){
		try {
			System.out.println("用户数:"+this.userService.getAllUser().size());
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
		
//	@Test
//	public void addUser(){
//		System.out.println("添加用户......");
//		User user=new User("刘星","男","小班");
//		try {
//			this.userService.createUser(user);
//		} catch (Exception e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//	}

}

(注:本例已测试通过)

分享到:
评论

相关推荐

    struts2+spring2+hibernate3 Annotation的整合

    Struts2、Spring和Hibernate是Java企业级开发中三大核心框架,它们的集成极大地提高了开发效率和代码质量。本文将详细解析"Struts2+Spring2+Hibernate3 Annotation的整合"这一主题,主要涵盖以下几个方面: 1. **...

    Struts2+Spring2+Hibernate3+Annotation所需JAR包

    ### Struts2+Spring2+Hibernate3+Annotation所需JAR包详解 在Java Web开发领域,Struts2、Spring2和Hibernate3是三个非常重要的框架,它们分别负责Web层、业务逻辑层和服务持久化层的功能实现。为了更好地整合这三...

    struts2.1 + spring 2.5 + hibernate 3.2 增删改查

    总结来说,"struts2.1 + spring 2.5 + hibernate 3.2 增删改查"的例子涵盖了Web应用开发中的核心部分:前端请求处理(Struts2)、业务逻辑管理(Spring)和数据库操作(Hibernate)。这个例子为初学者提供了一个很好...

    jquery easyUI+struts2+spring+hibernate基于annotation实现的CRM

    【标题】:“jQuery EasyUI+Struts2+Spring+Hibernate基于注解实现的CRM系统” 在IT领域,CRM(Customer Relationship Management,客户关系管理)系统是企业用来优化与客户交互和管理的重要工具。本项目利用一系列...

    JavaEE多层架构Struts2+Spring3+Hibernate3+Ajax的整合

    ### JavaEE多层架构Struts2+Spring3+Hibernate3+Ajax的整合 #### 概述 随着软件开发技术的不断进步,构建可复用、易于扩展并经过良好测试的软件组件变得尤为重要。在此背景下,Struts、Spring 和 Hibernate 这三大...

    Struts2+Spring2.5+Hibernate3+annotation 整合程序

    在这个“Struts2+Spring2.5+Hibernate3+annotation”整合程序中,我们将深入探讨这三大框架如何协同工作,以及注解在其中起到的关键作用。 首先,Struts2作为MVC(模型-视图-控制器)框架,负责处理HTTP请求,提供...

    struts2+spring2.5+hibernate3.2 annotation配置完整eclipse项目,带数据库脚本

    Struts2、Spring2.5和Hibernate3.2是经典的Java Web开发框架组合,它们各自在应用程序的不同层面提供了强大的功能。这个"sshTest"项目是一个使用这三个框架的注解配置的完整Eclipse工程,同时也包含了数据库脚本,...

    java8+tomcat8+struts2.5+spring4.3+hibernate5.2框架搭建详细过程

    ### Java8 + Tomcat8 + Struts2.5 + Spring4.3 + Hibernate5.2 框架搭建详细过程 #### 一、环境配置与准备 在搭建一个基于Java8 + Tomcat8 + Struts2.5 + Spring4.3 + Hibernate5.2 的项目前,首先需要对开发环境...

    Struts2.3.28+spring4.1.6+hibernate4.3.8整合总结(注解)

    Struts2.3.28、Spring4.1.6和Hibernate4.3.8是三个经典的Java EE框架,它们的整合是企业级应用开发中常见的技术栈,通常被称为S2SH。在这个版本的整合中,注解的使用极大地简化了配置过程,使得开发更加高效。以下是...

    struts+spring+hibernate三大框架整合

    SSH三大框架,即Struts、Spring和Hibernate,是Java Web开发中的常用技术组合,它们各自负责不同的职责:Struts作为MVC模式中的Controller层,处理用户请求并转发到相应的业务逻辑;Spring则作为核心容器,负责依赖...

    struts1.3+spring2.5+hibernate3.3 组合开发 annotation实现

    Struts1.3、Spring2.5 和 Hibernate3.3 是经典的 Java Web 开发框架组合,它们在企业级应用中广泛使用。这个组合被称为“SSH”(Struts-Spring-Hibernate),它允许开发者构建可扩展且松耦合的后端系统。在本项目中...

    基于annotation的Struts2.1.8+Spring2.5.6+Hibernate3.3.2整合

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自在应用程序的不同层面发挥着重要作用。Struts2是用于处理MVC(Model-View-Controller)架构的框架,Spring是一个全面的后端应用程序框架,而...

    struts2.1.8 + spring2.5.6 + hibernate3.3.2整合

    在Java Web开发领域,Struts2、Spring以及Hibernate是三个非常重要的开源框架,它们各自在不同的方面发挥着重要作用:Struts2用于构建MVC架构的Web应用;Spring作为依赖注入容器,简化了Java应用中的对象管理;...

    MyEclipse8.6+Struts2.1+Spring3.0+Hibernate3.3环境搭建.doc

    【知识点详解】 ...这样的集成环境使得开发者可以方便地进行MVC架构的开发,同时利用Spring进行依赖注入和事务管理,以及Hibernate进行对象关系映射。这个过程对于理解Java Web应用的架构和开发流程至关重要。

    JQuery1.4.2+Struts2.1.8+JSON0.34+Spring2.5.6+Hibernate3.5+XFire1.2.6整合实例

    JQuery1.4.2+Struts2.1.8+JSON0.34+Spring2.5.6+Hibernate3.5+XFire1.2.6整合实例(已上传) 1、JSON0.34使用的是struts2附带的struts2-json-plugin-2.1.8.1.jar 2、db是mysql,名字为test,用户名root,密码空 3、...

    Struts1.3 + Hibernate3.3 + Spring3.0 Annotation整合

    Spring还提供了对其他框架的集成,如Struts和Hibernate,形成了所谓的“Spring生态系统”。 在整合这三个框架时,通常步骤如下: 1. **配置Struts1.3**:首先需要在web.xml中配置Struts的前端控制器(Action...

    struts2+hibernate+annotation+spring整合的jar包

    Struts2、Hibernate和Spring是Java开发中三大主流框架,它们的整合应用通常被称为SSH(Struts2-Spring-Hibernate)集成。这个压缩包包含了这三个框架的特定版本:Struts2.18、Hibernate3.3.2和Spring2.5.6,以及可能...

Global site tag (gtag.js) - Google Analytics