開發 Java 網頁主流框架

6年前 (2017-10-19) Yosheng 程式設計 0評論 已收錄 5827℃

本篇主要說明為什麼要使用框架,以及目前市場上常見的開發架構,順便紀錄當時學習開發 Java 開發 API 遇到的各種困惑,希望藉由此篇文章弄懂概念,若有不對的地方還請留言賜教。

市面上常見的 Java 框架很多,諸如目前最火熱的 Spring Cloud 或 Spring boot ,又或者是傳統常見的 SSH 或者 SSM ,這些東西到底是什麼?下述讓我們來逐一說明吧!

對於框架的比較可以先參考 Java Web層框架比較—— JSF、Spring MVC、Stripes、Struts 2、Tapestry和Wicket 不過這篇文章距今也有段時間,目前 Java 世界中還是以 Spring 作為領頭羊,後續也將以 Spring boot 進行開發,不過還是先讓我們理解一切整個發展的歷史和架構囉!

三層結構


傳統 Java Web應用程序是採用JSP+Servlet+Javabean來實現的,這種模式實現了最基本的MVC分層,使的程序結構分為幾層,有負責前臺展示的 JSP、負責流程邏輯控制的Servlet以及負責數據封裝的Javabean。但是這種結構仍然存在問題:如JSP頁面中需要使用符號嵌入很多的 Java代碼,造成頁面結構混亂,Servlet 和 Javabean 負責了大量的跳轉和運算工作,耦合緊密,程序複用度低等等。因此才會發展出下列的結構:

SSH ( Struts + Spring + Hibernate )

Struts(表示層 )+ Spring(業務層)+ Hibernate(持久層)

Struts:主要技術是Servlet 和Jsp.Struts的MVC設計模式能夠使我們的邏輯變得非常清晰,讓程序變得層次分明,接收請求,分發請求。
Spring:是一個整合的框架,提供了管理業務對象的一致化方法,而且鼓舞對接口編程而不是對類編程,這樣在非常大程度上松解了耦合,能夠很好地黏合表示層與持久層,主要用於AOP和IoC。
Hibernate:它只負責與關係數據庫的操作,提供全面的面向對象的資料庫操作,對JDBC進行了很輕量級的封裝。
在 MVC框架 中,Struts屬於VC層次,負責界面表現,負責MVC關係的分發。
(View:沿用JSP,HTTP,Form,Tag,Resourse ;Controller:ActionServlet,struts-config.xml,Action)
參考:

SSM ( Spring MVC + Spring + Mybatis )

Spring MVC(表示層 )+ Spring(業務層)+ Mybatis(持久層)

Spring MVC:屬於SpringFrameWork的後續產品,分離了控制器、模型對象、分派器以及處理程序對象的角色,這種分離讓它們更容易進行開發。

Spring:是一個輕量級的Java開發框架,它是為了解決企業應用開發的複雜性而創建的。Spring的用途不僅限於服務器端的開發。從簡單性、可測試性和鬆耦合的角度而言,任何Java應用都可以從Spring中受益。 簡單來說,Spring是一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器框架。

MyBatis:是一個基於Java的持久層框架。MyBatis提供的持久層框架包括SQL Maps和Data Access Objects(DAO)它消除了幾乎所有的JDBC代碼和參數的手工設置以及結果集的檢索。MyBatis 使用簡單的 XML 或註解用於配置和原始映射,將接口和 Java映射成數據庫中的記錄。

參考:
延伸閱讀:

框架比較

Spring MVC VS Struts2

struts2 是類級別的攔截,一個類對應一個request上下文
spring mvc是方法級別的攔截,一個方法對應一個request上下文,而方法同時又跟一個url對應
所以說從架構本身上 spring mvc 就容易實現restful url,struts2的架構實現起來較為麻煩,因為struts2 action的一個方法可以對應一個url;spring mvc的方法之間基本上獨立的,獨享request response數據,請求數據通過參數獲取,處理結果通過 ModelMap 交回給框架。
spring mvc 的入口是 servlet ,而 struts 是filter(這裡要指出,filter和servlet是不同的。以前認為filter是servlet的一種特殊),這樣就導致了二者的機制不同,spring會稍微比struts快。spring mvc 是基於方法的設計,而 sturts 是基於類,每次發一次請求都會實例一個 action ,每個 action 都會被注入屬性,而 spring 基於方法,粒度更細,但要小心把握像在 servlet 控制數據一樣。
參考:

Hibernate VS MyBatis

Mybatis優勢

MyBatis可以進行更為細緻的SQL優化,可以減少查詢欄位。
MyBatis容易掌握,而Hibernate門檻較高。

Hibernate優勢

Hibernate的DAO層開發比MyBatis簡單,Mybatis需要維護SQL和結果映射。
Hibernate對對象的維護和緩存要比MyBatis好,對增刪改查的對象的維護要方便。
Hibernate資料庫移植性很好,MyBatis的資料庫移植性不好,不同的資料庫需要寫不同SQL。
Hibernate有更好的二級緩存機制,可以使用第三方緩存。MyBatis本身提供的緩存機制不佳。

 

延伸閱讀:

結語

在理解完所謂的SSH或者SSM三層結構後,相信我們已經具備基本程式開發的概念,接下來要介紹的就是近些年來在 Java 開發界最值得關注的框架 Spring boot ,可說是集合各種框架於一身的集大成者,底層的ORM框架或者是IoC框架及MVC概念,全部藉由一個框架搞定全部事情,自動化配置節省配置 XML 的時間。

Spring Boot

前面我們提到三層結構,其中每一層都有其負責作用的框架,往往我們在配置環境的時候,必須針對不同業務層使用不同框架必須做配置,配置往往就需要花上許多時間,其中還不乏解決套件彼此的相依性和衝突,因此 Spring Framework 誕生了,為解決應用程式開發的複雜度,Spring 團隊整合了上述所說的資料處理層套件到表現層套件,只需要透過簡單的 Spring boot starter 就能輕鬆 build 起一個應用,不再需要配置 Tomcat 或者是其他相關的 webserver 服務,此外採用自動配置的方式,完全可以拋棄傳統 XML 配置,讓程式開發人員能更專注的開發需求功能而減少配置所帶來的時間成本。

  1. 創建可以獨立運行的Spring應用。
  2. 直接嵌入Tomcat 或Jetty服務器,不需要部署WAR 文件。
  3. 提供推薦的基礎POM文件來簡化ApacheMaven 配置。
  4. 儘可能的根據項目依賴來自動配置Spring框架。
  5. 提供可以直接在生產環境中使用的功能,如性能指標、應用資訊和應用健康檢查。
  6. 沒有代碼生成,也沒有XML 配置文件
博主

擅長使用 C# 和 Java 開發項目,全棧開發工程師,前端主要使用 Vue 其次 Angular ,目前正在學習分布式架構,運維研發兼具,平時愛好鑽研技術並應用於實務當中,常駐於上海。

相關推薦

相逢就是有緣,留下足跡吧!