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

Java--SSH,SSM和Spring?Boot框架區(qū)別及優(yōu)缺點說明

 更新時間:2022年12月21日 14:57:17   作者:MinggeQingchun  
這篇文章主要介紹了Java--SSH,SSM和Spring?Boot框架區(qū)別及優(yōu)缺點說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

一、SSH(Struts + Spring + Hibernate)

1、基本概念

SSH框架是JAVA EE中三種框架所集成,分別是Struts,Spring,Hibernate框架所組成

集成SSH框架的系統(tǒng)從職責(zé)上分為(Struts2--控制;Spring--解耦;Hibernate--操作數(shù)據(jù)庫),以幫助開發(fā)人員在短期內(nèi)搭建結(jié)構(gòu)清晰、可服用好、維護方便的web應(yīng)用程序。

使用Struts作為系統(tǒng)的整體基礎(chǔ)框架,負責(zé)MVC的分離,在Struts框架的模型部分,控制業(yè)務(wù)跳轉(zhuǎn),利用Hibernate框架對持久層提供支持,Spring做管理,管理Struts和Hibernate。

2、Struts2

(1)基本概念

Struts2是一個基于MVC設(shè)計模式的web應(yīng)用框架,相當(dāng)于一個servlet,在MVC設(shè)計模式中,Struts2作為控制器(controller)來建立模型與視圖的數(shù)據(jù)交互。Struts2在Struts1融合webwork。struts2以webwork為核心,采用攔截器的機制來處理用戶的請求,這樣的設(shè)計使得業(yè)務(wù)邏輯控制器能夠與servletAPI完全脫離。

(2)Struts2框架的運行結(jié)構(gòu)

解析:客戶端發(fā)送請求(HttpServletRequest)到服務(wù)器,服務(wù)器接收到請求就先進入web.xml配置文件看看有沒有配置過濾器,發(fā)現(xiàn)有有Struts2的過濾器,然后找到struts.xml配置文件,struts.xml配置文件里定義一個action,然后就去找到action類,此類繼承ActionSupport接口,并且實現(xiàn)了execute()方法,返回一個字符串“success”給struts.xml配置文件,struts.xml配置文件的action會默認調(diào)用action類的execute()方法,result接收到返回的字符串,result就會調(diào)用你指定的jsp頁面將結(jié)果呈現(xiàn),最后響應(yīng)給客戶端。

(3)Struts2的優(yōu)勢

  • 實現(xiàn)了MVC模式,層次結(jié)構(gòu)清晰,使程序員只需要關(guān)注業(yè)務(wù)邏輯的實現(xiàn)。
  • 豐富的標簽庫,大大提高了開發(fā)的效率。
  • Struts2提供豐富的攔截器實現(xiàn)。
  • 通過配置文件,就可以掌握整個系統(tǒng)各個部分之間的關(guān)系。
  • 異常處理機制,只需在配置文件中配置異常的映射,即可對異常做響應(yīng)的處理。
  • Struts2的可擴展性高。
  • 面向切面編程的思想在Struts2中也有了很好的體現(xiàn)。
  • 體現(xiàn)了攔截器的使用,攔截器是一個一個的小功能模塊,用戶可以將這些攔截器合并成一個大的攔截器,這個合成的攔截器就像單獨的攔截器一樣,只要將它配置到一個Action中就可以。

(4)Struts2的缺點:

  • 校驗較繁瑣,多字段出錯返回不同。
  • 安全性太低
  • 獲取傳參時較麻煩

2、Spring

(1)基本概念

Spring是一個開源開發(fā)框架,是一個輕量級控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架。

spring主要用來開發(fā)java應(yīng)用,構(gòu)建J2EE平臺的web應(yīng)用。其核心就是提供一種新的機制管理業(yè)務(wù)對象及其依賴關(guān)系。

(2)spring的流程圖

解析:上面是在Struts結(jié)構(gòu)圖的基礎(chǔ)上加入了spring流程圖,在web.xml配置文件中加入了spring的監(jiān)聽器,在struts.xml配置文件中添加

<constant name="struts.objectFactory" value="spring" />

是告知Struts2運行時使用spring來管理對象,spring在其中主要做的就是注入實例,所有需要類的實例都由spring管理。

(3)spring的優(yōu)點

  • 容器:spring是一個容器,包含并管理對象的生命周期和配置??梢耘渲妹總€bean如何被創(chuàng)建,基于一個可配置原型prototype,你的bean可以創(chuàng)建一個單獨的實例或者每次需要時都生成一個新的實例。
  • 支持AOP:spring提供對AOP的支持,它允許將一些通用任務(wù),如安全、事物、日志等進行集中式處理,從而提高了程序的復(fù)用性。
  • 輕量級框架:spring是輕量級框架,其基本的版本大約2M。
  • 控制反轉(zhuǎn):spring通過控制反轉(zhuǎn)實現(xiàn)松耦合。對象們給他們依賴,而不是對象本身,方便解耦,簡化開發(fā)。
  • 方便程序測試:spring提供了Junit4的支持,可以通過注解方便的測試spring程序。
  • 降低java EE API的使用難度:spring對java EE開發(fā)中非常難用的一些API(比如JDBC),都提供了封裝,使這些API應(yīng)用難度大大降低。
  • 方便集成各種優(yōu)秀框架:spring內(nèi)部提供了對各種優(yōu)秀框架(如Struts、mybatis)的直接支持。
  • 支持聲明式事務(wù)處理:只需要通過配置就可以完成對事務(wù)的管理,而無須手動編程。

(4)spring的缺點

  • 依賴反射,反射影響進程。
  • 太過于依賴設(shè)計模式。
  • 控制器過于靈活。
  • 不支持分布式應(yīng)用。

3、Hibernate

(1)基本概念

Hibernate是一個開放源代碼的對象關(guān)系映射框架,它對JDBC進行了非常輕量級的對象封裝,它將POJO與數(shù)據(jù)庫表建立映射關(guān)系,是一個全自動的orm框架,hibernate可以自動生成SQL語句,自動執(zhí)行,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。 Hibernate可以應(yīng)用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應(yīng)用中使用,最具革命意義的是,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。

(2)hibernate的核心構(gòu)成和執(zhí)行流程圖

(3)hibernate的優(yōu)點

  • 對JDBC訪問數(shù)據(jù)庫的代碼做了封裝,大大簡化了數(shù)據(jù)訪問層繁瑣的重復(fù)性代碼。
  • Hibernate是一個優(yōu)秀的ORM實現(xiàn)。他很大程度的簡化DAO層的編碼工作,將軟件開發(fā)人員從大量相同的數(shù)據(jù)持久層相關(guān)編程工作中解放出來,使開發(fā)更對象化了。
  • 透明持久化(persistent)帶有持久化狀態(tài)的、具有業(yè)務(wù)功能的單線程對象,此對象生存期很短。這些對象可能是普通的javabeans/POJO,(POJO概念,plain ordinary java object,簡單的java對象,可以簡單理解為簡單的實體類entity。)這個對象沒有實現(xiàn)第三方框架或接口,唯一特殊的是他們正與session關(guān)聯(lián)。一旦這個session被關(guān)閉,這些對象就會脫離持久化狀態(tài),這樣就可被應(yīng)用程序的任何層自由使用。
  • 事務(wù)transaction應(yīng)用程序用來指定原子操作單元范圍的對象,它是單線程的,生命周期很短。它通過抽象將應(yīng)用從底層具體的JDBC、JTA(java transaction API,JTA允許應(yīng)用程序執(zhí)行分布式事務(wù)處理,在兩個或多個網(wǎng)絡(luò)計算機資源訪問并且更新數(shù)據(jù),JDBC驅(qū)動程序的JTA支持極大地增強了數(shù)據(jù)訪問能力)以及CORBA(公用對象請求代理程序體系結(jié)構(gòu),common object request broker architecture,簡而言之,CORB允許應(yīng)用程序和其它的應(yīng)用程序通訊)事務(wù)隔離開。某些情況下,一個session之內(nèi)可能包含多個transaction對象,事務(wù)邊界的開啟與關(guān)閉時必不可少的。
  • 它沒有侵入性,是輕量級框架。
  • 移植性好,支持各種數(shù)據(jù)庫,如果換個數(shù)據(jù)庫只要在配置文件中變換配置就可以了,不用改變hibernate代碼。
  • 緩存機制,提供一級緩存和二級緩存。

一級緩存:是session級別的緩存,一個session做了一個查詢操作,它會把這個操作的結(jié)果放到一級緩存中,如果短時間內(nèi)這個session又做了同一個操作,那么hibernate直接從一級緩存中拿出,而不會去連數(shù)據(jù)庫取數(shù)據(jù)。

二級緩存:是sessionFactory級別的緩存,就是查詢的時候會把結(jié)果緩存到二級緩存中,如果同一個sessionFactory創(chuàng)建的某個session執(zhí)行了相同的操作,hibernate就會從二級緩存中拿出結(jié)果,而不會再去連接數(shù)據(jù)庫。

(4)hibernate的缺點

  • 持久層封裝過于完整,導(dǎo)致開發(fā)人員無法對SQL進行優(yōu)化,無法靈活應(yīng)用原生SQL。
  • 批量數(shù)據(jù)處理的時候較為弱勢。
  • 框架中使用ORM原則,導(dǎo)致配置過于復(fù)雜,遇到大項目,維護問題不斷。

二、SSM(Spring + SpringMVC + MyBatis)

SSM架構(gòu),是三層結(jié)合所成的框架,分別是Spring、SpringMVC、MyBatis所組成。

Spring依賴注入來管理各層,面向切面編程管理事務(wù),日志和權(quán)限。SpringMVC代表了model、view、controller接收外部請求,進行開發(fā)和處理。

mybatis是基于jdbc的框架,主要用來操作數(shù)據(jù)庫,并且將業(yè)務(wù)實體和數(shù)據(jù)表聯(lián)系起來。

1、Spring

詳細介紹見SSH中spring。

2、SpringMVC

(1)基本概念

屬于spring框架的一部分,用來簡化MVC架構(gòu)的web應(yīng)用程序開發(fā)。

(2)SpringMVC的優(yōu)點

  • 擁有強大的靈活性,非侵入性和可配置性
  • 提供了一個前端控制器dispatcherServlet,開發(fā)者無需額外開發(fā)控制器對象
  • 分工明確,包括控制器、驗證器、命令對象、模型對象、處理程序映射視圖解析器,每一個功能實現(xiàn)由一個專門的對象負責(zé)完成
  • 可以自動綁定用戶輸入,并正確的轉(zhuǎn)換數(shù)據(jù)類型
  • 可重用的業(yè)務(wù)代碼:可以使用現(xiàn)有的業(yè)務(wù)對象作為命令或表單對象,而不需要去擴展某個特定框架的基類。

(3)SpringMVC的缺點

  • servlet API耦合難以脫離容器獨立運行
  • 太過于細分,開發(fā)效率低

3、Mybatis

(1)基本概念

mybatis是一個簡化和實現(xiàn)了java數(shù)據(jù)持久層的開源框架,它抽象了大量的JDBC冗余代碼,并提供了一個簡單易用的API和數(shù)據(jù)庫交互。

(2)mybatis的優(yōu)點

  • 與JDBC相比,減少了50%以上的代碼量。
  • mybatis是最簡單的持久化框架,小巧并且簡單易學(xué)。
  • mybatis靈活,不會對應(yīng)用程序或者數(shù)據(jù)庫的限售設(shè)計強加任何影響,SQL寫在XML里,從程序代碼中徹底分離,降低耦合度,便于統(tǒng)一管理和優(yōu)化,可重用。
  • 提供XML標簽,支持編寫動態(tài)SQL語句(XML中使用if,else)。
  • 提供映射標簽,支持對象與數(shù)據(jù)庫的ORM字段關(guān)系映射(在XML中配置映射關(guān)系,也可以使用注解)

(3)mybatis的缺點

  • SQL語句的編寫工作量較大,對開發(fā)人員的SQL語句編寫有一定的水平要求。
  • SQL語句過于依賴數(shù)據(jù)庫,不能隨意更換數(shù)據(jù)庫。
  • 拼接復(fù)雜SQL語句時不靈活。

最受Java開發(fā)者喜好的框架當(dāng)屬Spring,Spring也成為了在Java EE開發(fā)中真正意義上的標準,但是隨著新技術(shù)的發(fā)展,腳本語言大行其道的時代(Node JS,Ruby,Groovy,Scala等),Java EE使用Spring逐漸變得笨重起來,大量的XML文件存在與項目中,繁瑣的配置,整合第三方框架的配置問題,低下的開發(fā)效率和部署效率等等問題。

這些問題在不斷的社區(qū)反饋下,Spring團隊也開發(fā)出了相應(yīng)的框架:Spring Boot。Spring Boot可以說是至少近5年來Spring乃至整個Java社區(qū)最有影響力的項目之一,也被人看作是:Java EE開發(fā)的顛覆者!

Spring Boot

是一個全新框架,使用來簡化Spring的初始搭建和開發(fā)過程,使用了特定的方式來進行配置,讓開發(fā)人員不在需要定義樣板化的配置。此框架不需要配置xml,依賴于像MAVEN這樣的構(gòu)建系統(tǒng)。

三、Spring Boot

官方地址:Spring Boot

1、Spring Boot基本概念

springboot是一個全新的框架,簡化Spring的初始搭建和開發(fā)過程,使用了特定的方式來進行配置,讓開發(fā)人員不再需要定義樣板化的配置。此框架不需要配置xml,依賴于maven這樣的構(gòu)建系統(tǒng)。

2、Spring Boot的優(yōu)點

(1)減少了大量的開發(fā)時間并提高了生產(chǎn)力

(2)避免了編寫大量的樣板代碼,注釋和XML配置

(3)解決了spring的弊端

(4)代碼少了、配置文件少了、不需要對第三方框架煩惱了、項目精簡了,對整個團隊的開發(fā)和維護來說,更大的節(jié)約了成本。

3、Spring Boot的缺點

(1)修復(fù)bug較慢,報錯時難以定位。

(2)集成度較高,不易于了解底層。

4、Spring Boot總結(jié)

簡單、快速、方便的搭建項目;對主流開發(fā)框架的無配置集成;極大提高了開發(fā)、部署效率。

5、Spring Boot和Spring的區(qū)別

(1)springboot可以建立獨立的spring應(yīng)用程序。

(2)內(nèi)嵌了如tomcat,Jetty和Undertow這樣的容器,也就是說可以直接跑起來,用不著再做部署工作。

(3)無需再像spring那樣寫一堆繁瑣的XML配置文件

(4)可以自動配置spring

(5)提供的POM可以簡化maven的配置

6、Spring Boot和SpringMVC的區(qū)別

(1)SpringMVC是基于spring的一個MVC框架。

(2)Spring Boot的基于spring的條件注冊的一套快速開發(fā)整合包。

(3)Spring 是一個“引擎”

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring?Security?OAuth?Client配置加載源碼解析

    Spring?Security?OAuth?Client配置加載源碼解析

    這篇文章主要為大家介紹了Spring?Security?OAuth?Client配置加載源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • 關(guān)于java連接池/線程池/內(nèi)存池/進程池等匯總分析

    關(guān)于java連接池/線程池/內(nèi)存池/進程池等匯總分析

    這篇文章主要介紹了關(guān)于java連接池/線程池/內(nèi)存池/進程池等匯總分析,本文將介紹池技術(shù)的由來、原理、優(yōu)缺點以及常見的池技術(shù)類型,需要的朋友可以參考下
    2023-04-04
  • 詳解Spring Cloud Eureka多網(wǎng)卡配置總結(jié)

    詳解Spring Cloud Eureka多網(wǎng)卡配置總結(jié)

    本篇文章主要介紹了詳解Spring Cloud Eureka多網(wǎng)卡配置總結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • Java畢業(yè)設(shè)計實戰(zhàn)之教室預(yù)訂管理系統(tǒng)的實現(xiàn)

    Java畢業(yè)設(shè)計實戰(zhàn)之教室預(yù)訂管理系統(tǒng)的實現(xiàn)

    這是一個使用了java+SpringBoot+Maven+Vue+mysql開發(fā)的教室預(yù)訂管理系統(tǒng),是一個畢業(yè)設(shè)計的實戰(zhàn)練習(xí),具有教室預(yù)訂管理該有的所有功能,感興趣的朋友快來看看吧
    2022-02-02
  • mybatis-plus與mybatis共存的實現(xiàn)

    mybatis-plus與mybatis共存的實現(xiàn)

    本文主要介紹了mybatis-plus與mybatis共存的實現(xiàn),文中根據(jù)實例編碼詳細介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 淺談在頁面中獲取到ModelAndView綁定的值方法

    淺談在頁面中獲取到ModelAndView綁定的值方法

    下面小編就為大家分享一篇淺談在頁面中獲取到ModelAndView綁定的值方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • spring-boot List轉(zhuǎn)Page的方法步驟

    spring-boot List轉(zhuǎn)Page的方法步驟

    這篇文章主要介紹了spring-boot List轉(zhuǎn)Page的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • java報錯非法的前向引用問題

    java報錯非法的前向引用問題

    這篇文章主要介紹了java報錯非法的前向引用問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Java JTable 實現(xiàn)日歷的示例

    Java JTable 實現(xiàn)日歷的示例

    這篇文章主要介紹了Java JTable 實現(xiàn)日歷的示例,幫助大家更好的理解和學(xué)習(xí)Java jtable的使用方法,感興趣的朋友可以了解下
    2020-10-10
  • 詳解java中的Collections類

    詳解java中的Collections類

    這篇文章主要為大家詳細介紹了java中的Collections類,感興趣的小伙伴們可以參考一下
    2016-07-07

最新評論

信宜市| 土默特左旗| 商洛市| 双桥区| 集贤县| 南昌县| 通榆县| 辽宁省| 广德县| 襄城县| 吴桥县| 泸定县| 微博| 罗甸县| 隆子县| 卢氏县| 西林县| 河间市| 五河县| 万盛区| 巫山县| 龙陵县| 会同县| 舟曲县| 凤阳县| 太湖县| 灵石县| 梅河口市| 上虞市| 青岛市| 金溪县| 万安县| 邵阳县| 韶关市| 余姚市| 绥化市| 阿拉善左旗| 怀远县| 阿瓦提县| 开远市| 临泉县|