SSH中Action的單例與多例


Structs2中的Bean默認的是單例,在整個程序運行期間,每個Bean只有一個實例,只要程序在運行,這個實例就一直存在。

對於Action來說,單例就容易出問題。如果客戶端每次提交的參數都是一樣的,后面提交的值把前面提交的值覆蓋了,那問題還不是很大。但是如果存在可選參數的情況,比如上次提交的是參數1,下次提交的是參數2,但是由於是單例,此時參數1的值不是null,仍然是上次提交的那個值。這樣就很容易出問題。

解決的辦法就是把Action設置成多例的,每次請求都會生成一個Action的實例,這樣多次提交的參數值就不會相互影響了。處理結束以后,Action的實例會被自動回收。和單例相比,多例可能會占用更多的內存,但是不會出bug。

把Bean設置成單例的方法:

<bean id="XXXAction" class="com.XXX.action.XXXAction" scope="singleton">

把Bean設置成多例的方法:

<bean id="XXXAction" class="com.XXX.action.XXXAction" scope="prototype">

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM