`

Maven + Spring + Hibernate + Struts2 整合第三部分

阅读更多
现在我们写一个简单的单元测试来测试一下我们的代码,看看是不是配置文件都配好了。在src/test/java下面建立UserDAOTest.java文件,代码如下:
package localhost.login.dao;

import java.util.List;

import junit.framework.Assert;
import junit.framework.TestCase;
import localhost.login.domain.User;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class UserDAOTest extends TestCase{
	private ApplicationContext context = null;
	
	private User user = null;
	
	private UserDAO userDAO = null;
	
	@Override
	protected void setUp() throws Exception {
		super.setUp();
		context = new ClassPathXmlApplicationContext("applicationContext.xml");
		userDAO = (UserDAO)context.getBean("userDAO");
	}
	
	@Override
	protected void tearDown() throws Exception {
		userDAO = null;
		user = null;
	}
	
	public void testAddUser(){
		user = new User();
		user.setName("username");
		user.setPassword("password");
		userDAO.addUser(user);
		Assert.assertEquals(1, user.getId());
		userDAO.addUser(user);
		Assert.assertEquals(1, user.getId());
		
		User userTwo = new User();
		userTwo.setName("username1");
		userTwo.setPassword("password");
		userDAO.addUser(userTwo);
		Assert.assertEquals(2, userTwo.getId());
		
	}
	
	public void testlistAll(){
		List<User> users = userDAO.listAll();
		Assert.assertEquals(users.size(), 2);
	}
}


现在我们建立一个简单的辅助类,来获得ApplicationContext, 将它放在localhost.login.util包下面:
package localhost.login.util;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class InitApplicationContext {
	
	private static ApplicationContext context = null;
	
	private InitApplicationContext(){
		
	}
	public static ApplicationContext getApplicationContext(){
		if(context == null){
			context = new ClassPathXmlApplicationContext("applicationContext.xml");
		}
		return context;
	}
}


现在我们建立用户登陆的action,struts2的action比较简单,请看下面代码:
package localhost.login.action;

import java.util.List;

import localhost.login.domain.User;
import localhost.login.service.UserService;
import localhost.login.util.InitApplicationContext;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.opensymphony.xwork2.ActionSupport;

public class UserLoginAction extends ActionSupport {
	private UserService userService;
	private User user;

	public UserLoginAction() {
		ApplicationContext context = InitApplicationContext.getApplicationContext();
		userService = (UserService) context.getBean("userService");
	}

	@Override
	public String execute() throws Exception {
		if (!isValid(user.getName())) {
			return INPUT;
		}
		if (!isValid(user.getPassword())) {
			return INPUT;
		}
		if(!userCheck(user)){
			return INPUT;
		}
		return SUCCESS;
	}

	public boolean isValid(String keyword) {
		return keyword != null && keyword != "";
	}

	public boolean userCheck(User user) {
		List<User> userList = userService.findUserByName(user.getName());
		if (userList == null || userList.size() < 1) {
			return false;
		}
		User checkUser = userList.get(0);
		if (user.getName().equals(checkUser.getName())
				&& user.getPassword().equals(checkUser.getPassword())) {
			return true;
		}
		addActionError("Username or password is wrong, please check!");
		return false;
	}

	public UserService getUserService() {
		return userService;
	}

	public void setUserService(UserService userService) {
		this.userService = userService;
	}

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}
}

struts2比struts1最大的优点就是使得单元测试比较容易,现在我们就建立一个简单的测试用例来测试我们刚建立的action
把它放到src/main/java包底下,代码如下:
package localhost.login.action;
import junit.framework.Assert;
import junit.framework.TestCase;
import localhost.login.domain.User;
import localhost.login.service.UserService;
import localhost.login.util.InitApplicationContext;

import org.springframework.context.ApplicationContext;

import com.opensymphony.xwork2.Action;


public class UserLoginActionTest extends TestCase{
	private User user;
	
	private UserService userService;
	
	private ApplicationContext context = null;
	
	private UserLoginAction loginAction = null;
	
	public void setUp(){
		context = InitApplicationContext.getApplicationContext();
		loginAction = new UserLoginAction();
		userService = (UserService)context.getBean("userService");
	}
	
	public void testUserLogin(){
		user = new User();
		user.setName("username");
		user.setPassword("password");
		try {
			loginAction.setUser(user);
			loginAction.setUserService(userService);
			Assert.assertEquals(Action.SUCCESS, loginAction.execute());
			user.setPassword("password1");
			System.out.println(loginAction.getActionErrors());
			Assert.assertEquals(Action.INPUT, loginAction.execute());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}


现在到我们配置web.xml的时候了,到目前为止,它现在还是空的。
我们加上struts2的过滤器和spring的监听器。请看下面代码:
<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
	<display-name>Common Login</display-name>
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispather.FilterDispatcher</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
</web-app>

分享到:
评论
1 楼 sunev_yu112112 2009-03-19  
哈哈 不错支持!!!!!!!!!!

相关推荐

    s2sh代码-maven+spring4+hibernate4+struts2-登录注册小demo

    s2sh代码-maven+spring4+hibernate4+struts2-登录注册的小demo(只是给讲了下如何使用该框架),参考博客:http://blog.csdn.net/lxfHaHaHa/article/details/79366330

    maven(springmvc+spring+hibernate)

    SSH整合指的是Spring、Struts和Hibernate这三大Java开源框架的集成应用。这三大框架分别负责控制层、视图层和持久层,它们的结合能够构建出功能强大的企业级Web应用程序。 Spring框架是整个SSH整合的核心,它提供了...

    Struts2+Spring3+Hibernate4+Maven+EasyUI+mysql 源代码整合入门

    Struts2+Spring3+Hibernate4+Maven+EasyUI+mysql +jar包 源代码 测试可运行 的 带mysql数据库 改自孙宇的实例 EasyUI 实现 日历 运行,请先注册 jar包在target\sshe-0.0.1-SNAPSHOT\WEB-INF\lib

    Struts2+Spring3+Hibernate4+Maven+EasyUI整合入门视频002

    在“Struts2+Spring3+Hibernate4+Maven+EasyUI整合入门视频002”中,可能涵盖了以下内容: 1. Maven项目配置:讲解如何创建Maven项目,配置POM.xml文件,引入所需的Struts2、Spring3、Hibernate4和EasyUI的依赖。 2...

    maven整合spring+hibernate+struts2

    本项目“maven整合spring+hibernate+struts2”就是一个典型的Java Web开发模式,它利用Maven作为项目管理工具,Spring作为核心框架,Hibernate作为持久层解决方案,Struts2作为表现层控制器。以下将详细阐述这些技术...

    Struts2+Spring3+Hibernate4+Maven+EasyUI

    Struts2+Spring3+Hibernate4+Maven+EasyUI 是一个常见的Java Web开发组合,它们各自扮演着关键的角色,构建了一个高效、模块化的应用程序架构。这个组合在企业级应用中广泛使用,尤其是在数据管理、业务逻辑处理和...

    Struts2+Spring3+Hibernate4+Maven+EasyUI整合视频教程源码

    Struts2、Spring3、Hibernate4、Maven和EasyUI是Java Web开发中常见的开源框架和技术,它们在构建高效、可维护的企业级应用中发挥着关键作用。本教程源码结合了这些技术,旨在帮助开发者理解和掌握它们的整合与应用...

    Struts2+Spring3+Hibernate4+Maven+EasyUI整合入门012

    Struts2、Spring3、Hibernate4、Maven和EasyUI是Java Web开发中常见的开源框架和技术,它们在构建高效、可维护的企业级应用程序方面发挥着关键作用。本篇将详细介绍这些技术及其整合入门的知识点。 **Struts2** 是...

    maven+spring3+struts2+hibernate4+mybatis3整合

    "maven+spring3+struts2+hibernate4+mybatis3整合"是一个常见的Java Web开发组合,它们各自扮演着不同的角色,协同工作以提供全面的功能。 首先,Maven是一个项目管理工具,它负责构建、依赖管理和项目信息管理。...

    用maven整合struts+spring+hibernate

    "用maven整合struts+spring+hibernate"这个主题,就是关于如何将这三大核心框架——Struts、Spring和Hibernate——集成到一个项目中的实践教程。Struts提供了MVC(Model-View-Controller)架构,Spring是全面的后端...

    Maven+Spring+SpringMVC+hibernate

    SSH(Struts、Spring、Hibernate)是Java Web开发中的经典框架组合,而在这个"Maven+Spring+SpringMVC+Hibernate"的项目中,SSH被替换为更现代化的Spring全家桶,其中Spring代替了Struts,SpringMVC作为Spring的Web ...

    maven+spring+springmvc+hibernate

    在IT行业中,SSH(Spring、Struts、Hibernate)是一个经典的Java Web开发框架组合,而这里的"Maven+Spring+SpringMVC+Hibernate"则是SSH的一种现代演变。Maven是项目管理和构建工具,Spring是全面的企业级应用框架,...

    maven+struts2+hibernate3+spring+eclipse项目

    该项目是一个经典的Java Web开发组合,使用了Maven作为构建工具,Struts2作为表现层框架,Hibernate3作为持久层框架,Spring3作为依赖注入和事务管理框架,且基于Eclipse IDE进行开发。以下是对这些技术栈的详细说明...

    Java+maven+spring MVC+Spring+Hibernate整合

    在这个整合项目中,"SSH"通常指的是Spring、Struts和Hibernate的组合,而这里用的是Spring MVC代替Struts,因为Spring MVC在现代Web开发中更为流行,提供了更灵活的路由和更强大的功能。 整合步骤大致如下: 1. **...

    Struts2+Spring3+Hibernate4+Maven+EasyUI+CXF 整合

    Struts2+Spring3+Hibernate4+Maven+EasyUI+CXF 是一个经典的Java Web开发框架集成,常用于构建高效、稳定的企业级应用。这个整合涵盖了前端展示、后端控制、持久化、依赖注入、项目管理和Web服务等多个层面,为...

    struts2.1+spring2.5+hibernate3.3整合之第一步(spring2.5+hibernate3.3)

    1. 配置环境:确保项目中引入了Struts2、Spring和Hibernate的相应库,这通常通过Maven或Gradle等构建工具完成。 2. 配置Spring:创建Spring的配置文件(如`applicationContext.xml`),定义Bean并设置其依赖。例如...

    Struts2+Spring3+Hibernate4+Maven+EasyUI整合入门视频

    Struts2+Spring3+Hibernate4+Maven+EasyUI整合入门视频,附件是百度云盘地址,永久有效。

    spring3+hibernate4+struts2+maven全注解整合

    "spring3+hibernate4+struts2+maven全注解整合"的主题意味着将这四个组件通过注解的方式进行集成,以构建一个高效且易于维护的Web应用。 Spring是企业级Java应用程序的核心框架,它提供了依赖注入(DI)和面向切面...

    Struts2+Spring3+Hibernate4+Maven+EasyUI整合入门视频006

    本视频教程"Struts2+Spring3+Hibernate4+Maven+EasyUI整合入门视频006"将帮助初学者理解这些技术的集成与应用。 首先,Struts2是一个基于MVC设计模式的Web框架,用于处理HTTP请求并提供强大的动作控制和拦截器机制...

Global site tag (gtag.js) - Google Analytics