在併發情況下struts2與spring 組合需要注意的問題

1.struts2爲每個線程提供一個action實例,多線程訪問時不會出現問題。當使用spring管理struts2的action實例對象時,scope必須配置爲prototype或者session,若配置爲 singleton則多線程訪問時會出現問題,多用戶訪問時有的用戶訪問到的是另一個用戶的數據,數據會發生亂竄現象。

2.scope=“prototype”是爲每個請求提供一個action實例。
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屬性即會保存這個信息。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章