回覆列表
  • 1 # 使用者6484034300502

    ActionContext是Action的上下文,Struts2自動在其中儲存了一些在Action執行過程中所需的物件,比如session, parameters, locale等。Struts2會根據每個執行HTTP請求的執行緒來建立對應的ActionContext,即一個執行緒有一個唯一的ActionContext。因此,使用者可以使用靜態方法ActionContext.getContext()來獲取當前執行緒的ActionContext,也正是由於這個原因,使用者不用去操心讓Action是執行緒安全的。 無論如何,ActionContext都是用來存放資料的。Struts2本身會在其中放入不少資料,而使用者也可以放入自己想要的資料。ActionContext本身的資料結構是對映結構,即一個Map,用key來對映value。所以使用者完全可以像使用Map一樣來使用它,或者直接使用Action.getContextMap()方法來對Map進行操作。 Struts2本身在其中放入的資料有ActionInvocation、application(即ServletContext)、conversionErrors、Locale、action的name、request的引數、HTTP的Session以及值棧等。完整的列表請參考它的Javadoc(本文附錄有對它包含內容的討論)。 由於ActionContext的執行緒唯一和靜態方法就能獲得的特性,使得在非Action類中可以直接獲得它,而不需要等待Action傳入或注入。需要注意的是,它僅在由於request而建立的執行緒中有效(因為request時才建立對應的ActionContext),而在伺服器啟動的執行緒中(比如fliter的init方法)無效。由於在非Action類中訪問其的方便性,ActionContext也可以用來在非Action類中向JSP傳遞資料(因為JSP也能很方便的訪問它)。

  • 2 # 誰暖冬季影紫花開

    言簡意賅:

    request是執行緒級的。session是會話級別的。

    struts2中actioncontext的session基本可以等同是httpsession的轉換,如果用作存取會話資料來說,結果是一樣的,不過前者型別是map。

  • 中秋節和大豐收的關聯?
  • 孫儷倪妮高圓圓哪個美?