1,项目中用的Maven做项目管理工具,在pom.xml中的必须配置如下:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-junit-plugin</artifactId>
<version>2.1.8.1</version>
<scope>test</scope>
</dependency>
这个是使用struts2-junit-plugin插件中必须的,当然我说的是ssh2的项目,肯定也少不了struts2-spring-plugin.jar的依赖了,如下:
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>2.1.8.1</version>
</dependency>
2,struts.xml中的配置(简单的贴一下):
<action name="person_*" class="personAction" method="{1}">
<result name="adminLoginSuccess">/admin_index.jsp</result>
<result name="personLoginSuccess">/go_person_index.jsp</result>
。。。。
</action>
3,application-action.xml中的配置如下:
<bean id="personAction" class="com.woyo.action.PersonAction">
<property name="personBo" ref="personBo"></property>
<property name="adminBo" ref="adminBo"></property>
<property name="groupBo" ref="groupBo"></property>
。。。配置你的bo层
</bean>
4,在PersonAction中:
public class PersonAction extends BaseAction implements ModelDriven<Person>,Preparable{
private static final long serialVersionUID = 1L;
private PersonBO personBo;
private AdminBO adminBo;
private GroupBO groupBo;
。。。其他的就不写了,还有getter和setter
public String login(){
if(type==1){
Person p =personBo.findByName(name);
if(p!=null){
if(this.password.equals(p.getPassword())){
ServletActionContext.getRequest().getSession().setAttribute("loginPerson", p);
//ActionContext.getContext().getSession().put("loginPerson", p);
return "personLoginSuccess";
}
}else{
this.setMessage("用户名和密码不正确!");
}
}else{
Admin admin=adminBo.findByName(name);
if(admin!=null){
if(this.password.equals(admin.getPassword())){
ServletActionContext.getRequest().getSession().setAttribute("loginAdmin", admin);
//context.getContext().getSession().put("loginAdmin", admin);
return "adminLoginSuccess";
}
}else{
this.setMessage("管理员用户名或者密码不正确!");
}
}
return "login";
}
什么是PersonAction的代码,你也看到了,我有个注释的一行,//ActionContext.getContext().getSession().put("loginPerson", p);就是它
单元测试的时候这个ActionContext.getContext().getSession()老返回为null
就改用这个ServletActionContext.getRequest().getSession().setAttribute("loginPerson", p)了。
5,在PersonActionTest中:
public class PersonActionTest extends StrutsSpringTestCase {
private PersonAction personAction;
private PersonBO personBo;
private AdminBO adminBo;
private GroupBO groupBo;
private HttpSession session;
/**
* 默认查找classpath下的applicationContext.xml文件
* 下面的这个重写方法可以不写
*/
protected String getContextLocations() {
return "file:src/main/resources/applicationContext.xml";
}
public void testLogin() {
//从applicationContext中取得实体对象
personBo =(PersonBO)applicationContext.getBean("personBo");
adminBo=(AdminBO)applicationContext.getBean("adminBo");
groupBo=(GroupBO)applicationContext.getBean("groupBo");
//从struts2的配置文件中取得的实例
ActionProxy proxy = getActionProxy("/person/person_login.action");
personAction = (PersonAction) proxy.getAction();
int type=2;
if(type==1){
//测试person的登陆
personAction.setName("bill");
personAction.setPassword("pass");
personAction.setType(type);
String result=personAction.login();
PersonActionTest.assertEquals("personLoginSuccess", result);
}else{
//测试admin的登陆
personAction.setType(type);
personAction.setName("admin");
personAction.setPassword("pass");
String result=personAction.login();
PersonActionTest.assertEquals("adminLoginSuccess", result);
}
}
ssh2 action测试
最新推荐文章于 2017-11-04 21:15:23 发布