開發 Java 網頁主流框架

6,724次閱讀
尚無留言

共计 3031 个字符,预计需要花费 8 分钟才能阅读完成。

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

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

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

三層結構

開發 Java 網頁主流框架

傳統 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

開發 Java 網頁主流框架
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 配置文件
正文完
 0
評論(尚無留言)