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

truts2在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,所以是解耦合的!!!

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

       HttpServletRequest request=ServletActionContext.getRequest();
       ServletContext context=ServletActionContext.getServletContext();
       HttpSession session=request.getSession();
       HttpServletResponse response=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. }
原文地址:https://www.cnblogs.com/kabi/p/5182767.html