STRUTS2爲每個線程提供一個ACTION實例

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}"/>用來存儲用戶的id信息,訪問action時提交到server端供action中函數使用。而使用scope=“session”時,頁面不必使用hidden的對象隱藏id信息,只要服務端獲取過用戶的id,action中的id屬性即會保存這個信息。
發佈了26 篇原創文章 · 獲贊 7 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章