Struts 中使用request

在struts2中有两种方式可以得到这些对象

1、非IoC方式

要获得上述对象,关键Struts 2中com.opensymphony.xwork2.ActionContext类。我们可以通过它的静态方法getContext()获取当前Action的上下文对象。有了这个对象我们想获得其他几个对象就好办了

ActionContext ctx = ActionContext .getContext(); Map session = ctx.getSession(); 细心的朋友可以发现这里的session是个map对象在Struts2中底层的session都被封装成了Map类型我们可以直接操作这个map 进行对session的写入和读取操作而不用去直接操作HttpSession对象

另外,org.apache.struts2.ServletActionContext作为辅助类(Helper Class),可以帮助您快捷地获得这几个对象。

HttpServletRequest request = ServletActionContext. getRequest(); HttpServletResponse response = ServletActionContext. getResponse(); HttpSession session = request.getSession(); 如果你只是想访问session的属性(Attribute),你也可以通过ActionContext .getContext().getSession()获取或添加session范围(Scoped)的对象。

2、IoC方式(这种方式在tapestry中也是这样实现的) 要使用IoC方式,我们首先要告诉IoC容器(Container)想取得某个对象的意愿,通过实现相应的接口做到这点。具体实现

Java代码 复制代码  收藏代码
  1. import java.util.Map;   
  2.   
  3. import javax.servlet.http.HttpServletRequest;   
  4. import javax.servlet.http.HttpServletResponse;   
  5. import javax.servlet.http.HttpSession;   
  6.   
  7. import org.apache.struts2.interceptor.ServletRequestAware;   
  8. import org.apache.struts2.interceptor.ServletResponseAware;   
  9. import org.apache.struts2.interceptor.SessionAware;   
  10.   
  11. import com.opensymphony.xwork2.ActionSupport;   
  12.   
  13. public class IoCServlet extends ActionSupport implements SessionAware,   
  14.         ServletRequestAware, ServletResponseAware {   
  15.     private String message;   
  16.     private Map att;   
  17.     private HttpServletRequest request;   
  18.     private HttpServletResponse response;   
  19.   
  20.     public String getMessage() {   
  21.         return message;   
  22.     }   
  23.   
  24.     public void setSession(Map att) {   
  25.         this.att = att;   
  26.     }   
  27.   
  28.     public void setServletRequest(HttpServletRequest request) {   
  29.         this.request = request;   
  30.     }   
  31.   
  32.     public void setServletResponse(HttpServletResponse response) {   
  33.         this.response = response;   
  34.     }   
  35.   
  36.     @Override  
  37.     public String execute() {   
  38.         att.put("msg""Hello World from Session!");   
  39.   
  40.         HttpSession session = request.getSession();   
  41.         StringBuffer sb = new StringBuffer("Message from request: ");   
  42.         sb.append(request.getParameter("msg"));   
  43.         sb.append(" Response Buffer Size: ");   
  44.         sb.append(response.getBufferSize());   
  45.         sb.append(" Session ID: ");   
  46.         sb.append(session.getId());   
  47.   
  48.         message = sb.toString();   
  49.         return "success";   
  50.     }   
  51. }  

猜你喜欢

转载自littie1987.iteye.com/blog/1294244