Struts2在Action获取内置对象request,session,application(即ServletContext)

来源:互联网 发布:java项目有意思的案例 编辑:程序博客网 时间:2024/04/19 10:19

转自:

http://blog.sina.com.cn/s/blog_7ffb8dd501013yat.html


Struts2在Action中如何访问request,session,application(即ServletContext)对象????
方式一:与Servlet API解耦的方式
    可以使用struts2中提供的Map对象来访问HttpRequest,HttpSession和ServletContext对象,要获取这三个Map对象,可以使用com.opensymphony.xwork2.ActionContext类提供的静态方法
    ActionContext ctx=ActionContext.getContext();
   ctx.getApplication().put(“app”,”Application应用对象”);//ServletContext放入app
   ctx.getSession().put(“ses”,”session应用对象”);
   ctx.put(“req”,”request对象”);

######:
上面的三个方法,仅相当与
request,session,applicationsetAttribute(string,object)方法。
struts2中提供的Map对象来提供类似request,session,application内置对象的功能,这些内置对象只有内置对象的一小部分功能,它不依赖于servlet,所以是解耦合的!!!

方式二:
与ServletAPI耦合的访问方式
    也可以直接访问Servlet环境中的HttpRequest,HttpSession和ServletContext对象。通过ServletActionContext.类提供的静态方法直接获取:

      HttpServletRequest request=ServletActionContext.getRequest();
      ServletContextcontext=ServletActionContext.getServletContext();
      HttpSession session=request.getSession();
      HttpServletResponseresponse=ServletActionContext.getResponse();

方式三、实现相关接口

   

  1. public class BaseAction extends ActionSupport implements SessionAware, ServletRequestAware, ServletResponseAware  
  2.   
  3.     private static final long serialVersionUID 7620009925942346125L;  
  4.       
  5.     ActionContext context ActionContext.getContext();  
  6.     HttpServletRequest request;  
  7.     HttpServletResponse response;  
  8.     SessionMap session;  
  9.       
  10.     //获取request,response,session方式一,非IoC方式,不用实现SessionAware, ServletRequestAware, ServletResponseAware  
  11.     //ActionContext context ActionContext.getContext();  
  12.     //HttpServletRequest request (HttpServletRequest) context.get(ServletActionContext.HTTP_REQUEST);  
  13.     //HttpServletResponse response (HttpServletResponse) context.get(ServletActionContext.HTTP_RESPONSE);  
  14.     //Map session context.getSession();  
  15.     //SessionMap session (SessionMap) context.get(ActionContext.SESSION);  
  16.       
  17.     //获取request,response,session方式一,IoC方式,必须实现SessionAware, ServletRequestAware, ServletResponseAware  
  18.     public void setSession(Map map)  
  19.         this.session (SessionMap) map;  
  20.      
  21.     public void setServletRequest(HttpServletRequest request)  
  22.         this.request request;  
  23.      
  24.     public void setServletResponse(HttpServletResponse response)  
  25.         this.response response;  
  26.      
  27.       
  28. }

0 0
原创粉丝点击