1. ActionContext生命周期:
每次请求时都会创建一个与请求对应的ActionContext对象,请求处理完ActionContext销毁。
2. 如何获得ActionContext:
struts2设计的是,将ActionContext对象创建好之后,将ActionContext与当前的线程绑定,我们要获得ActionContext只需要从ThreadLocal中获取即可。
3. 三种访问方式:
3.1:通过ActionContext
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class ActionContextDemo extends ActionSupport {
public String execute() {
//request域=> map (struts2并不推荐使用原生request域)
Map<String, Object> requestmap = (Map<String, Object>) ActionContext.getContext().get("request");
//推荐使用
ActionContext.getContext().put("name", "request值");
//session域 => map
Map<String, Object> sessionScope = ActionContext.getContext().getSession();
sessionScope.put("name", "session值");
//application域=>map
Map<String, Object> applicationScope = ActionContext.getContext().getApplication();
applicationScope.put("name", "application值");
return "success";
}
}
3.2:通过ServletActionContext(并不常用)
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class YuanShengActionDemo extends ActionSupport {
//并不推荐
public String execute() {
//原生request
HttpServletRequest request = ServletActionContext.getRequest();
//原生session
HttpSession session = request.getSession();
//原生response
HttpServletResponse response = ServletActionContext.getResponse();
//原生servletContext
ServletContext servletContext = ServletActionContext.getServletContext();
return "success";
}
}
3.3:通过实现接口方式
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.opensymphony.xwork2.ActionSupport;
public class ImplActionDemo extends ActionSupport implements ServletRequestAware {
private HttpServletRequest request;
public String execute() throws Exception {
System.out.println("原生request:"+request);
return "success";
}
@Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
}
本文深入探讨了Struts2框架中ActionContext的生命周期、获取方法及三种访问方式,包括通过ActionContext、ServletActionContext及实现接口访问上下文对象。

3024

被折叠的 条评论
为什么被折叠?



