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