您的位置:首页 > 编程语言 > Java开发

struts2 (二)单元测试/通过耦合和非耦合的方式获取和设置值/返回值类型/异常映射

2016-01-17 14:04 447 查看
单元测试的类必须继承StrutsTestCase

package com.etop.struts2.test;

import org.apache.struts2.StrutsTestCase;
import org.junit.Test;

import com.opensymphony.xwork2.ActionProxy;
/**
* 单元测试的类必须继承StrutsTestCase
* 测试的action 必须在struts.xml文件预先配置好
* @author teacher
*
*/
public class TestStruts2 extends StrutsTestCase{
@Test
public void testStruts2(){
//通过路径获取action的代理
ActionProxy proxy=getActionProxy("/test.action");
//获取实际的action
TestAction testAction=(TestAction)proxy.getAction();
//测试action对应的类对应的方法
testAction.execute();
}
}


通过耦合和非耦合的方式获取和设置值

package com.etop.struts2.param;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ParameterAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.ServletRequestAware;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

/**
* 装配模式(非耦合模式):在action中实现某一些接口  然后实现接口些方法,
* struts2判断action是否实现了某一些接口接口 然后自动调用接口的方法
* 并且传入需要的参数
* ParameterAware自动填充参数 类型为 Map<String, String[]> parameters
* ServletRequestAware, ServletActionContext.getRequest()(耦合)
*/
public class ParamAction extends ActionSupport implements ParameterAware,RequestAware,ServletRequestAware{

public String execute(){
//耦合方式获取原生态request对象
HttpServletRequest request=ServletActionContext.getRequest();
String connection=request.getHeader("Connection");
String connection1=crequest.getHeader("Connection");
//每一个对应的action 都有一个ActionContext
//通过ActionContext对象获取参数集合(非耦合模式)
Map map=ActionContext.getContext().getParameters();
//获取请求作用的值 可以将值设置到非耦合的map中 并且可以使用el表达式获取
Map obj=(Map)ActionContext.getContext().get("request");
obj.put("test1", "test1");
return "success";

}
private Map<String, String[]> parameters;
private Map<String, Object> requestParam;
HttpServletRequest crequest;

public void setParameters(Map<String, String[]> parameters) {
this.parameters=parameters;
}

public void setRequest(Map<String, Object> requestParam) {
// TODO Auto-generated method stub
this.requestParam=requestParam;
}

public void setServletRequest(HttpServletRequest request) {
// TODO Auto-generated method stub
this.crequest=request;
}

}


返回值类型

result用于控制action的跳转  name为action返回的名称
type常用的值 : chain,dispatcher,redirect,redirectAction,stream
type 是转发的类型  dispatcher:请求转发,
chain 请求转发 跳转action
redirect请求重定向
redirectAction 请求重定向到action
stream 文件下载


异常映射

<package name="ognlPakage" namespace="/" extends="struts-default">
<!-- 全部的result 作用域当前包下的所有action -->
<global-results>
<result name="error">/ognl/error.jsp</result>
</global-results>
<!-- 全局异常映射 到包下的所有的action出现 exception配置的异常时 会自动跳转到全局定义的result
如果需要所有的action都需要进行异常映射  需要建立一个公共的package 其他的package集成定义异常映射的package
-->
<global-exception-mappings>
<exception-mapping result="error" exception="java.lang.Exception"></exception-mapping>
</global-exception-mappings>
<action name="ognl" class="com.etop.struts2.ognl.OgnlAction"  >
<result name="success">/ognl/ognl.jsp</result>
</action>
</package>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: