您的位置:首页 > 其它

8.ActionContext类与Servlet API解耦的访问方式

2013-02-13 17:54 239 查看
为了避免与Servlet API耦合在一起,方便Action类做单元测试,
Struts2对HttpServletRequest、HttpSession和ServletContext进行了封装,
构造了三个Map对象来替代这三种对象,在Action中,
直接使用HttpServletRequest、HttpSession、ServletContext对应的Map对象来保存和读取数据。
要获得这三个Map对象,可以使用com.opensymphony.xwork2.ActionContext类

* . ActionContext - 请求上下文 。- 就是struts2封装的request.
包含了request,session,application
上面这三个都是Map.

* . ServletActionContext - 包含servletApi的请求上下文。包含了request,response,session,applicatoin都是servlet的类

示例::
public class MyAction extends ActionSupport implements ModelDriven<User>{
@Override
public String execute() throws Exception {
System.err.println("这是基本的实现"+this.user);
//获取request
ActionContext req = ActionContext.getContext(); //-----------------------获取request
req.put("addr","中国北京");//放request

//获取session
Map<String,Object> session = req.getSession();
session.put("addr", "中国上海");
//获取application
Map<String,Object> app = req.getApplication();
app.put("age",90);

//以下通过ServletActionContext对象,获取原生的ServletAPI

HttpServletRequest requ = ServletActionContext.getRequest();
requ.setAttribute("email","aaa");

requ.getSession().setAttribute("height", "180");

return "success";
}
private User user = new User();
public User getModel() {
return user;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: