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

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

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

一、SSH(Struts + Spring + Hibernate)

1、基本概念

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

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

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

2、Struts2

(1)基本概念

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

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

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

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

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

(4)Struts2的缺點(diǎn):

  • 校驗(yàn)較繁瑣,多字段出錯(cuò)返回不同。
  • 安全性太低
  • 獲取傳參時(shí)較麻煩

2、Spring

(1)基本概念

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

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

(2)spring的流程圖

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

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

是告知Struts2運(yùn)行時(shí)使用spring來(lái)管理對(duì)象,spring在其中主要做的就是注入實(shí)例,所有需要類(lèi)的實(shí)例都由spring管理。

(3)spring的優(yōu)點(diǎn)

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

(4)spring的缺點(diǎn)

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

3、Hibernate

(1)基本概念

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

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

(3)hibernate的優(yōu)點(diǎn)

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

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

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

(4)hibernate的缺點(diǎn)

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

二、SSM(Spring + SpringMVC + MyBatis)

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

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

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

1、Spring

詳細(xì)介紹見(jiàn)SSH中spring。

2、SpringMVC

(1)基本概念

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

(2)SpringMVC的優(yōu)點(diǎn)

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

(3)SpringMVC的缺點(diǎn)

  • servlet API耦合難以脫離容器獨(dú)立運(yùn)行
  • 太過(guò)于細(xì)分,開(kāi)發(fā)效率低

3、Mybatis

(1)基本概念

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

(2)mybatis的優(yōu)點(diǎn)

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

(3)mybatis的缺點(diǎn)

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

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

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

Spring Boot

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

三、Spring Boot

官方地址:Spring Boot

1、Spring Boot基本概念

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

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

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

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

(3)解決了spring的弊端

(4)代碼少了、配置文件少了、不需要對(duì)第三方框架煩惱了、項(xiàng)目精簡(jiǎn)了,對(duì)整個(gè)團(tuán)隊(duì)的開(kāi)發(fā)和維護(hù)來(lái)說(shuō),更大的節(jié)約了成本。

3、Spring Boot的缺點(diǎn)

(1)修復(fù)bug較慢,報(bào)錯(cuò)時(shí)難以定位。

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

4、Spring Boot總結(jié)

簡(jiǎn)單、快速、方便的搭建項(xiàng)目;對(duì)主流開(kāi)發(fā)框架的無(wú)配置集成;極大提高了開(kāi)發(fā)、部署效率。

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

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

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

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

(4)可以自動(dòng)配置spring

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

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

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

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

(3)Spring 是一個(gè)“引擎”

總結(jié)

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

相關(guān)文章

最新評(píng)論

西宁市| 天长市| 来凤县| 东平县| 和硕县| 安阳市| 阳西县| 牙克石市| 巴彦淖尔市| 石狮市| 阳泉市| 萨迦县| 阳西县| 泰安市| 高安市| 靖州| 顺昌县| 广平县| 翁源县| 永吉县| 汶川县| 马鞍山市| 三都| 平和县| 潞西市| 长子县| 广平县| 开封县| 巴里| 同德县| 鹤壁市| 和平县| 邵阳市| 武定县| 砚山县| 新竹县| 玛曲县| 黑河市| 万荣县| 玉屏| 镇坪县|