麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JSP > 正文

Struts中的Action 單例與多例詳解

2024-09-05 00:23:02
字體:
來源:轉載
供稿:網友

 Struts中的Action 單例與多例詳解

struts2中action是多例的,即每次訪問網絡地址的時候都會產生一個action

public class pr_action {  public pr_action(){    System.out.println("創建action成功!!!");  }  public void execute(){  }}

運行代碼可以看到,每次訪問該網絡地址都會在控制臺輸出一次!!!

如果是單例的話,若出現兩個用戶都修改一個對象的屬性值,則會因為用戶修改時間不同,兩個用戶訪問得到的屬性不一樣,操作得出的結果不一樣。

舉個例子:有一塊布長度300cm,能做一件上衣(用掉100cm)和一件褲子(用掉200cm);甲和乙同時訪問得到的長度都是300cm,
甲想做上衣和褲子,他先截取100cm去做上衣,等上衣做完再去做褲子,而乙這時正好也拿100cm去做上衣,那好,等甲做完上衣再做褲子的時候發現剩下的布(100cm)已經不夠做褲子了…..這就是影響系統的性能,解決的辦法就是給甲和乙一人一塊300cm的布,就不會出現布被別人偷用的事情,也是就單實例和多實例的區別

如果設置成單例,那么多個線程會共享一個ActionContext和ValueStack,這樣并發訪問的時候就會出現問題了

struts 2的Action是多實例的并非單例,也就是每次請求產生一個Action的對象。原因是:struts 2的Action中包含數據,例如你在頁面填寫的數據就會包含在Action的成員變量里面。如果Action是單實例的話,這些數據在多線程的環境下就會相互影響,例如造成別人填寫的數據被你看到了。所以Struts2的Action是多例模式的。

問題出現了,可以讓struts2的action變成單例模式么?我在使用spring來生成action的時候,發現生成的action居然全是單例的。這不是讓我的程序默認就跑出bug來么?上個用戶提交的信息,如果下個用戶沒填,居然跑到上個用戶輸入的信息去了。

背景:

1) Struts2會對每一個請求,產生一個Action的實例來處理.

2) Spring的Ioc容器管理的bean默認是單實例的.

首先從數據安全性的問題上考慮,我們的Action應該保證是多例的,這樣才不會出現數據問題。但是如果有的action比如只有admin才能操作,或者某些action,全站公用一個來提高性能,這樣的話,就可以使用單例模式。

不過幸好,Spring的bean可以針對每一個設置它的scope,所以,上面的問題就不是問題了。如果用多例,就在spring的action bean配置的時候設置scope=”prototype”.好吧,問題到此結束。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到JSP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲国产精品一区二区三区 | 国产乱乱视频 | 欧美成人精品一区二区三区 | 日本一级黄色毛片 | 在线成人免费观看 | 国产一极毛片 | 久久国产精品久久久久久 | av免费在线不卡 | 亚洲免费视 | 国产精品成人一区二区三区电影毛片 | 成人在线免费小视频 | 九九热视频在线免费观看 | 91羞羞 | 国产午夜精品一区二区三区不卡 | 今井夏帆av一区二区 | 美国人成人在线视频 | 成人一级在线 | 91成人久久 | 欧美福利视频一区二区三区 | 成人午夜视频网站 | 国产亚洲欧美视频 | 99r国产精品| 羞羞视频免费观看网站 | 免费的性爱视频 | xp123精品视频 | 久久人人人 | 羞羞视频免费观看入口 | 久久成人综合网 | 国产毛片自拍 | 中文字幕在线看第二 | 亚洲午夜1000理论片aa | 国内精品久久久久久久久久久久 | 欧美另类综合 | 久久精品一区二区三区四区五区 | 涩涩激情网| 国产精品午夜未成人免费观看 | 日本高清一级片 | av电影在线观看免费 | 免费在线观看国产精品 | 成人在线网站 | 91精品片 |