struts中Action的執行緒安全性分析

2021-07-24 19:24:05 字數 607 閱讀 4841

不知道從哪個地方入的口,一直看到action是否是安全的,在網上找了一大通答案。亂的很,有的說action是執行緒安全的,有的說是執行緒不安全的。最後發現,原來說執行緒安全的是基於struts2的,而說執行緒不安全的是基於struts1的。 

總結: 

struts1中,每乙個action在web容器中只會有乙個例項,因此它是不安全的(我們必須明白什麼樣的變數是執行緒安全的,方法內的區域性變數和方法的引數變數都是執行緒安全的,所以即使系統只啟用乙個action物件為所有執行緒服務,因為form物件對每個請求來說都是單獨建立的,而且是做為引數傳到action裡,所以form物件一定是執行緒安全的. )只要在action中不使用例項變數就可以避免執行緒不安全的問題了。 

struts2中,action是多例項的,每乙個請求會建立乙個action。 

struts1 action是單例模式並且必須是執行緒安全的,因為僅有action的乙個例項來處理所有的請求。單例策略限制了struts1 action能做的事,並且要在開發時特別小心。action資源必須是執行緒安全的或同步的;struts 2 action物件為每乙個請求產生乙個例項,因此沒有執行緒安全問題 。 

servlet也是執行緒不安全的。有關於servlet的執行緒安全問題請看這篇文章:

Struts中action的呼叫方式

struts中action的呼叫方式 action執行的時候並不一定要執行execute方法 可以在配置檔案中配置action的時候用method 來指定執行哪個方法 1,通過action標籤中的method屬性 不推薦使用 會產生太多的action 在url位址列輸入 user 時,程式會到use...

Struts構架中action的跳轉大全

1 完整的action name someform input somejsp.jsp 這樣做的效果是 execute 僅當validate 成功以後才執行 input屬性指定的是乙個uri。2 僅有form的action 首先,struts會在定義的scope搜尋someform,如果找到則重用,...

講解Struts構架中action的跳轉大全

1.完整的action name someform input somejsp.jsp 這樣做的效果是 execute 僅當validate 成功以後才執行 input屬性指定的是乙個uri。2.僅有form的action 首先,struts會在定義的scope搜尋someform,如果找到則重用,...