现在我们写一个简单的单元测试来测试一下我们的代码,看看是不是配置文件都配好了。在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>
分享到:
相关推荐
Struts2+Spring3+Hibernate4+Maven+EasyUI整合视频教程源码
s2sh代码-maven+spring4+hibernate4+struts2-登录注册的小demo(只是给讲了下如何使用该框架),参考博客:http://blog.csdn.net/lxfHaHaHa/article/details/79366330
Struts2+Spring3+Hibernate4+Maven+EasyUI整合入门视频002,
Struts2+Spring3+Hibernate4+Maven+EasyUI整合入门视频012,
maven整合spring+hibernate+struts2
Struts2+Spring3+Hibernate4+Maven+EasyUI 实现更删改查等功能,用到很多easyUI的知识
Struts2+Spring3+Hibernate4+Maven+EasyUI+mysql +jar包 源代码 测试可运行 的 带mysql数据库 改自孙宇的实例 EasyUI 实现 日历 运行,请先注册 jar包在target\sshe-0.0.1-SNAPSHOT\WEB-INF\lib
项目是由maven+struts2+hibernate3+spring+eclipse完成的,压缩包里还有数据库mysql脚本,希望能对你有帮助
Struts2+Spring3+Hibernate4+Maven+EasyUI整合入门视频007,Struts2+Spring3+Hibernate4+Maven+EasyUI整合入门视频006
struts2+spring3+hibernate4+mybatis3整合
Struts2+Spring3+Hibernate4+Maven+EasyUI整合入门视频008,
Struts2+Spring3+Hibernate4+Maven+EasyUI+CXF 整合,包含对项目介绍的DOC文档
Maven项目ssh Struts2+hibernate+Spring+maven框架.zip
Struts2+Spring3+Hibernate4+Maven+EasyUI整合(源代码)
Struts2+Spring3+Hibernate4+Maven+EasyUI整合入门视频009
Struts2+Spring3+Hibernate4+Maven+EasyUI整合入门视频017
Struts2+Spring3+Hibernate4+Maven+EasyUI整合入门视频006
Struts2+Spring3+Hibernate4+Maven+EasyUI整合入门视频016
Struts2+Spring3+Hibernate4+Maven+EasyUI整合入门视频014
Struts2+Spring3+Hibernate4+Maven+EasyUI整合入门视频013