首先是對struts的理解。struts是把servlet、jsp以及眾多標簽庫整合在一起的開源web框架,他實現了mvc設計模式。Struts實際上就是對MVC的各部件提供了現成的實現組件。Struts的中央控制器是ActionServlet,當請求到達時,它根據配置文件struts-config.xml的配置參數分配請求給不同的action處理。在請求分配給Action之前,會將請求參數封裝在ActionForm對象中,會根據配置參數決定是否先調用validate方法進行驗證,成功才會傳遞給Action,失敗則跳轉到input屬性指定的頁面。Action的execute方法執行成功之后會返回一個ActionForward對象,根據配置文件的forward跳轉到相應的頁面。
Struts實現了MVC設計模式,層次結構清晰,使開發者只關注業務邏輯的實現,便於維護。集成標簽庫,提供異常處理機制和數據庫連接池管理。
然后是對hibernate的理解。hibernate是一個輕量級的開源持久層框架,hibernate在原有三層結構基礎上,從業務邏輯層分離出來持久層,專門負責數據的持久化操作,是業務邏輯層可以真正的專注於業務邏輯的開發,不再需要編寫復雜易錯的SQL語句,使得我們可以隨心所欲的使用對象編程思維來操縱數據庫。
在配置文件hibernate.cfg.xml中配置好數據庫連接,方言等信息,讀取配置文件創建configuration對象再產生SessionFactory再創建Session,啟動事務,完成CRUD操作,關閉session。
Hibernate對JDBC訪問數據庫的代碼做了封裝,大大簡化了數據訪問層繁瑣的重復性代碼。 移植性較好,更換數據庫只需要更改配置文件中的參數,支持各種關系性數據庫,映射靈活性好。完全面對對象的思想操作數據庫。提供緩存機制,延遲加載,有一級緩存(Session級別)和二級緩存(SessionFactory級別),利用緩存降低數據庫的訪問率。簡潔的HQL編程。
最后是對spring的理解。Spring是一個輕量級的控制反轉(IOC)和面向切面編程(AOP)的非侵入性容器框架。Spring的核心是IOC和AOP,IOC實現了簡單工廠模式,可以很好的解耦合,通過IOC和DI的思想將類與類之間的依賴關系放置在配置文件中。各個類都是相對獨立存在的,調用關系有配置文件實現,這樣就實現了程序之間的松耦合。(DI的三種注入方式?),AOP是面對切面編程,它將不應該聚合在一起的功能(像事務的管理)從業務操作代碼中分離並提取出來,使用DI注入到業務代碼中,降低代碼的耦合度,提高了代碼重用率(AOP實現的兩種方式?)。
Spring提供一種管理對象的方法,把中間層對象有效的組織起來。低侵入性設計,DI機制降低了業務對象替換的復雜性,應用服務器之間是可移植的。方便集成各種優秀框架,寫出易於測試的代碼方便程序的測試,支持聲明式事務,解耦合,簡化開發,擴展性好。