struts2多執行緒資料亂竄問題

2022-06-11 23:48:17 字數 698 閱讀 8497

**:

1.struts2為每個執行緒提供乙個action例項,多執行緒訪問時不會出現問題。當使用spring管理struts2的action例項物件時,scope必須配置為prototype或者session,若配置為 singleton則多執行緒訪問時會出現問題,多使用者訪問時有的使用者訪問到的是另乙個使用者的資料,資料會發生亂竄現象。

無論是action還是service等待,只要是帶有成員變數的類,為了防止多個執行緒串資料,就不能是單例的。

2.scope=「prototype」是為每個請求提供乙個action例項。 

scope=「session」是為每個會話提供乙個action例項。

3.通常使用prototype,即讓spring容器為每個請求提供乙個action例項,好處是伺服器端不用維護使用者狀態資訊,否則使用session伺服器端必須儲存狀態資訊,使用者多時占用伺服器端記憶體過多。使用prototype時,必須自己在客戶端維護使用者的狀態,每次訪問服務端時將相應狀態資訊提交給伺服器。例如scope=「prototype」時,頁面一般< input name="id" type="hidden" value="$"/>用來儲存使用者的id資訊,訪問action時提交到server端供action中函式使用。而使用scope=「session」時,頁面不必使用hidden的物件隱藏id資訊,只要服務端獲取過使用者的id,action中的 id屬性即會儲存這個資訊。 

Struts2學習資料

strust2的核心和工作原理 漂亮回答面試官strust2的原理 struts2的工作原理 struts2的工作原理 總體上來說是這樣的 1 客戶端傳送請求 客戶端初始化乙個指向servlet容器 如tomcat 的請求 2 請求經過一系列過濾器 如actioncontextcleanup sit...

Struts2 資料驅動

name user extends struts default name register class cn.sxt.action.useraction method register name success show.jspresult action package struts 對應的處理請...

Struts2資料封裝

一 靜態資料封裝 靜態資料封裝,就是將資料寫死 struts.xml name staticparam extends struts default name staticparam class staticparam.staticparamaction method login name user...