Struts2 本身是線程安全的,在默認的情況下會為每一個請求創建一個實例對象,這在一定程度上解決了servlet帶來的線程安全的問題。 Struts2的Bean在交給Spring IOC管理後,默認使用的是單例,所有請求使用同一Action,當Action中定義一些變量以接受參數時,或者進行驗證時,往往會出現線程安全問題。 比如: Struts2的Action是單例,其中的FieldError,actionerror中的錯誤信息會累加, 即使再次輸入了正確的信息,也過不了驗證。 Action中定義了User對象,請求A提交表單,填充User對象,請求B判斷Action中User對象是否為空,不為空則加載(此時B請求所對應的User對象並未加載) 等等等等.... 所以在Spring 整合Struts2的時候,記得將Struts2 Bean 的Scope設置成prototype哦 [java] @Controller @Scope(BeanDefinition.SCOPE_PROTOTYPE) public class UserAction extends ActionSupport {