Struts2亮點(diǎn)
Action 的實(shí)現(xiàn)方式
Struts1:Action 必須擴(kuò)展自 Action 類,耦合度高。
Struts2:Action 可以是一個普通的 POJO(Plain Old Java Object),無需繼承任何框架類,降低了耦合性。
線程模型
Struts1:Action 是單實(shí)例的,多個請求共享同一個實(shí)例,存在線程安全問題。
Struts2:每個請求都會創(chuàng)建一個新的 Action 實(shí)例,避免了線程安全問題。
Servlet API 依賴
Struts1:Action 依賴于 Servlet API(如 HttpServletRequest 和 HttpServletResponse),導(dǎo)致代碼難以測試。
Struts2:Action 不依賴于 Servlet API,支持 TDD(Test-Driven Development),便于單元測試。
Struts2特色
請求參數(shù)封裝
Struts1:強(qiáng)制使用 ActionForm 對象封裝請求參數(shù)。
Struts2:可以直接使用 POJO 類或 Action 的屬性封裝參數(shù),更加靈活。
表達(dá)式語言
Struts1:整合了 EL(Expression Language),但對集合和索引的支持較弱。
Struts2:整合了 OGNL(Object Graph Navigation Language),支持復(fù)雜的對象圖導(dǎo)航和屬性訪問。
視圖技術(shù)
Struts1:使用標(biāo)準(zhǔn)的 JSP 作為視圖技術(shù)。
Struts2:使用 ValueStack 技術(shù),支持更靈活的視圖數(shù)據(jù)交互。
Struts2功能
類型轉(zhuǎn)換
Struts1:ActionForm 的屬性通常為 String 類型,需要手動轉(zhuǎn)換。
Struts2:使用 OGNL 自動進(jìn)行類型轉(zhuǎn)換,支持更復(fù)雜的類型(如日期、集合等)。
驗(yàn)證框架
Struts1:支持覆蓋 validate 方法或使用 Validator 框架。
Struts2:支持重寫 validate 方法或使用 XWork 的驗(yàn)證框架,配置更靈活。
Action 執(zhí)行控制
Struts1:模塊中的所有 Action 共享相同的生命周期。
Struts2:通過 攔截器堆棧 為每個 Action 創(chuàng)建不同的生命周期,支持更細(xì)粒度的控制。
Struts2常見問題
問題:Action 類線程安全問題
現(xiàn)象:多個請求共享 Action 實(shí)例,導(dǎo)致數(shù)據(jù)混亂。
原因:Struts2 默認(rèn)每請求創(chuàng)建新實(shí)例,但若配置為單例模式(如使用 Spring 管理),可能引發(fā)線程安全問題。
解決方案:
確保 Action 類無狀態(tài)(不保存請求間共享的數(shù)據(jù))。
避免將 Action 類配置為單例。
Struts2更新日志:
日日夜夜的勞作只為你可以更快樂
嘛咪嘛咪哄~bug通通不見了!
華軍小編推薦:
相信我,只要你用上了Struts2其他JAVA程序的軟件都可以卸載了,絕對滿足你的所有需求。小編還精心為您準(zhǔn)備了JUDE、Argo UML、Apache Tomcat 9、FreeJava、WinPack
您的評論需要經(jīng)過審核才能顯示