最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Struts1和struts2的區(qū)別_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

 更新時(shí)間:2017年09月01日 11:13:21   作者:xiohao  
這篇文章主要為大家詳細(xì)介紹了Struts1和struts2的區(qū)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

Struts2其實(shí)并不是一個(gè)陌生的Web框架,Struts2是以Webwork的設(shè)計(jì)思想為核心,吸收了Struts1的優(yōu)點(diǎn),因此,可以認(rèn)為Struts2是Struts1和Webwork結(jié)合的產(chǎn)物。

簡(jiǎn)單來(lái)說(shuō)二者的區(qū)別是:   

     一個(gè)是Stuts1 ,一個(gè)是Stuts2,這是最大的區(qū)別,技術(shù)方面,Stuts1有個(gè)核心控制器,但是只提供了一個(gè)接口,也就是execute,還要配置actionform之類(lèi)的,很麻煩,所以依賴(lài)性比較強(qiáng);而Stuts2是針對(duì)攔截器開(kāi)發(fā)的,也就是所謂的AOP思想,可以配置多個(gè)action,用起來(lái)比較方便,但是因?yàn)檎?qǐng)求之前的攔截器有一些注入的操作,速度相對(duì)Stuts1來(lái)說(shuō)慢一點(diǎn)。

一、MVC簡(jiǎn)介

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

      MVC包含三個(gè)基礎(chǔ)部分:Model、View和Controller,這三個(gè)部分以最小的耦合協(xié)同工作,以增加程序的可擴(kuò)展性和可維護(hù)性。各個(gè)部分的實(shí)現(xiàn)技術(shù)可以總結(jié)如下:

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

概括起來(lái)MVC的優(yōu)點(diǎn)主要有一下方面:

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

         對(duì)于MVC的概念性的東西也就廢話(huà)到此,其關(guān)鍵的地方就是各個(gè)模塊的實(shí)現(xiàn)技術(shù)分別是什么。

二、Struts2簡(jiǎn)介

        Struts2既然是從Struts1發(fā)展而來(lái),但實(shí)際上Struts2與Struts1在框架的設(shè)計(jì)思想上面還是有很大的區(qū)別,Struts2是以WebWork的設(shè)計(jì)思想為核心,為什么Struts2不沿用Struts1的設(shè)計(jì)思想,畢竟Struts1在目前的企業(yè)應(yīng)用中還是有非常大的市場(chǎng)在的,那么,來(lái)看下Struts1的一些缺點(diǎn)吧:

        1)支持的表現(xiàn)層技術(shù)單一
        2)與Servlet API嚴(yán)重耦合,這點(diǎn)可以從Action的Execute的方法聲明里面就可以看的出來(lái)
        3)代碼依賴(lài)Struts1 API,有侵入性,這點(diǎn)可以從寫(xiě)Action類(lèi)和FormBean的時(shí)候看的出來(lái),Action必須實(shí)現(xiàn)Struts的Action類(lèi)

        而Struts2之所以以WebWork的設(shè)計(jì)思想為其核心,一點(diǎn)就是最近WebWork的上升勢(shì)頭,再就是WebWork沒(méi)有Struts1上面的那些缺點(diǎn),更符合MVC的設(shè)計(jì)思想,也更利于代碼的復(fù)用。

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

        Struts2的簡(jiǎn)單處理流程如下:

        1)瀏覽器發(fā)送請(qǐng)求
        2)中心處理器根據(jù)struts.xml文件查找對(duì)應(yīng)的處理請(qǐng)求的Action類(lèi)
        3)WebWork的攔截器鏈自動(dòng)對(duì)請(qǐng)求應(yīng)用通用功能,例如:WorkFlow、Validation等功能
        4)如果Struts.xml文件中配置Method參數(shù),則調(diào)用Method參數(shù)對(duì)應(yīng)的Action類(lèi)中的Method方法,否則調(diào)用通用的Execute方法來(lái)處理用戶(hù)請(qǐng)求
         5)將Action類(lèi)中的對(duì)應(yīng)方法返回的結(jié)果響應(yīng)給瀏覽器

三、Struts2與Struts1對(duì)比

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

四、Struts2與WebWork對(duì)比

        Struts2實(shí)際上就是WebWork2.3,不過(guò),Struts2還是與WebWork有少許的差別:
        1)Struts2不再支持內(nèi)置IOC容器,改用Spring的IOC容器
        2)Struts2對(duì)于Webwork的一些Ajax的特性的標(biāo)簽改用Dojo進(jìn)行替換

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java8快速實(shí)現(xiàn)List轉(zhuǎn)map 、分組、過(guò)濾等操作

    java8快速實(shí)現(xiàn)List轉(zhuǎn)map 、分組、過(guò)濾等操作

    這篇文章主要介紹了java8快速實(shí)現(xiàn)List轉(zhuǎn)map 、分組、過(guò)濾等操作,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • springboot內(nèi)置tomcat之NIO處理流程一覽

    springboot內(nèi)置tomcat之NIO處理流程一覽

    這篇文章主要介紹了springboot內(nèi)置tomcat之NIO處理流程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Spring MVC實(shí)現(xiàn)文件上傳和下載

    Spring MVC實(shí)現(xiàn)文件上傳和下載

    這篇文章主要為大家詳細(xì)介紹了Spring MVC實(shí)現(xiàn)文件上傳和下載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • SpringBoot使用過(guò)濾器、攔截器和監(jiān)聽(tīng)器的案例代碼(Springboot搭建java項(xiàng)目)

    SpringBoot使用過(guò)濾器、攔截器和監(jiān)聽(tīng)器的案例代碼(Springboot搭建java項(xiàng)目)

    這篇文章主要介紹了SpringBoot使用過(guò)濾器、攔截器和監(jiān)聽(tīng)器(Springboot搭建java項(xiàng)目),本文是基于Springboot搭建java項(xiàng)目,結(jié)合案例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02
  • Java FTPClient連接池的實(shí)現(xiàn)

    Java FTPClient連接池的實(shí)現(xiàn)

    這篇文章主要介紹了Java FTPClient連接池的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • 淺談Java8的特性之Optional類(lèi)

    淺談Java8的特性之Optional類(lèi)

    這篇文章主要介紹了淺談Java8的特性之Optional類(lèi),Optional類(lèi)是 Java 8 引入的一個(gè)很有趣的特性,Optional 類(lèi)是一個(gè)可以為null的容器對(duì)象,它主要解決的問(wèn)題是臭名昭著的空指針異常,需要的朋友可以參考下
    2023-08-08
  • 用StopWatch優(yōu)雅替代currentTimeMillis計(jì)算程序執(zhí)行耗時(shí)

    用StopWatch優(yōu)雅替代currentTimeMillis計(jì)算程序執(zhí)行耗時(shí)

    別再用System.currentTimeMillis()計(jì)算程序執(zhí)行耗時(shí)了,擁抱StopWatch優(yōu)雅來(lái)優(yōu)雅的計(jì)算,代碼更簡(jiǎn)潔效率更高,本文帶你了解StopWatch的使用
    2021-09-09
  • Java8新特性之Stream使用詳解

    Java8新特性之Stream使用詳解

    這篇文章主要介紹了Java8新特性之Stream使用詳解,流是用來(lái)處理集合中的數(shù)據(jù),以聲明的形式操作集合,它就像SQL語(yǔ)句,我們只需告訴流需要對(duì)集合進(jìn)行什么操作,它就會(huì)自動(dòng)進(jìn)行操作,并將執(zhí)行結(jié)果交給你,無(wú)需我們自己手寫(xiě)代碼,需要的朋友可以參考下
    2023-08-08
  • Apache CXF如何把wsdl生成java代碼

    Apache CXF如何把wsdl生成java代碼

    這篇文章主要介紹了Apache CXF如何把wsdl生成java代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 有關(guān)Java中的BeanInfo介紹

    有關(guān)Java中的BeanInfo介紹

    Java的BeanInfo在工作中并不怎么用到,我也是在學(xué)習(xí)spring源碼的時(shí)候,發(fā)現(xiàn)SpringBoot啟動(dòng)時(shí)候會(huì)設(shè)置一個(gè)屬叫"spring.beaninfo.ignore",網(wǎng)上一些地方說(shuō)這個(gè)配置的意思是是否跳過(guò)java BeanInfo的搜索,但是BeanInfo又是什么呢?本文我們將對(duì)此做一個(gè)詳細(xì)介紹
    2021-09-09

最新評(píng)論

凤山县| 荣成市| 南丰县| 府谷县| 玉山县| 安图县| 漳浦县| 乌审旗| 白河县| 凤庆县| 玉龙| 承德县| 通化县| 肥乡县| 贵南县| 花莲市| 灵武市| 留坝县| 公主岭市| 陈巴尔虎旗| 永清县| 瓦房店市| 清水县| 景德镇市| 库尔勒市| 黔南| 永城市| 丰县| 筠连县| 分宜县| 交城县| 宜兰市| 霍林郭勒市| 安泽县| 呈贡县| 台南县| 营口市| 南汇区| 陆良县| 定日县| 阿合奇县|