现在我们写一个简单的单元测试来测试一下我们的代码,看看是不是配置文件都配好了。在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>
分享到:
相关推荐
s2sh代码-maven+spring4+hibernate4+struts2-登录注册的小demo(只是给讲了下如何使用该框架),参考博客:http://blog.csdn.net/lxfHaHaHa/article/details/79366330
SSH整合指的是Spring、Struts和Hibernate这三大Java开源框架的集成应用。这三大框架分别负责控制层、视图层和持久层,它们的结合能够构建出功能强大的企业级Web应用程序。 Spring框架是整个SSH整合的核心,它提供了...
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”中,可能涵盖了以下内容: 1. Maven项目配置:讲解如何创建Maven项目,配置POM.xml文件,引入所需的Struts2、Spring3、Hibernate4和EasyUI的依赖。 2...
本项目“maven整合spring+hibernate+struts2”就是一个典型的Java Web开发模式,它利用Maven作为项目管理工具,Spring作为核心框架,Hibernate作为持久层解决方案,Struts2作为表现层控制器。以下将详细阐述这些技术...
Struts2+Spring3+Hibernate4+Maven+EasyUI 是一个常见的Java Web开发组合,它们各自扮演着关键的角色,构建了一个高效、模块化的应用程序架构。这个组合在企业级应用中广泛使用,尤其是在数据管理、业务逻辑处理和...
Struts2、Spring3、Hibernate4、Maven和EasyUI是Java Web开发中常见的开源框架和技术,它们在构建高效、可维护的企业级应用中发挥着关键作用。本教程源码结合了这些技术,旨在帮助开发者理解和掌握它们的整合与应用...
Struts2、Spring3、Hibernate4、Maven和EasyUI是Java Web开发中常见的开源框架和技术,它们在构建高效、可维护的企业级应用程序方面发挥着关键作用。本篇将详细介绍这些技术及其整合入门的知识点。 **Struts2** 是...
"maven+spring3+struts2+hibernate4+mybatis3整合"是一个常见的Java Web开发组合,它们各自扮演着不同的角色,协同工作以提供全面的功能。 首先,Maven是一个项目管理工具,它负责构建、依赖管理和项目信息管理。...
"用maven整合struts+spring+hibernate"这个主题,就是关于如何将这三大核心框架——Struts、Spring和Hibernate——集成到一个项目中的实践教程。Struts提供了MVC(Model-View-Controller)架构,Spring是全面的后端...
SSH(Struts、Spring、Hibernate)是Java Web开发中的经典框架组合,而在这个"Maven+Spring+SpringMVC+Hibernate"的项目中,SSH被替换为更现代化的Spring全家桶,其中Spring代替了Struts,SpringMVC作为Spring的Web ...
在IT行业中,SSH(Spring、Struts、Hibernate)是一个经典的Java Web开发框架组合,而这里的"Maven+Spring+SpringMVC+Hibernate"则是SSH的一种现代演变。Maven是项目管理和构建工具,Spring是全面的企业级应用框架,...
该项目是一个经典的Java Web开发组合,使用了Maven作为构建工具,Struts2作为表现层框架,Hibernate3作为持久层框架,Spring3作为依赖注入和事务管理框架,且基于Eclipse IDE进行开发。以下是对这些技术栈的详细说明...
在这个整合项目中,"SSH"通常指的是Spring、Struts和Hibernate的组合,而这里用的是Spring MVC代替Struts,因为Spring MVC在现代Web开发中更为流行,提供了更灵活的路由和更强大的功能。 整合步骤大致如下: 1. **...
Struts2+Spring3+Hibernate4+Maven+EasyUI+CXF 是一个经典的Java Web开发框架集成,常用于构建高效、稳定的企业级应用。这个整合涵盖了前端展示、后端控制、持久化、依赖注入、项目管理和Web服务等多个层面,为...
1. 配置环境:确保项目中引入了Struts2、Spring和Hibernate的相应库,这通常通过Maven或Gradle等构建工具完成。 2. 配置Spring:创建Spring的配置文件(如`applicationContext.xml`),定义Bean并设置其依赖。例如...
Struts2+Spring3+Hibernate4+Maven+EasyUI整合入门视频,附件是百度云盘地址,永久有效。
"spring3+hibernate4+struts2+maven全注解整合"的主题意味着将这四个组件通过注解的方式进行集成,以构建一个高效且易于维护的Web应用。 Spring是企业级Java应用程序的核心框架,它提供了依赖注入(DI)和面向切面...
本视频教程"Struts2+Spring3+Hibernate4+Maven+EasyUI整合入门视频006"将帮助初学者理解这些技术的集成与应用。 首先,Struts2是一个基于MVC设计模式的Web框架,用于处理HTTP请求并提供强大的动作控制和拦截器机制...