Struts2 ActionContext备忘


ActionContext为Struts提供数据环境,维护着一个Map结构,ValueStack中的每一个元素都是根对象,Action位于ValueStack的最顶层.ActionContext中封装了servlet对象,从而将Action与Servlet解耦 (即Action无需依赖任何Servlet API).
Map结构如图:
Struts2 ActionContext备忘_第1张图片

获取request、session的方法

  2.1 与servlet无关:

  2.1.1 非IoC模式

  Java代码

  ActionContext context ;//该方法还可以取得值栈(getValueStack()),使用push(obj)往值栈中放数据

  Map request ;

  Map session ;

  Map application ;

  //以下初始化方法要放在方法中

  context = ActionContext.getContext();

  request = (Map)context.get("request");//获取request

  session = context.getSession();//获取session

  application = context.getApplication();//获取application

  request.put("req", "request属性");

  session.put("ses", "session属性");

  application.put("app", "application属性");

  ActionContext context ;//该方法还可以取得值栈(getValueStack()),使用push(obj)往值栈中放数据

  Map request ;

  Map session ;

  Map application ;

  //以下初始化方法要放在方法中

  context = ActionContext.getContext();

  request = (Map)context.get("request");//获取request

  session = context.getSession();//获取session

  application = context.getApplication();//获取application

  request.put("req", "request属性");

  session.put("ses", "session属性");

  application.put("app", "application属性");

  Xml代码

  <!--jsp中取值-->

  request属性接受:<s:property value="#request.req"/>${requestScope.req}

  session属性接受:<s:property value="#session.ses"/>${sessionScope.ses}

  application属性接受:<s:property value="#application.app"/>${applicationScope.app}

  <!--jsp中取值-->

  request属性接受:<s:property value="#request.req"/>${requestScope.req}

  session属性接受:<s:property value="#session.ses"/>${sessionScope.ses}

  application属性接受:<s:property value="#application.app"/>${applicationScope.app}

  2.1.2 IoC模式

  Java代码

  //实现接口

  public class LoginAction extends ActionSupport implements RequestAware,SessionAware,ApplicationAware

  Map request ;

  Map session ;

  Map application ;

  public void setRequest(Map request) {

  this.request = request;

  }

  public void setSession(Map session) {

  this.session = session;

  }

  public void setApplication(Map application) {

  this.application = application;

  }

  //实现接口

  public class LoginAction extends ActionSupport implements RequestAware,SessionAware,ApplicationAware

  Map request ;

  Map session ;

  Map application ;

  public void setRequest(Map request) {

  this.request = request;

  } public void setSession(Map session) { this.session = session; } public void setApplication(Map application) { this.application = application; } 2.2 与servlet有关

  2.2.1 非IoC模式

  Java代码

  HttpServletRequest request;

  HttpSession session ;

  ServletContext application;

  request = ServletActionContext.getRequest();//获取request

  session = request.getSession();

  application = ServletActionContext.getServletContext();//获取application

  request.setAttribute("req", "request属性111");

  session.setAttribute("ses", "session属性111");

  application.setAttribute("app", "application属性111");

  HttpServletRequest request;

  HttpSession session ;

  ServletContext application;

  request = ServletActionContext.getRequest();//获取request

  session = request.getSession();

  application = ServletActionContext.getServletContext();//获取application

  request.setAttribute("req", "request属性111");

  session.setAttribute("ses", "session属性111");

  application.setAttribute("app", "application属性111");

  2.2.1 IoC模式

  Java代码

  //实现接口

  public class LoginAction extends ActionSupport implements ServletRequestAware,ServletContextAware

  HttpServletRequest request;

  ServletContext application;

  public void setServletRequest(HttpServletRequest request) {

  this.request = request;

  }

  public void setServletContext(ServletContext application) {

  this.application = application;

  }

你可能感兴趣的:(数据结构,jsp,servlet,struts,IOC)