摘抄自:https://blog.csdn.net/alan_liuyue/article/details/71123416 只为自己方便记忆!
方法(1):使用Struts2 Aware拦截器(耦合):
public class MyAction extends ActionSupport implements ServletResponseAware { private javax.servlet.http.HttpServletResponse response; // 获得HttpServletResponse对象 @Override public void setServletResponse(HttpServletResponse response) { this.response = response; } public String execute() throws Exception { response.getWriter().write("实现ServletResponseAware接口"); } }
方法(2):使用RequestAware拦截器(解耦):
public class FirstAction extends ActionSupport implements RequestAware { private Map request; private HttpServletResponse response; public void setRequest(Map request) { this.request = request; } public String execute() throws Exception { java.util.Set<String> keys = request.keySet(); // 枚举所有的key值。实际上只有一个key:struts.valueStack for (String key : keys) System.out.println(key); // 获得OgnlValueStack 对象 OgnlValueStack stack = (OgnlValueStack) request .get("struts.valueStack"); // 获得HttpServletResponse对象 response = (HttpServletResponse) stack.getContext().get( StrutsStatics.HTTP_RESPONSE); response.getWriter().write("实现RequestAware 接口"); } }
方法(3):使用ActionContext类
ActionContext ctx = ActionContext.getContext(); HttpServletRequest request =(HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST); HttpServletResponse response = (HttpServletResponse) ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_RESPONSE);
方法(4):使用ServletActionContext类
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();