struts2為每個執行緒提供乙個action例項

2021-08-09 13:22:47 字數 810 閱讀 4300

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

2.scope=「prototype」是為每個請求提供乙個action例項(與struts2的機制是一樣的)。 

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屬性即會儲存這個資訊。

以下是個人感觸:

如上類似的問題,也要注意,其他service如果是singleton,需要注意多執行緒時會不會出問題,還有,雖然action是單獨的物件,可以說是執行緒安全的,但是,在action中呼叫其他的關鍵資源時,也要注意是否需要同步訪問,配置ssh框架一定要根據需求多做調整。

STRUTS2為每個執行緒提供乙個ACTION例項

1.struts2為每個執行緒提供乙個action例項,多執行緒訪問時不會出現問題。當使用spring管理struts2的action例項物件時,scope必須配置為prototype或者session,若配置為singleton則多執行緒訪問時會出現問題,例如actionmessage,field...

struts2為每個執行緒提供乙個action例項

1.struts2為每個執行緒提供乙個action例項,多執行緒訪問時不會出現問題。當使用spring管理struts2的action例項物件時,scope必須配置為prototype或者session,若配置為singleton則多執行緒訪問時會出現問題,例如actionmessage,field...

Struts2提供的校驗器

系統提供的校驗器如下 required 必填校驗器,要求field的值不能為null requiredstring 必填字串校驗器,要求field的值不能為null,並且長度大於0,預設情況下會對字串去前後空格 stringlength 字串長度校驗器,要求field的值必須在指定的範圍內,否則校驗...