暑期項目經驗(九) -- request session application

來源:互聯網
上載者:User

標籤:style   blog   http   color   io   使用   java   ar   strong   

            request、session、application

一、基礎知識

可以看看  淺談:request,session,application (http://blog.csdn.net/hzc543806053/article/details/7416007)

要點:

範圍: request<session<application

共同方法:都可以使用 setAttribute(String name , Object o ) ,getAttribute(String name)

 

二、在java中擷取這三個對象

可以看以下原文 :http://www.blogjava.net/xcp/archive/2009/10/23/struts2_actioncontext1.html?opt=admin

2.1 struts2封裝後的三個Map  (使用ActionContext)

import java.util.Map;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ActionContext;........ActionContext context = ActionContext.getContext();Map request = (Map) context.get("request");Map session = context.getSession();Map application = context.getApplication();

2.2 與Servlet API耦合的訪問方式(非IoC方式,使用ServletActionContext)

HttpServletRequest request = ServletActionContext.getRequest();HttpServletResponse response = ServletActionContext.getResponse();HttpSession session =  ServletActionContext.getRequest().getSession();

 

三、ActionContext和ServletActionContext的區別

  我們知道struts2接受用戶端請求,在Action中進行處理後,將視圖結果返回。struts2容器自身不依賴於web容器,不用和servlet對象中的請求(request)、響應(response)進行關聯,對於請求的參數,通過paramerInterceptor將參數封裝在Action中,然後通過調用get、set方法將參數值設定進Action之中。如果僅僅擷取參數,可能有時候滿足不了開發的需求,有時我們要擷取request或者response中的資訊,要對其進行設定、處理。

3.1 ActionContext

  是Action執行的上下文,Action的上下文可以看作是一個容器,裡面封裝了請求(Request)、會話(Session)、 Application等,這裡面的Request、Session、Application是Map類型的,往裡面封裝的是索引值對,所以這就體現了 struts2不與底層servlet Api打交道,那麼對很多web的相關對象進行封裝,這樣可以達到Action與web層解耦。

3.2 ServletActionContext

  它繼承ActionContext,所以ServletActionContext也可以得到HttpServetRequest、HttpServletResponse,,它也提供了直接與Servlet相關對象訪問的功能.

 

總結:不難看出,兩者之間還是存在很多共同功能,那麼我們還是根據自己的需求進行選擇,能用ActionContext對象滿足就盡量使用ActionContext,避免讓我們直接去訪問Servlet對象。另外,不要在Action還沒執行個體化的時候去通ActionContext調用方法,因為Action執行個體在ActionContext執行個體之前建立,ActionContext中一些值還沒有設定,會返回null。

 

4. application執行個體  (統計線上人數 )

4.1 登入程式中 LoginAction.java

//統計線上人數                Map application = ActionContext.getContext().getApplication();                Integer count = (Integer) application.get("count");                if(null == count){                    count=1;                }else{                    count++;                }                application.put("count", count);

 

 4.2 登出程式中 ExitAciton.java

Map application = ActionContext.getContext().getApplication();        Integer count = (Integer) application.get("count");        count--;        application.put("count", count);

 

暑期項目經驗(九) -- request session application

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.