7.Struts2_通过 ActionContext 获取 WEB 资源
为了避免与servletAPI耦合在一起,方便Action做单元测试。Struts2对 HttpServletRequest,httpsession
和servletContext进行了封装,构造了3个Map对象来代替这3个对象,在Action中可以直接使用HttpServletRequest,HttpServletSession,ServletContext
对应的Map 对象来保存和读取数据
/*
* Struts2通过ActionContext获取WEB资源
*/
import java.util.Map;
import org.omg.CORBA.Object;
import com.opensymphony.xwork2.ActionContext;
public class TestActionContextAction {
public String execute(){
// 0.获取ActionContext对象
// ActionContext是Action的上下文对象,可以从中获取到当下Action需要的一切信息
ActionConContext actionContext=ActionContext.getContext();
// 1.获取application 对应的Map,并向其中添加一个属性
// 通过调用ActionContext对象的getApplication()方法来获取application对象的Map对象
Map<String,Object> applicationMap=actionContext.getApplication();
// 设置属性
applicationMap.put("applicationkey", "applicationvalue");
// 获取属性
Object date=applicationMap.get("date");
System.out.println("date:"+date);
// 2.session
Map<String,Object> sessionMap=actionContext.getSession();
sessionMap.put("sessionkey", "sessionvalue");
// 3.request*
// ActionContext中并没有提供getRequest方法来获取request对应的Map
// 需要手工调用get()方法,传人request字符串来取值
Map<Strinng,Object> requestMap=(Map<String,Object>)actonContext.get("request");
request.put("requstkey","requestvalue");
// 4.获取请求参数对应的Map,并获取指定的参数值
// 键:请求参数的名字,值:请求参数的值对应的字符串数组
// 注意:1.getParameters的返回值为在Map<String.object>,而不是Map<String,string[]>
// 2.parameters这个Map只能读,不能写入数据,如果写,写入不出错,但不起作用!
Map<Strinng,Object> parameters=actionContext.getParameters();
System.out.println(((String[])parameters.get("name"))[0]);
}
}
浙公网安备 33010602011771号