1.struts2為每個線程提供一個action實例,多線程訪問時不會出現(xiàn)問題。當(dāng)使用spring管理struts2的action實例對象時,scope必須配置為prototype或者session,若配置為singleton則多線程訪問時會出現(xiàn)問題,例如actionMessage,fieldError等信息會累加,多用戶訪問時有的用戶訪問到的是另一個用戶的數(shù)據(jù)。

2.scope=“prototype”是為每個請求提供一個action實例(與struts2的機制是一樣的)。
scope=“session”是為每個會話提供一個action實例。

3.通常使用prototype,即讓spring容器為每個請求提供一個action實例,好處是服務(wù)器端不用維護用戶狀態(tài)信息,否則使用session服務(wù)器端必須存儲狀態(tài)信息,用戶多時占用服務(wù)器端內(nèi)存過多。使用prototype時,必須自己在客戶端維護用戶的狀態(tài),每次訪問服務(wù)端時將相應(yīng)狀態(tài)信息提交給服務(wù)器。

例如scope=“prototype”時,頁面一般< input name="id" type="hidden" value="${id}"/>用來存儲用戶的id信息,訪問action時提交到server端供action中函數(shù)使用。而使用scope=“session”時,頁面不必使用hidden的對象隱藏id信息,只要服務(wù)端獲取過用戶的id,action中的id屬性即會保存這個信息。