一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Struts1和struts2的區別_動力節點Java學院整理

Struts1和struts2的區別_動力節點Java學院整理

2020-12-24 13:35xiohao Java教程

這篇文章主要為大家詳細介紹了Struts1和struts2的區別,具有一定的參考價值,感興趣的小伙伴們可以參考一下

Struts2其實并不是一個陌生的Web框架,Struts2是以Webwork的設計思想為核心,吸收了Struts1的優點,因此,可以認為Struts2是Struts1和Webwork結合的產物。

簡單來說二者的區別是:   

     一個是Stuts1 ,一個是Stuts2,這是最大的區別,技術方面,Stuts1有個核心控制器,但是只提供了一個接口,也就是execute,還要配置actionform之類的,很麻煩,所以依賴性比較強;而Stuts2是針對攔截器開發的,也就是所謂的AOP思想,可以配置多個action,用起來比較方便,但是因為請求之前的攔截器有一些注入的操作,速度相對Stuts1來說慢一點。

一、MVC簡介

      Struts2是一個兼容Struts1和WebWork的MVC框架,既然,提到了MVC框架,就不得不對MVC框架做一個簡單介紹,僅限于簡單介紹,如果,想了解更多的MVC的知識可以查看相關的文檔,或者找一本Struts1的書籍,相信上面關于MVC的篇幅不會很少。言歸正傳,其實,Java目前出現的這些框架而言,其最終目的都是為了接觸耦合,不論是Spring、Hibernate或MVC框架,目的都是為了接觸耦合增加復用。MVC接觸的是View和Model間的耦合。  

      MVC包含三個基礎部分:Model、View和Controller,這三個部分以最小的耦合協同工作,以增加程序的可擴展性和可維護性。各個部分的實現技術可以總結如下:

        1)Model:JavaBean、EJB的EntityBean
        2)View:JSP、Struts的TagLib
        3)Controller:Struts的ActionServlet、Action

概括起來MVC的優點主要有一下方面:

        1)多個視圖可以對應一個模型。按MVC設計模式,一個模型對應多個視圖,可以減少代碼的復制及代碼的維護量,一旦模型發生改變,也易于維護
        2)模型返回的數據與顯示邏輯分離。模型數據可以應用任何的顯示技術,例如,使用JSP頁面、Velocity模板或者直接產生Excel文檔等
        3)應用被分隔為三層,降低了各層之間的耦合,提供了應用的可擴展性
        4)控制層的概念也很有效,由于它把不同的模型和不同的視圖組合在一起,完成不同的請求。因此,控制層可以說是包含了用戶請求權限的概念
        5)MVC更符合軟件工程化管理的精神。不同的層各司其職,每一層的組件具有相同的特征,有利于通過工程化和工具化產生管理程序代碼

         對于MVC的概念性的東西也就廢話到此,其關鍵的地方就是各個模塊的實現技術分別是什么。

二、Struts2簡介

        Struts2既然是從Struts1發展而來,但實際上Struts2與Struts1在框架的設計思想上面還是有很大的區別,Struts2是以WebWork的設計思想為核心,為什么Struts2不沿用Struts1的設計思想,畢竟Struts1在目前的企業應用中還是有非常大的市場在的,那么,來看下Struts1的一些缺點吧:

        1)支持的表現層技術單一
        2)與Servlet API嚴重耦合,這點可以從Action的Execute的方法聲明里面就可以看的出來
        3)代碼依賴Struts1 API,有侵入性,這點可以從寫Action類和FormBean的時候看的出來,Action必須實現Struts的Action類

        而Struts2之所以以WebWork的設計思想為其核心,一點就是最近WebWork的上升勢頭,再就是WebWork沒有Struts1上面的那些缺點,更符合MVC的設計思想,也更利于代碼的復用。

        基于以上介紹可以看的出,Struts2體系結構與Struts1的體系結構有很大的差別,Struts1是使用ActionServlet做為其中心處理器,Struts2則使用一個攔截器(FilterDispatcher)做為其中心處理器,這樣做的一個好處就是將Action類和Servlet API進行了分離。

        Struts2的簡單處理流程如下:

        1)瀏覽器發送請求
        2)中心處理器根據struts.xml文件查找對應的處理請求的Action類
        3)WebWork的攔截器鏈自動對請求應用通用功能,例如:WorkFlow、Validation等功能
        4)如果Struts.xml文件中配置Method參數,則調用Method參數對應的Action類中的Method方法,否則調用通用的Execute方法來處理用戶請求
         5)將Action類中的對應方法返回的結果響應給瀏覽器

三、Struts2與Struts1對比

         1)Action類的實現方式:
               Struts1的Action在實現的時候必須擴展Action類或者Action的子類,Struts2的Action類實現的時候可以不用實現任何類和接口,雖然Struts2中提供一個ActionSupport類,但是,不是必須的。
          2)Struts1的Action類是單例模式,必須設計成線程安全的,Struts2則為每一個請求產生一個實例
          3)Struts1的Action類依賴與Servlet API,從其execute的方法簽名可看出,execute方法有兩個Servlet的參數HttpServletRequest和HttpServletResponse,Struts2則不依賴于Servlet API
          4)以為Struts1依賴于Servlet API這些Web元素,因此對Struts1的Action進行測試的時候是很困難的,需要借助與其他的測試工具,Struts2的Action可以象測試其他的一些Model層的Service類一樣進行測試
           5)Struts1的Action與View通過ActionForm或者其子類進行數據傳遞,雖然也有LazyValidationForm這樣的ActionForm的出現,但是,還是不能象其他層面那樣通過一個簡單的POJO進行數據傳遞,而Struts2將這樣的奢望變成了現實
           6)Struts1綁定了JSTL,為頁面的編寫帶來方便,Struts2整合了ONGL,也可以使用JSTL,因此,Struts2下的表達式語言更加強大

四、Struts2與WebWork對比

        Struts2實際上就是WebWork2.3,不過,Struts2還是與WebWork有少許的差別:
        1)Struts2不再支持內置IOC容器,改用Spring的IOC容器
        2)Struts2對于Webwork的一些Ajax的特性的標簽改用Dojo進行替換

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美怡红院视频一区二区三区 | 小早川怜子视频在线观看 | 北岛玲在线播放 | gayrb漫画免费入口 | 成人aaaa| 成人影院在线观看免费 | 免费免费啪视频在线观播放 | 水蜜臀 | 久久人妻少妇嫩草AV無碼 | 精品欧美一区二区在线观看欧美熟 | 亚洲欧美专区精品伊人久久 | 国产主播99 | 国产传媒天美果冻 | 国产成人精品在线 | 免费在线看a | 草啪啪| 日韩欧美三级视频 | 特黄特色大片免费高清视频 | 无遮挡免费h肉动漫在线观看 | 国产xxxxxx久色视频在 | 日本69av| 欧美色精品天天在线观看视频 | 情趣内衣在线观看 | 国产精品久久久久久久久久久搜索 | 99久久精品国产片久人 | 国产露脸对白刺激3p在线 | 天天舔天天干 | 美女吃jj| 日韩在线视频免费不卡一区 | fquer老师| 国产午夜精品福利 | 吃胸膜奶视频456 | 欧美一级久久久久久久大片 | 欧美大奶艳星 | 午夜国产在线 | 精品久久洲久久久久护士免费 | 日本噜噜影院 | 姐姐不~不可以动漫在线观看 | 亚洲欧美另类在线观看 | 亚洲乱亚洲乱妇41p 亚洲乱码一区二区三区国产精品 | 男人的天堂在线观看免费 |