sturts2 action多例與單例

2021-07-06 01:28:26 字數 662 閱讀 3718

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".好吧,問題到此結束。

sturts1中的Action 子類

action org.apache.struts.action.actionservlet config web inf struts config.xml config model1 web inf struts config model1.xml config model2 web inf st...

Sturts2的請求流程

最上面是三個過濾器,並且這三個過濾器也已經被改了。strutsprepareandexecutefilter 是struts2的核心控制器,它負責攔截由 指定的所有使用者請求,當使用者請求到達時,該filter會過濾使用者的請求,預設情況下,如果使用者請求的路徑不帶字尾或者字尾以.action結尾,...

sturts2的配置檔案

index.jsp web inf jsp user error.jsp web inf jsp exception.jsp web inf jsp admin login.jsp web inf jsp admin error.jsp result exception result excepti...