Java作為一門面向?qū)ο蟮木幊陶Z言,不僅吸收了C++語言的各種優(yōu)點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。
java三大框架分別是:1、Spring;2、Struts;3、Hibernate。其中,Spring是功能強大的組件粘合劑,可以幫助Java程序員解決許多在J2EE開發(fā)中常見的的問題,能夠?qū)⑺械膉ava功能模塊用配置文件的方式組合起來成為一個完整的應用。
1、Spring
Spring是功能強大的組件粘合劑,可以幫助Java程序員解決許多在J2EE開發(fā)中常見的的問題,能夠?qū)⑺械膉ava功能模塊用配置文件的方式組合起來成為一個完整的應用spring利用它的IOC和AOP來處理控制業(yè)務,負責對數(shù)據(jù)庫的操作。Spring將顯卡和CPU組裝在一起,相當于電腦的一個主板。
pring為JavaEE開發(fā)提供了一個輕量級的解決方案,可以說Spring是貫穿表現(xiàn)層、業(yè)務層、持久層,為javaEE提供一站式解決方案的框架,因此受到不少java開發(fā)者的青睞。
Spring框架是分模塊存在,除了最核心的Spring Core Container(即Spring容器)是必要模塊之外,其他模塊都是可選,視需要而定。本質(zhì)上Spring可以總結為以下七個模塊:
· 核心容器:核心容器提供 Spring 框架的基本功能(Spring Core)。核心容器的主要組件是 BeanFactory,它是工廠模式的實現(xiàn)。BeanFactory 使用控制反轉(zhuǎn)(IOC) 模式將應用程序的配置和依賴性規(guī)范與實際的應用程序代碼分開。
· Spring 上下文:Spring 上下文是一個配置文件,向 Spring框架提供上下文信息。Spring 上下文包括企業(yè)服務,例如JNDI、EJB、電子郵件、國際化、校驗和調(diào)度功能。
· Spring AOP:通過配置管理特性,Spring AOP 模塊直接將面向切面的編程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何對象支持AOP。Spring AOP 模塊為基于 Spring 的應用程序中的對象提供了事務管理服務。通過使用 Spring AOP,不用依賴 EJB 組件,就可以將聲明性事務管理集成到應用程序中。
· Spring DAO:JDBCDAO抽象層提供了有意義的異常層次結構,可用該結構來管理異常處理和不同數(shù)據(jù)庫供應商拋出的錯誤消息。異常層次結構簡化了錯誤處理,并且極大地降低了需要編寫的異常代碼數(shù)量(例如打開和關閉連接)。Spring DAO 的面向 JDBC 的異常遵從通用的 DAO 異常層次結構。
· Spring ORM:負責框架中對象關系映射,提供相關ORM 接入框架的關系對象管理工具 [2] 。Spring 框架插入了若干個ORM框架,從而提供了 ORM 的對象關系工具,其中包括JDO、Hibernate和iBatisSQL Map。所有這些都遵從 Spring 的通用事務和 DAO 異常層次結構。
· Spring Web 模塊:Web 上下文模塊建立在應用程序上下文模塊之上,為基于 Web 的應用程序提供了上下文。所以,Spring框架支持與 Jakarta Struts 的集成。Web 模塊還簡化了處理多部分請求以及將請求參數(shù)綁定到域?qū)ο蟮墓ぷ鳌?/p>
· Spring MVC 框架:MVC框架是一個全功能的構建 Web應用程序的 MVC 實現(xiàn)。通過策略接口,MVC框架變成為高度可配置的,MVC 容納了大量視圖技術,其中包括 JSP、Velocity、Tiles、iText 和 POI。模型由javabean構成,存放于Map;視圖是一個接口,負責顯示模型;控制器表示邏輯代碼,是Controller的實現(xiàn)。Spring框架的功能可以用在任何J2EE服務器中,大多數(shù)功能也適用于不受管理的環(huán)境。Spring 的核心要點是:支持不綁定到特定 J2EE服務的可重用業(yè)務和數(shù)據(jù)訪問對象。毫無疑問,這樣的對象可以在不同J2EE 環(huán)境(Web 或EJB)、獨立應用程序、測試環(huán)境之間重用。
2、Struts
Struts是最早的java開源框架之一,它是MVC設計模式的一個優(yōu)秀實現(xiàn)。 Struts定義了通用的Controller(控制器),通過配置文件(通常是 Struts -config.xml)隔離Model(模型)和View(視圖),以Action的概念以對用戶請求進行了封裝,使代碼更加清晰易讀。 Struts還提供了自動將請求的數(shù)據(jù)填充到對象中以及頁面標簽等簡化編碼的工具。 Struts能夠開發(fā)大型Java Web項目。
Struts結構:
在Struts中,已經(jīng)由一個名為ActionServlet的Servlet充當控制器(Controller)的角色,根據(jù)描述模型、視圖、控制器對應關系的struts-config.xml的配置文件,轉(zhuǎn)發(fā)視圖(View)的請求,組裝響應數(shù)據(jù)模型(Model)。在MVC的模型(Model)部分,經(jīng)常劃分為兩個主要子系統(tǒng)(系統(tǒng)的內(nèi)部數(shù)據(jù)狀態(tài)與改變數(shù)據(jù)狀態(tài)的邏輯動作),這兩個概念子系統(tǒng)分別具體對應Struts里的ActionForm與Action兩個需要繼承實現(xiàn)超類。在這里,Struts可以與各種標準的數(shù)據(jù)訪問技術結合在一起,包括Enterprise Java Beans(EJB),JDBC與JNDI。在Struts的視圖(View)端,除了使用標準的JavaServer Pages(JSP)以外,還提供了大量的標簽庫使用,同時也可以與其他表現(xiàn)層組件技術(產(chǎn)品)進行整合,比如Velocity Templates,XSLT等。通過應用Struts的框架,最終用戶可以把大部分的關注點放在自己的業(yè)務邏輯(Action)與 映射關系的配置文件(struts-config.xml)中。
3、Hibernate
Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,它將POJO與數(shù)據(jù)庫表建立映射關系,是一個全自動的orm框架,hibernate可以自動生成SQL語句,自動執(zhí)行,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的JavaEE架構中取代CMP,完成數(shù)據(jù)持久化的重任。
Hibernate語言特點:
· 將對數(shù)據(jù)庫的操作轉(zhuǎn)換為對Java對象的操作,從而簡化開發(fā)。通過修改一個“持久化”對象的屬性從而修改數(shù)據(jù)庫表中對應的記錄數(shù)據(jù)。
· 提供線程和進程兩個級別的緩存提升應用程序性能。
· 有豐富的映射方式將Java對象之間的關系轉(zhuǎn)換為數(shù)據(jù)庫表之間的關系。
· 屏蔽不同數(shù)據(jù)庫實現(xiàn)之間的差異。在Hibernate中只需要通過“方言”的形式指定當前使用的數(shù)據(jù)庫,就可以根據(jù)底層數(shù)據(jù)庫的實際情況生成適合的SQL語句。
· 非侵入式:Hibernate不要求持久化類實現(xiàn)任何接口或繼承任何類,POJO即可。