Ⅰ、和servelet API 解耦的方式:只能访问到有限的资源
(1)通过ActionContext的getXXX方法获取相关资源
例:
public class TestActionContext extends ActionSupport{
private static final long serialVersionUID = 1L;
@Override
public String execute() throws Exception {
ActionContext ac = ActionContext.getContext();
//获取session
Map<String, Object> session = ac.getSession();
session.put("sessionKey", "sessionValue");
//获取request
Map<String, Object> request = (Map<String, Object>) ac.get("request");
//获取application
Map<String, Object> application = ac.getApplication();
return "SUCCESS";
}
(2)通过继承XXXAware接口获取相关资源
例:
public class TestAware extends ActionSupport implements RequestAware,ApplicationAware,SessionAware{
private Map<String,Object> session;
private Map<String,Object> application;
private Map<String,Object> request;
//获取session
@Override
public void setSession(Map<String, Object> session) {
this.session = session;
}
//获取application
@Override
public void setApplication(Map<String, Object> application) {
this.application = application;
}
//获取request
@Override
public void setRequest(Map<String, Object> request) {
this.request = request;
}
@Override
public String execute() throws Exception {
// TODO 自动生成的方法存根
return super.execute();
}
}
如果类中有多个方法使用到web资源,一般使用(2)通过继承XXXAware接口获取相关资源
Ⅱ、和servelet API耦合的方式:可以访问到更多的资源和方法
(1)通过ServletActionContext的getXXX方法获取相关资源
例:
public class TestServltActionContext extends ActionSupport {
@Override
public String execute() throws Exception {
//获取request
HttpServletRequest request =ServletActionContext.getRequest();
//获取session
HttpSession session = ServletActionContext.getRequest().getSession();
return "SUCCESS";
}
}
(2)通过继承ServletXXXAware接口获取相关资源
例:
public class TestServletXXXAware extends ActionSupport implements ServletRequestAware{
private HttpServletRequest request;
@Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
}
一般推荐使用(2)通过继承ServletXXXAware接口获取相关资源