Web應(yīng)用框架Struts2


【Struts2簡介】
Struts2是一個基于MVC設(shè)計模式的Web應(yīng)用框架,它本質(zhì)上相當(dāng)于一個servlet,在MVC設(shè)計模式中,Struts2作為控制器(Controller)來建立模型與視圖的數(shù)據(jù)交互。Struts 2是Struts的下一代產(chǎn)品,是在 struts 1和WebWork的技術(shù)基礎(chǔ)上進(jìn)行了合并的全新的Struts 2框架。其全新的Struts 2的體系結(jié)構(gòu)與Struts 1的體系結(jié)構(gòu)差別巨大。Struts 2以WebWork為核心,采用攔截器的機(jī)制來處理用戶的請求,這樣的設(shè)計也使得業(yè)務(wù)邏輯控制器能夠與ServletAPI完全脫離開,所以Struts 2可以理解為WebWork的更新產(chǎn)品。雖然從Struts 1到Struts 2有著太大的變化,但是相對于WebWork,Struts 2的變化很小。
?
【Struts2技術(shù)改進(jìn)】
Struts 2對Struts1進(jìn)行了巨大的改進(jìn)。主要表現(xiàn)在如下幾個方面:
在Action的實現(xiàn)方面
Struts1要求必須統(tǒng)一擴(kuò)展自Action類,而Struts2中可以是一個POJO。
線程模型方面
Struts1的Action是單實例的,一個Action的實例處理所有的請求。Struts 2的Action是一個請求對應(yīng)一個實例(每次請求時都新new出一個對象),沒有線程安全方面的問題。
Servlet依賴方面
Struts1的Action依賴于Servlet API,比如Action的execute方法的參數(shù)就包括request和response對象。這使程序難于測試。Struts2中的Action不再依賴于Servlet API,有利于測試,并且實現(xiàn)TDD。
封裝請求參數(shù)
Struts1中強(qiáng)制使用ActionForm對象封裝請求的參數(shù)。Struts2可以選擇使用POJO類來封裝請求的參數(shù),或者直接使用Action的屬性。
表達(dá)式語言方面
Struts1中整合了EL,但是EL對集合和索引的支持不強(qiáng),Struts2整合了OGNL(Object Graph NavigationLanguage)。
綁定值到視圖技術(shù)
Struts1使用標(biāo)準(zhǔn)的JSP,Struts2使用“ValueStack”技術(shù)。
類型轉(zhuǎn)換
Struts1中的ActionForm基本使用String類型的屬性。Struts2中使用OGNL進(jìn)行轉(zhuǎn)換,可以更方便的使用。
Struts1中支持覆蓋validate方法或者使用Validator框架。Struts2支持重寫validate方法或者使用XWork的驗證框架。
Action執(zhí)行控制的對比
Struts1支持每一個模塊對應(yīng)一個請求處理,但是模塊中的所有Action必須共享相同的生命周期。Struts2支持通過攔截器堆棧為每一個Action創(chuàng)建不同的生命周期。
攔截器的應(yīng)用
攔截器,在AOP(Aspect-Oriented Programming)中用于在某個方法或字段被訪問之前,進(jìn)行攔截然后在之前或之后加入某些操作,攔截是AOP的一種實現(xiàn)策略。
?
【系統(tǒng)學(xué)習(xí)并掌握Struts2】
尚硅谷Struts2教程
https://www.bilibili.com/video/BV1MW411u7uG
課程詳情:
本Java視頻教程對Struts2龐雜的技術(shù)點進(jìn)行抽絲剝繭,提煉出企業(yè)開發(fā)所需的核心技術(shù)和重要技能。每個技術(shù)點都配備案例和代碼,對于攔截器、Struts2運行流程分析、值棧等技術(shù)點的講授更是深入解析源代碼,授之以漁。
學(xué)習(xí)完本Java視頻教程,你會真正理解Struts2 的優(yōu)雅和簡潔,并使你具備開發(fā)Struts2企業(yè)級項目的能力。
?
