struts2 Action中获取request, response,Session对象的方法
非IoC方式
要获得上述对象,关键Struts 2.0中com.opensymphony.xwork2.ActionContext类。我们可以通过它的静态方法getContext()获取当前 Action的上下文对象。 另外,org.apache.struts2.ServletActionContext作为辅助类(Helper Class),可以帮助您快捷地获得这几个对象。
<pre name="code" name="code">package com.visit.frame.test;import java.util.Map;import javax.servlet.ServletRequest;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.apache.struts2.*;import org.apache.struts2.dispatcher.*;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;public class HelloAction extends ActionSupport{private String leaveMessage;public String execute(){this.setLeaveMessage("here me");///我们平时用的,这个很好理解HttpServletRequest request = ServletActionContext.getRequest ();//HttpServletResponse response=ServletActionContext.getResponse();HttpSession session=ServletActionContext.getRequest().getSession();///////通过ActionContext获得 ActionContext ac = ActionContext.getContext(); //request HttpServletRequest request2 = (HttpServletRequest)ac.get(ServletActionContext.HTTP_REQUEST); //response// HttpServletResponse response2 = (HttpServletResponse)ac.get(ServletActionContext.HTTP_RESPONSE); //session Map session2= (Map) ac.get(ServletActionContext.SESSION); Map session3=ac.getContext().getSession();//同上 Map session4=(Map) ac.get(ActionContext.SESSION); //session对象被封装成Map,我们对Map操作就可以 Map session5=(Map)ac.getSession(); Map session6=ServletActionContext.getContext().getSession();// request.setAttribute("request", "request0"); session.setAttribute("session", "session0"); request2.setAttribute("request2", "request2"); session2.put("session2", "session2"); session3.put("session3", "session3"); session4.put("session4", "session4"); session5.put("session5", "session5"); session6.put("session6", "session6"); return SUCCESS;}public String getLeaveMessage() {this.leaveMessage="hhhh";return leaveMessage;}public void setLeaveMessage(String leaveMessage) {this.leaveMessage = leaveMessage;}}