strtus2获取request\session

1.非Ioc方式
获取request对象:

HttpServletRequest request = ServletActionContext.getRequest ();   
ActionContext ct= ActionContext.getContext()   
HttpServletRequest request=(HttpServletRequest)ct.get(ServletActionContext.HTTP_REQUEST);  
获取session对象:

Map session=ActionContext.getContext.getSession();   
Map session=(Map)ActionContext.getContext().getActionContext.SESSION);  
2.IoC方式

获得request对象:
第一步:让action实现ServletRequestAware接口
第二步:在action中声明一个HttpServletRequest类型的实例变量
第三步:在action中实现ServletRequestAware接口的setServletRequest方法,实现方式很简单,如下所示。
         private HttpServletRequest request;
         public void setServletRequest(HttpServletRequest request) {
            this.request = request;
         }
获得Session对象(注意,此时的session是SessionMap类型):
第一步:让action实现SessionAware接口
第二步:在action中声明一个HttpServletRequest类型的实例变量
第三步:在action中实现SessionAware接口的setSession方法,实现方式很简单,如下所示。
         private Map session;
         publicvoid setSession(Map session) {
            this. session = session;
         }



在一个项目中可能会有很多action都需要用到session,如果每个action都来实现org.apache.struts2.interceptor.SessionAware这个接口,可能会显得比较麻烦,所以建议作一个抽象的BaseAction类来实现org.apache.struts2.interceptor.SessionAware接口,以后所有的action只要继承这个BaseAction就可以了。

你可能感兴趣的:(apache,IOC)