一開始比較流行的web" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運營 > 盤點下那些用過的Java web框架

盤點下那些用過的Java web框架

時間:2023-09-01 00:36:01 | 來源:網(wǎng)站運營

時間:2023-09-01 00:36:01 來源:網(wǎng)站運營

盤點下那些用過的Java web框架:本文來盤點下一些用過的Java web網(wǎng)站開發(fā)技術(shù),講講技術(shù)和組件的演變過程。從中大家就能知道為什么現(xiàn)在要用框架開發(fā)網(wǎng)站,以及為什么大多數(shù)公司會選spring boot框架。

一開始比較流行的web網(wǎng)站開發(fā)技術(shù)是asp,java層面的是jsp,這兩者其實差別不大。

JSP不能理解成是框架,而是一種技術(shù)。JSP里很神奇,里面可以包含HTML頁面代碼和Java代碼。也就說說,如果用jsp開發(fā)web頁面的時候,前后端是不分離的,全在一個jsp文件里,所以當(dāng)時只要會用jsp,那么一定能稱得上“全棧開發(fā)工程師”。

一般一個JSP文件會對應(yīng)一個web頁面,一個jsp文件會包含如下的內(nèi)容。

1 開頭會用JS等腳本,判斷該頁面是否有請求到達,如果有,還得分,對不同頁面挑過來的請求要做不同的處理,所以一個jsp文件的開頭,包含很長一段if else語句來處理請求,這是常有的事。

2 然后會用HTML代碼來渲染頁面,當(dāng)然其中還會和css,div等元素打交道。

3 頁面里如果需要展示從數(shù)據(jù)庫里得到的數(shù)據(jù),那么就需要用java代碼現(xiàn)連數(shù)據(jù)庫并得到數(shù)據(jù),所以一個jsp頁面里出現(xiàn)大量JDBC對象也是正常的。

4 同樣道理,如果頁面里需要展示其他業(yè)務(wù)數(shù)據(jù),也需要加入java代碼。

所以一般一個jsp文件是個包含前端、js腳本和java語言的大雜燴,這樣開發(fā)起來就不容易,如果遇到業(yè)務(wù)調(diào)整,要維護對應(yīng)的jsp代碼更難。

由于JSP里包含的要素實在太多,后面就改成了jsp+servlet+javabean的模式。

在這模式中,會把JSP頁面里負責(zé)跳轉(zhuǎn)的代碼放入servlet,再把一些java通用性的代碼,比如連數(shù)據(jù)庫或業(yè)務(wù)方法,放入javabean,這其實已經(jīng)引入了MVC模式。

和單純的JSP相比,這套模式僅僅是拆分了jsp文件,但具體的調(diào)轉(zhuǎn)頁面動作以及傳輸參數(shù)和請求傳遞等細節(jié),依然需要程序員來編寫。即程序員不僅要實現(xiàn)web項目里的業(yè)務(wù),更需要實現(xiàn)頁面間跳轉(zhuǎn)和數(shù)據(jù)傳輸?shù)鹊讓蛹毠?jié),這對程序員的要求是比較高的。

后來在此基礎(chǔ)上引入了Struts,這是一個比較成熟的web框架。

當(dāng)時Struts框架展現(xiàn)出了如下的優(yōu)勢。

1 封裝了頁面跳轉(zhuǎn)等的web事件實現(xiàn)細節(jié),比如在jsp里,程序員調(diào)用跳轉(zhuǎn)方法,并傳入?yún)?shù)以實現(xiàn)跳轉(zhuǎn),而跳轉(zhuǎn)目標所對應(yīng)的jsp還得去接收。但在Struts框架里,程序員只要指定向哪里跳轉(zhuǎn)即可,具體的跳轉(zhuǎn)動作Struts框架能自動實現(xiàn)。

2 能用xml等配置文件,配置通用性參數(shù)。比如請求和對應(yīng)頁面的跳轉(zhuǎn)規(guī)則,或者是數(shù)據(jù)庫連接參數(shù),都可以配到xml里。

由于Struts能分擔(dān)些頁面跳轉(zhuǎn)等web動作的實現(xiàn)過程,所以Struts也流行了一陣。從中大家也能體會到框架的含義:用底層實現(xiàn)的方式封裝了通用性的動作,這樣程序員能通過使用api或編寫配置等輕便的方式實現(xiàn)Web網(wǎng)站方面的功能。

但是Struts框架也有“侵入性強”的問題,比如要開發(fā)一個實現(xiàn)業(yè)務(wù)功能的模塊,在模塊里一定能看到Struts的痕跡,比如struts動作等。用專業(yè)的話說:基于Struts框架的Web項目,業(yè)務(wù)和Struts耦合度太緊密。比如要升級Struts的支持包,或者要更改原有業(yè)務(wù)的web跳轉(zhuǎn)方式,那么一定得用額外的代碼來維護Struts相關(guān)的模塊。

我們知道Spring框架的優(yōu)勢是依賴注入,即能降低模塊間的耦合度,所以后來在單純Struts框架上引入了SSH框架,用Struts框架里的web跳轉(zhuǎn)動作和web實現(xiàn)細節(jié),用Spring來管理模塊,讓模塊間低耦合好維護,再用Hibernate來實現(xiàn)ORM映射。

SSH框架和Struts框架的進步還在于引入了ORM。之前程序員在實現(xiàn)業(yè)務(wù)時需要自己關(guān)注數(shù)據(jù)庫,比如用JDBC得到連接,再用sql語句去做增刪改查,然后再自己得到結(jié)果,再展示數(shù)據(jù)庫結(jié)果到頁面上。也就是說,業(yè)務(wù)代碼和數(shù)據(jù)庫相關(guān)的代碼關(guān)聯(lián)性很強,這就要求程序員在開發(fā)時,需要了解數(shù)據(jù)庫的表名和字段名等細節(jié)。

為了進一步解開業(yè)務(wù)模塊和數(shù)據(jù)庫之間的關(guān)聯(lián),SSH框架里的Hibernate,可以用來把數(shù)據(jù)庫里的表,映射成Java對象,這樣程序員從數(shù)據(jù)庫里得到的數(shù)據(jù)會被Hibernate,根據(jù)配置文件等定義,自動轉(zhuǎn)換成List等類型的Java類,這樣程序員就可以用操作Java對象的方式來操作數(shù)據(jù)庫。

這里姑且不論這種ORM映射做法的必要性,但這進一步降低了程序員開發(fā)Web項目的難度,程序員只需要懂java,就能開發(fā)web網(wǎng)站,而數(shù)據(jù)庫相關(guān)細節(jié)和動作都能被Hibernate等ORM組件屏蔽。

由于Hibernate比較重,所以SSH框架后來被替換成SSM。M是Mybatis,現(xiàn)在SSM框架還在用。

SSM框架由于能很好地向程序員屏蔽頁面跳轉(zhuǎn)等動作,能讓程序員很便捷地把業(yè)務(wù)數(shù)據(jù)映射到數(shù)據(jù)庫里,所以能進一步降低程序員開發(fā)Web項目的難度,同時由于把業(yè)務(wù)、數(shù)據(jù)庫和前端支持等模塊拆分到不同的文件里,所以基于SSM框架的項目也比較好維護。

但SSM(或SSH)框架有如下兩個問題。

1 配置文件太多太復(fù)雜。比如要連個數(shù)據(jù)庫,得寫xml,要實現(xiàn)個事務(wù),也得用,要整合個dubbo,也得寫。所以一個項目開發(fā)下來,xml配置文件會有很多,而且每個配置文件里有幾百行代碼,都算正常。

2 SSM框架的代碼,部署時需要打成war包,然后部署到tomcat等服務(wù)器里。當(dāng)然之前的框架也是這樣干的,不過Spring Boot框架在這方面能省事不少。

現(xiàn)在主流的Web框架是Spring Boot,里面是通過注解替代了配置文件,所以哪怕在項目里整合了事務(wù),dubbo或者其他組件,都可以用簡單的注解來實現(xiàn),而無需再寫長長的配置文件。

而且由于Spring boot框架內(nèi)嵌tomcat服務(wù)器,所以發(fā)布時,只要把項目打成jar包,然后用java命令啟動即可。此外,之前框架里封裝的web底層實現(xiàn)細節(jié),這個框架也有。

講到這里大家其實可以看到,用java開發(fā)網(wǎng)站,用框架其實能幫程序員省太多的事情。比如造房子,不用框架的建筑方式是,從一磚一瓦自己搭建,中間自己再鋪設(shè)水電煤等管道。如果是用框架,就直接用現(xiàn)成的建筑模塊單元組裝成房子。

其實用框架還真是程序員,或者是軟件公司自己的選擇,客戶方才不管。只要他們提出的需求能實現(xiàn),哪怕是用asp實現(xiàn)他們也沒意見,但這樣的話,軟件公司就無法用框架提供的web和數(shù)據(jù)庫基礎(chǔ)設(shè)施等便利,什么都得從頭開始,一方面進度會慢,導(dǎo)致成本高,一方面維護難,提升后期風(fēng)險。

說到Web框架,本人當(dāng)年出的書里,還詳細講述了現(xiàn)在看上去的古董框架,比如jsp+servlet+javabean,以及struts框架。

但現(xiàn)在的框架是Spring Boot,如果大家要系統(tǒng)學(xué),我也出了一本書。

由于框架已經(jīng)幫程序員封裝了太多的底層細節(jié),所以大家能比較容易地達到“用框架開發(fā)增刪改查業(yè)務(wù)“的水準,但這僅僅是Java初級開發(fā)干的活。

如果再要往上發(fā)展,絕不是去深挖框架的底層細節(jié),這種技能應(yīng)付面試也就算了,而應(yīng)該去了解分布式組件或微服務(wù)框架,并能實現(xiàn)高并發(fā)的功能。如果再要向上發(fā)展,就要去積累通過框架+組件設(shè)計應(yīng)對高并發(fā)場景的項目實施框架,同時再去積累解決這過程中常見問題的經(jīng)驗。如果把這塊做好了,升級個Java架構(gòu)問題都不大了,按現(xiàn)在的行情,年入60w應(yīng)該都算毛毛雨了。

本文講解了Web框架的發(fā)展歷程,并在此基礎(chǔ)上解釋了框架對web開發(fā)的作用。本文全文原創(chuàng),用時將近3小時,如果如果大家感覺可以,請多多點贊。

關(guān)鍵詞:盤點

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點擊下載Chrome瀏覽器
關(guān)閉