spring3.0+struts2+hibernate3整个环境的搭建和基于junit4的spring测试框架
基本:导入ssh的相关包
第一步:hibernate的搭建
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="dialect">
org.hibernate.dialect.Oracle9Dialect
</property>
<property name="connection.url">
jdbc:oracle:thin:@localhost:1521:ORCL
</property>
<property name="connection.username">scott</property>
<property name="connection.password">****</property>
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
<property name="myeclipse.connection.profile">oracle</property>
<property name="hbm2ddl.auto">update</property>
<property name="show_sql">true</property>
<mapping class="cn.dk.po.user.TUser" />
<mapping class="cn.dk.po.book.TBook" />
<mapping class="cn.dk.po.userbook.TUserBook" />
</session-factory>
</hibernate-configuration>
hibernate的创建和事务管理是由spring操作的
第二步:spring的搭建,配置文件如下:
设置好配置文件后,使用@Repository、@Service、@Controller 和 @Component 将类标识为 Bean
具体使用情况请看我空间另一篇博客,写的很全很仔细:http://www.blogjava.net/ashutc/archive/2011/04/14/348270.html
做好上述事情之后,让我们来搭一个junit4的spring测试框架:(必须导入spring-test这个包)
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;
/**
* @ClassName AbstractTestCase
* @Description:
* @author zhengdingke 1149427735@qq.com
* @date 2013-12-18
*/
@RunWith(SpringJUnit4ClassRunner.class)//配置spring测试环境
@ContextConfiguration(locations={"classpath:applicationContext.xml"})//指明spring上下文的位置
@Transactional//事务控制
@TransactionConfiguration(transactionManager="txManager",defaultRollback=true)//事务的配置,默认数据库回滚
public abstract class AbstractTestCase {
}
如果要进行单元测试的话,就继承上述抽象类:
import javax.annotation.Resource;
import org.junit.Test;
import cn.dk.po.book.TBook;
import cn.dk.service.book.BookService;
import junit.framework.Assert;
public class TestBook extends AbstractTestCase {
@Resource
public BookService bookService;
@Test//hibernate的测试
public void testSave(){
bookService.save(new TBook("dingke113","0","woai9"))
}
@Test//spring的测试
public void testinitalize(){
Assert.assertNotNull("bookService为空", bookService);
}
}
第三步:struts2的搭建
- web.xml的设置;
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<context-param>//上下文的配置信息,即spring的配置信息
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>//spring的web上下文的监听
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>//struts的配置
<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>
<filter>//格式配置
<filter-name>encoding</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>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>//主页
<welcome-file>/index.jsp</welcome-file>
</welcome-file-list>
</web-app> - struts2的配置文件,有别于spring和hibernate,前者采用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.ui.theme" value="simple" />
<constant name="struts.objectFactory" value="spring" />//Struts2的action由Spring来负责进行实例化
<constant name="struts.il8n.encoding" value="UTF-8" />
<package name="icss" namespace="/User" extends="struts-default">
<action name="validate" class="userAction" method="validate">
</action>
<!-- <action name="login" class="userAction" >
<result>/WEB-INF/jsp/main.jsp</result>
</action> -->
</package>
<package name="icss2" namespace="/Book" extends="struts-default">
<action name="main" class="bookAction">
<result>/WEB-INF/jsp/main.jsp</result>
</action>
</package>
<package name="icss3" namespace="/UserBook" extends="struts-default">
<action name="borrow" class="userBookAction" method="borrow">
</action>
<action name="lend" class="userBookAction" method="lend">
</action>
</package>
</struts>