|
原帖地址:http://306781704-qq-com.iteye.com/blog/289681
ssh(struts+spring+hibernate)究竟是怎么一回事?是一種規(guī)范。 先別管規(guī)范,我們從最基本的概念去理解它。java是對面向?qū)ο蟮木幊陶Z言,java里一切只有類,java項目的本質(zhì)就是執(zhí)行類的方法,類與類之間的調(diào)用。利用的其它資源就是文件,主要是xml配置文件,另外就是數(shù)據(jù)庫。 jsp文件實質(zhì)也是一種java類,它將被編譯成Servlet類文件。jsp是為了簡化用戶編寫繁雜的Servlet類文件而設(shè)置的。web容器(也是一堆java類)負(fù)責(zé)把jsp文件轉(zhuǎn)化成Servlet類文件。 為了完成一個任務(wù),實現(xiàn)一個功能,需要寫許多java類,根據(jù)java類的作用不同,可以把java類分成幾種,有些負(fù)責(zé)頁面展示,有些負(fù)責(zé)業(yè)務(wù)處理邏輯運算,有些負(fù)責(zé)訪問數(shù)據(jù)庫。當(dāng)然,你也可以把這些功能寫在一個類里實現(xiàn)(呵呵,這在理論上是能實現(xiàn)的!),不過人們?yōu)榱舜a更加清晰,往往一個大功能分成許多小功能,由多個類去實現(xiàn)。 上面的話大家應(yīng)該不難理解,即為了完成一個大功能,要由許多類,分別完成相應(yīng)專門功能。可這和框架似乎無關(guān),框架又是怎么回事呢?所謂框架就是“由許多類,分別完成相應(yīng)專門功能”的具體規(guī)范,這在多人合作開發(fā)一個大項目時尤為必要。大家試想,如果項目組成員各行其是,自己想用哪幾種類實現(xiàn)功能就用哪幾種類,會是一個什么樣子,有多混亂!因此框架的定義就是:為了完成一個整體功能,對實現(xiàn)這個功能的java類的一種分工規(guī)范。(準(zhǔn)確說,這是一種人為的規(guī)范劃分,任何人都可編寫自己的任意規(guī)范,就是一個會有多少人會用的問題了) struts+spring+hibernate就是這樣一種規(guī)范
struts是顯示層的一種規(guī)范,側(cè)重于處理“給用戶顯示的前臺頁面”和后臺業(yè)務(wù)處理類之間的對應(yīng)關(guān)系,并且負(fù)責(zé)前后臺之間的數(shù)據(jù)傳遞。它由三種java類組件jsp、Form、Action分別實現(xiàn)前臺頁面展示、后臺業(yè)務(wù)處理類、數(shù)據(jù)傳遞類。(所謂組件,就是對一種專門實現(xiàn)某種功能的java類的稱呼) spring是業(yè)務(wù)層的一種規(guī)范,側(cè)重于定義事務(wù)處理,提供了對各種java類的整體處理(主要包括注入處理IoC和切面編程AOP),甚至提供了對多種框架集成在一塊的規(guī)范,它是一種更高層次的框架,它主要以一個外部 XML 配置文件方便地將各框架對象連接在一起,進(jìn)而實現(xiàn)安全性服務(wù)、事務(wù)服務(wù)等。 這里大家可能有一個疑問,spring是如何以一個外部 XML 配置文件實現(xiàn)的各種功能呢?這其實沒有任何神秘而言,我們大家都知道,每個框架都有許多類包,這些類包就是專門實現(xiàn)這些事情的。這些類包是如何介入我們寫的類代碼或其它框架的呢?當(dāng)然必須通過一定途徑才能調(diào)用其它類代碼,有時spring把這個細(xì)節(jié)隱藏了起來,使我們感到不可思議,細(xì)究一下,我們會發(fā)現(xiàn)不外通過兩種方式才能調(diào)用其它類代碼:一是把我們的類寫在它的配置文件里,二是我們的類繼承它的接口。 hibernate是一個純 Java 的對象關(guān)系映射和持久性框架,它允許您用 XML 配置文件把普通 Java 對象映射到關(guān)系數(shù)據(jù)庫表,從而可以使用戶以hibernate提供的面向?qū)ο蟮慕涌谳p松操作數(shù)據(jù)庫。hibernate的類包在后臺還是以JDBC的方式操作數(shù)據(jù)庫。 三種技術(shù)到目前已經(jīng)比較成熟,而且他們都是免費的!讓我們對三者集成,與大家一起輕松、深入地進(jìn)入ssh天地
|