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。

相關文章
相關標籤/搜索