3 回答
已采納

慕圣0830664
TA貢獻41條經(jīng)驗 獲得超26個贊
這個問題很好理解,如果struts2中的action設(shè)置成單例的話,那么訪問該action中的任意方法時,都是訪問同一個action(因為action中可能包含多個方法,而action只有一個),這就會導(dǎo)致臟數(shù)據(jù)的產(chǎn)生。因為struts2接收參數(shù)的方式一般是通過在action中定義成員變量或JavaBean來實現(xiàn)的,也就是說多次請求都會共用這些成員變量,這些成員變量可能會仍然保存著上一次請求所接受到的參數(shù)值。當(dāng)你執(zhí)行某些操作時,可能會使用到這些成員變量,這樣一來,就會導(dǎo)致程序運行的結(jié)果跟預(yù)期的結(jié)果不一致。

Caballarii
TA貢獻1123條經(jīng)驗 獲得超629個贊
所以別在單例的類里寫成員變量保存數(shù)據(jù),要么像struts2就把action的scope設(shè)成prototype
添加回答
舉報
0/150
提交
取消