ActionContext与ServletActionContext的区别及获取request、session等对象

1、ActionContextjava

    是Action执行的上下文,Action的上下文能够看做是一个容器,里面封装了请求(Request)、会话(Session)、Application等,这里面的Request、Session、Application是Map类型的,往里面封装的是键值对,因此这就体现了struts2不与底层servlet Api打交道,那么对不少web的相关对象进行封装,这样能够达到Action与web层解耦。web

用ActionContext获得Map类型的Request、Session、Application。session

例子:jsp

    获取request:对象

     Map request = ActionContext.getContext().get("request");继承

    往request里封装数据get

    request.put("name", value);servlet

    在前台就能够用request.getAttribute("name");io

   

    获取session容器

    Map session = ActionContext.getContext().getSession();

    将数据封装到session中

    session.put("name", value);

    在前台页面上用sessionScope.getAttribute("name");获得session里面封装的值。

获得session、request有点区别,获得request用的是get("reqeust"),获得session用的是getSession()

 

也能够直接对Java Servlet Http的请求(HttpServletRequest)、响应(HttpServletResponse)操做,和上面的例子有点区别,注意区别

ActionContext ctx = ActionContext.getContext();       
      
  HttpServletRequest request = (HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);
  HttpServletResponse response = (HttpServletResponse)ctx.get(ServletActionContext.HTTP_RESPONSE);

用法就和Servlet中的request、response用法同样

 

2、ServletActionContext

它继承ActionContext,因此ServletActionContext也能够获得HttpServetRequest、HttpServletResponse,,它也提供了直接与Servlet相关对象访问的功能,它能够取得的对象有:

(1)javax.servlet.http.HttpServletRequest : HTTPservlet请求对象

(2)javax.servlet.http.HttpServletResponse : HTTPservlet相应对象

(3)javax.servlet.ServletContext : Servlet上下文信息

(4)javax.servlet.ServletConfig : Servlet配置对象

(5)javax.servlet.jsp.PageContext : Http页面上下文

 

如何获取HttpRequest、HttpResponse

例子

  HttpServletRequest request = ServletActionContext.getRequest();

  HttpServletResponse response = ServletActionContext.getResponse();

而后就能够用request.setAttribute("name", value)方法了。

 

总结:不难看出,二者之间仍是存在不少共同功能,那么咱们仍是根据本身的需求进行选择,能用ActionContext对象知足就尽可能使用ActionContext,避免让咱们直接去访问Servlet对象。另外,不要在Action还没实例化的时候去经过ActionContext调用方法,由于Action实例在ActionContext实例以前建立,ActionContext中一些值尚未设置,会返回null。

相关文章
相关标签/搜索