Maven4MyEclipse 搭建ssh2+extjs项目(4)struts2.3.4+hibernate4.2.0+spring3.1.2

1编辑pom.xml

   1.1加入第3方依赖包

<dependencies>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.0.1</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.6.8.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.14</version>
		</dependency>
		<dependency>
			<groupId>javassist</groupId>
			<artifactId>javassist</artifactId>
			<version>3.9.0</version>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.0.5</version>
		</dependency>
		<dependency>
			<groupId>cglib</groupId>
			<artifactId>cglib</artifactId>
			<version>2.2.2</version>
		</dependency>

     

1.2 加入struts2相关包

<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-spring-plugin</artifactId>
			<version>2.3.4</version>
		</dependency>
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-core</artifactId>
			<version>2.3.4</version>
		</dependency>


1.3加入hibernate相关包

<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-ehcache</artifactId>
			<version>4.2.0.Final</version>
		</dependency>
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-c3p0</artifactId>
			<version>4.2.0.Final</version>
		</dependency>
		<dependency>
			<groupId>org.hibernate.common</groupId>
			<artifactId>hibernate-commons-annotations</artifactId>
			<version>4.0.1.Final</version>
		</dependency>


1.4加入spring相关包

<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>3.1.2.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>3.1.2.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
			<version>3.1.2.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>3.1.2.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-asm</artifactId>
			<version>3.1.2.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>3.1.2.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>3.1.2.RELEASE</version>
		</dependency>


2.编辑web.xml

	<filter>
		<filter-name>encodingFilter</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>
		<filter-name>hibernateOpenSessionInViewFilter</filter-name>
		<filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
	</filter>
  <filter>
  	<filter-name>struts2</filter-name>
  	<filter-class>
  		org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  	</filter-class>
  </filter>
  
  	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>hibernateOpenSessionInViewFilter</filter-name>
		<url-pattern>*.action</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>*.action</url-pattern>
	</filter-mapping>
  
  <context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext.xml</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<listener>
		<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
	</listener>
(编码,struts2过滤器,spring监听器,防止内存泄露过滤器,OpenSessionInViewFilter)


3.编辑application.xml

<!-- 使用annotation 自动注册bean,并保证@Required,@Autowired的属性被注入 -->
	<context:component-scan base-package="com.jjee" />

	<!-- DataSource 详细参数可以参考个人知识管理的C3P0的详细配置说明详解 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
		destroy-method="close">
		<property name="driverClass" value="com.mysql.jdbc.Driver" />
		<property name="jdbcUrl"
			value="jdbc:mysql://127.0.0.1:3306/jjee?characterEncoding=utf-8" />
		<property name="user" value="root" />
		<property name="password" value="" />
		<property name="minPoolSize" value="10" />
		<property name="initialPoolSize" value="10" />
		<property name="maxPoolSize" value="100" />
		<property name="maxIdleTime" value="1800" />
		<property name="maxStatements" value="1000" />
		<property name="idleConnectionTestPeriod" value="1800" />
	</bean>

	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="annotatedClasses">
			<list>
                        <value>com.jjee.entity.User</value>
			</list>
		</property>

		<!-- 详解见pkm java->hibername->Hibernate properties详解 -->
		<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>
			</props>
		</property>
	</bean>

	<!-- 事务管理器配置,单数据源事务 -->
	<bean id="transactionManager"
		class="org.springframework.orm.hibernate4.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

	<tx:advice id="txAdvice">
		<tx:attributes>
			<tx:method name="get*" read-only="true" />
			<tx:method name="find*" read-only="true" />
			<tx:method name="query*" read-only="true" />
			<tx:method name="is*" read-only="true" />
			<tx:method name="*" propagation="REQUIRED" rollback-for="Exception" />
		</tx:attributes>
	</tx:advice>

	<aop:config proxy-target-class="true">
		<aop:advisor pointcut="execution(* com.jjee.service..*Service.*(..))"
			advice-ref="txAdvice"></aop:advisor>
	</aop:config>
*component-scan包扫描    *dataSource数据源   *sessionFactory    *transactionManager事务管理  *tx:advice  aop方式配置事务处理


4.配置struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	<constant name="struts.devMode" value="true" />
	<package name="basicstruts2" extends="struts-default">
		<action name="index" class="com.jjee.web.Action_">
			<result name="success">/success.jsp</result>
			<result name="error">/error.jsp</result>
		</action>
	</package>
</struts>    
顺便配置要测试的action




5.测试
5.1.保存数据
分3层的包

Maven4MyEclipse 搭建ssh2+extjs项目(4)struts2.3.4+hibernate4.2.0+spring3.1.2_第1张图片



Action_.java

package com.jjee.web;


import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;


import com.jjee.service.UserService;
import com.opensymphony.xwork2.ActionSupport;


public class Action_ extends ActionSupport {
	private static final Logger logger = Logger.getLogger(Action_.class);
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.opensymphony.xwork2.ActionSupport#execute()
	 */


	@Autowired
	protected UserService userService;


	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub\
		try {
			if (userService.save()) {
				return "success";
			}
		} catch (Exception e) {
			return "error";
		}
		return "success";
	}
}


UserService.java

package com.jjee.service;


import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


import com.jjee.dao.BaseDao;
import com.jjee.entity.User;
import com.jjee.web.Action_;


@Service
public class UserService {


	private static final Logger logger = Logger.getLogger(Action_.class);


	@Autowired
	protected BaseDao baseDao;


	public boolean save() throws Exception {


		// TODO Auto-generated method stub
		logger.debug("debug===============");
		User user = new User();
		user.setName("这是用户名11111111111111");
		baseDao.save(user);
		return true;
	}
}


BaseDao.java

package com.jjee.dao;

import java.io.Serializable;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Example;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

/**
 * 
 * @ClassName:BaseDao
 * @Description:dao 基类,包括增删改查
 * @author:gaoFeng
 * @date:2013-2-27 下午2:31:42
 */
@Repository
public class BaseDao extends ReadDao implements Serializable {

	@Autowired
	private SessionFactory sessionFactory;

	public Session getSession() {
		return sessionFactory.getCurrentSession();
	}
	

	public <T> void save(T t) throws Exception {
		getSession().save(t);
		//throw new Exception("==================asdf");
	}
只贴上来保存数据的代码


User.java

package com.jjee.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * User entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "user", catalog = "jjee")
public class User implements java.io.Serializable {

	// Fields

	private Integer id;
	private String name;

	// Constructors

	/** default constructor */
	public User() {
	}

	/** full constructor */
	public User(String name) {
		this.name = name;
	}

	// Property accessors
	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "id", unique = true, nullable = false)
	public Integer getId() {
		return this.id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	@Column(name = "name", length = 10)
	public String getName() {
		return this.name;
	}

	public void setName(String name) {
		this.name = name;
	}

}
部署测试一下
Maven4MyEclipse 搭建ssh2+extjs项目(4)struts2.3.4+hibernate4.2.0+spring3.1.2_第2张图片

查看数据表
Maven4MyEclipse 搭建ssh2+extjs项目(4)struts2.3.4+hibernate4.2.0+spring3.1.2_第3张图片



5.2测试事务回滚

加上抛异常代码

Maven4MyEclipse 搭建ssh2+extjs项目(4)struts2.3.4+hibernate4.2.0+spring3.1.2_第4张图片


页面测试

Maven4MyEclipse 搭建ssh2+extjs项目(4)struts2.3.4+hibernate4.2.0+spring3.1.2_第5张图片

看数据表

Maven4MyEclipse 搭建ssh2+extjs项目(4)struts2.3.4+hibernate4.2.0+spring3.1.2_第6张图片


看后台显示

Maven4MyEclipse 搭建ssh2+extjs项目(4)struts2.3.4+hibernate4.2.0+spring3.1.2_第7张图片


ok测试成功


项目代码链接http://download.csdn.net/detail/zsstudio/5259903










你可能感兴趣的:(Maven4MyEclipse 搭建ssh2+extjs项目(4)struts2.3.4+hibernate4.2.0+spring3.1.2)