获取作用域对象
第一种方式:利用ActionContext类(struts)的 方法来完成操作, 得到 Map
package com.yc.web.actions; import java.util.Map; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class Show1Action extends ActionSupport{ //用一组Map的键值对来存作用域对象(实际上是一组键值对) private Map<String,Object> request; private Map<String,Object> session; private Map<String, Object> application; public String execute(){ //取出当前action的容器 ActionContext ac = ActionContext.getContext(); request = (Map<String, Object>) ac.get("request"); session = ac.getSession(); application = ac.getApplication(); request.put("request", request); session.put("session", session); application.put("application", application); return SUCCESS; } }
第二种方式:利用了RequestAware,SessionAware, ApplicationAware接口来操作, 得到 Map
package com.yc.web.actions; import java.util.Map; import org.apache.struts2.interceptor.ApplicationAware; import org.apache.struts2.interceptor.RequestAware; import org.apache.struts2.interceptor.SessionAware; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; /** * 利用了RequestAware,SessionAware, ApplicationAware接口来操作, 得到 Map * @author dell */ public class Show1Action extends ActionSupport implements RequestAware,SessionAware ,ApplicationAware{ private static final long serialVersionUID = 1L; //用一组Map的键值对来存作用域对象 private Map<String,Object> request; private Map<String,Object> session; private Map<String, Object> application; public String execute(){ request.put("re", request); session.put("ss", session); application.put("app", application); return SUCCESS; } public void setApplication(Map<String, Object> arg0) { this.application = arg0; } public void setSession(Map<String, Object> arg0) { this.session = arg0; } public void setRequest(Map<String, Object> arg0) { this.request = arg0; } }
第三种方式:利用ServletActionContext类的方法来获取 HttpServletRequest, HttpSession, ServletContext
package com.yc.web.actions; import java.util.Map; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import org.apache.struts2.interceptor.ApplicationAware; import org.apache.struts2.interceptor.RequestAware; import org.apache.struts2.interceptor.SessionAware; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.sun.net.httpserver.HttpContext; public class Show1Action extends ActionSupport{ private static final long serialVersionUID = 1L; //J2EE 对象 HttpServletRequest request; HttpSession session; ServletContext application; //构造时,创建J2EE对象 public Show1Action(){ request = ServletActionContext.getRequest(); session = request.getSession(); application = session.getServletContext(); } public String execute(){ request.setAttribute("request", request); session.setAttribute("session", session); application.setAttribute("application", application); return SUCCESS; } }
第四种方式:利用 ServletRequestAware来注入 HttpServletRequest对象
package com.yc.web.actions; import java.util.Map; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.struts2.interceptor.ApplicationAware; import org.apache.struts2.interceptor.RequestAware; import org.apache.struts2.interceptor.ServletRequestAware; import org.apache.struts2.interceptor.SessionAware; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; /** * 利用 ServletRequestAware来注入 HttpServletRequest对象 * @author dell */ public class Show1Action extends ActionSupport implements ServletRequestAware{ private static final long serialVersionUID = 1L; //J2EE对象 HttpServletRequest request; HttpSession session; ServletContext application; public String execute(){ request.setAttribute("re", request); session.setAttribute("ss", session); application.setAttribute("app", application); return SUCCESS; } public void setServletRequest(HttpServletRequest arg0) { this.request = arg0; session = request.getSession(); application = session.getServletContext(); } }