1. 程式人生 > >SSH三大框架學習心得體會

SSH三大框架學習心得體會

這篇文章是基本的概念講解和心得體會,之後會有詳細的demo進行解說。

在過去的一段時間內,我一直對SSH(spring、Struts2、hibernate)的框架不是很瞭解,藉著這次完成電影購票系統的大作業好好學習了一下。學習過程中,我閱讀了一些相關書籍,其中,對於初學者而言比較淺顯易懂的、內容也比較豐富的電子書籍有:Spring開發指南,Spring從入門到精通,struts2入門教程,struts2權威指南,Hibernate 開發指南,Hibernate3官方中文參考手冊。

體會

總的來說,我認為SSH有如下的優點:
總體來說:
運用框架,提高程式碼的複用性,減少程式碼的冗餘,提高執行速度,規範程式設計,便於維護.

Sructs優點:
1)MVC框架
2)標籤庫

spring優點:
spring的核心出發點就是降低程式複雜度、耦合度、隔離變化點。
1)控制反轉(在beanfactory 兵工廠中建立物件)與依賴注入(初始化物件) IOC
2)事務管理機制 (對異常處理,日誌,全線控制直接呼叫,)AOP

通過對大部分底層的封裝,開發SSH應用就像填空一樣,非常舒服。

Hibernate

Hibernate是比較好理解的。Hibernate的功能就是將資料庫的表格、檢視等對映成為Java的類物件。這些類物件進行的操作,都通過Hibernate對映到對資料庫的操作。Hibernate就是資料庫和Java邏輯功能的橋樑。JDBC其實也是橋樑,但Hibernate的優點在於它封裝了Java程式和資料庫的連線關係,因此,一個簡簡單單的save方法就能像資料庫表插入一個新的值。同時,Hibernate的封裝還解決了Java程式和不同資料庫連線時可能會出現的不同的SQL語句問題。要使用Hibernate,需要資料庫表、簡單的JavaBean類,Hibernate的配置檔案,以及資料庫表和JavaBean類的對映檔案。

Struts

Struts是Web框架,學習Struts首先要理解MVC思想,即Model(模型)、View(檢視)和Controller(控制器)。學習Struts時間最長,也是在spring mvc之前用得最多的。Struts 2框架本身大致可以分為3個部分:核心控制器FilterDispatcher、業務控制器Action和使用者實現的企業業務邏輯元件。三個元件相互配合,完成各個邏輯功能。

1.Struts的MVC結構

Struts的MVC到底指什麼呢?
Model模型:這裡的Model不只指我們專案Model層裡的POJO物件。還包括Action物件,以及action呼叫的業務邏輯元件。
View檢視:顯然,檢視就是指我們的JSP頁面,以及Struts提供的標籤庫能夠與我們的ActionFrom(包括request,session)進行互動。
Controller控制器:控制其主要就是指Struts的ActionServlet和ActionMapping,也就是我們配置的struts.xml.

2.ValueStack和StackContext

學習OGNL的時候,對這兩個概念經常搞不清,總容易混淆。
ValueStack 稱之為值棧,可以理解為StackContext的根物件,在Action裡,要有set和get方法。在使用OGNL時,若訪問的屬性屬於根物件,可以直接訪問該屬性,不用加’#’.
StackContext 叫做Stack的上下文,是整個OGNL的計算和求值的Context. 除了包含ValueStack這個根物件外,還包含一系列物件,包括request/session/application等。而訪問這些命名物件時,要加’#’.

3.jstl和struts標籤庫

一直糾結這兩個到底哪個好用,當然struts標籤庫只用應用與struts專案中。先學習過jstl,後來做專案的時候又一直用的struts的標籤庫,用起來感覺沒什麼差別,後來結合富文字編輯器從後臺取資料的時候才發現,二者的取值方式不同。jstl取值的時候會轉換裡面的html標籤,而struts標籤取值的時候只是把值當做字串輸出到頁面。(後來發現struts標籤也可以通過設定escape=’1’,對html字元經行轉義,當然jstl也可設定對html不進行轉義,只是二者預設方式不同。但是Struts標籤的訪問速度要比jstl慢,效率低)

4.Struts的Ajax支援

自己做專案的時候最多用的就是jQuery中的Ajax的post函式,來實現非同步請求。
用法:$.post(“”,{},function(data,textStatus){})
第一個引號裡面傳一個URL,一般就是一個action路徑,第二個{}中傳一個JSON物件,如{a:1,b:2}這樣,把這個物件傳給後臺Action,後臺通過set和get方法得到a和b的值,第三個function是方法實現體。用來處理後臺傳送回的資料和前臺經行互動。
後臺通過response.getWriter.print(“”)來向前臺傳遞資料,存放到function中的data裡。這樣就實現了簡單的Ajax的非同步請求。

Spring

Spring框架的提出,就是為了解決不同容器間的耦合關係。通過Spring,各種不同特性的容器能夠得到良好的融合。對於Spring來說,可以把它理解成為USB介面,通過USB介面,優盤、MP3、行動硬碟、甚至光碟機、手機,都能夠和PC相連並且收發資料。控制反轉、依賴注入,都可以理解為是,只要向Spring容器中註冊一個物件,這個物件就能被其他已經在容器中存在的物件使用或者其本身通過Spring容器使用其他物件。

Spring中要重點理解Bean和BeanFactory的意義。Bean就是注入的物件,BeanFactory就是管理這些物件的容器。另一點需要注意的是,Spring的注入方式多種多樣,設值注入、構造子注入、介面注入都是注入的方式。掌握Spring的難點在於Spring的配置檔案。Spring的配置檔案就是指定Bean之間的依賴和控制關係的。

Spring的核心是IOC(控制反轉),DI(依賴注入)和AOP(面向切面的程式設計)。

1.IOC/DI

IOC的思想最核心的地方在於,資源不由使用資源的雙方管理,而由不使用資源的第三方管理,這可以帶來很多好處。第一,資源集中管理,實現資源的可配置和易管理。第二,降低了使用資源雙方的依賴程度,也就是耦合度。

2.AOP

AOP思想能從程式執行角度考慮程式的流程,提取業務處理過程的切面。其有著各個步驟之間有良好的隔離性,原始碼無關性的特性。可以這樣理解,可以把程式碼看成一坨面,同樣用刀來切面,切完了,想在前面、中間、後面或者四周放些“香料”什麼的隨便你。你只要把這把刀實現好就行了。AOP面向的是程式執行中各個步驟,希望以更好的方式來組合業務處理的各個步驟。