1 Spring+struct2
? 1.1 配置文件
? ? ? ? 三大配置文件結(jié)構(gòu)如圖1-1所示。

? ? web.xml
? ? ? ? 這里的web.xml是項目的總配置,主要功能是讓項目早啟用時候加載structs2的過濾器和?spring框架的監(jiān)聽器,讓項目進入兩大框架的使用之中。配置如圖1-2所示。

? ? ? ? 注意,所有的<class>標(biāo)簽指的是對應(yīng)的功能類的所在地址,不同版本很有可能地址不同或者是名字不同,這個需要根據(jù)版本號在網(wǎng)上進行查找。
? ? structs.xml
? ? ? ? ??structs.xml的配置和之前的單獨配置一模一樣,它的功能和servlet幾乎一樣,即指定每個頁面的處理器是哪個。配置如圖1-3所示。

? ? spring-config.xml
? ? ? ? ? ? 這個是SSH項目實現(xiàn)自動注入,控制反轉(zhuǎn)的配置文件。由創(chuàng)建的bean自動實現(xiàn)注入,不用再新建new。配置文件如圖1-4所示。

? ? ? ? ? ? 這是我使用的是spring整合structs2的第二種方式,手動注入業(yè)務(wù)層的方式,這樣有利于AOP的注解。經(jīng)過這樣的配置過后,在1.2章節(jié)的Java類的注入方式中就方便多了。
? 1.2 java文件
? ? ? ? Java類文件總有四層,如圖1-5所示。entity:實體類,記錄了某一個實體的所有屬性,并帶有所有屬性的get和set方法。 action:MVC中的模型層,指定了每一個指令的處理方法。service:業(yè)務(wù)層,帶有對每一個指令的具體處理方法。 DAO :封裝對數(shù)據(jù)庫進行交互的操作,例如增刪改查等等,分層的結(jié)構(gòu)使它可以被業(yè)務(wù)層重復(fù)調(diào)用。

??productEntity
? ? ? ? 帶有某個實體所有屬性,相當(dāng)于數(shù)據(jù)庫中一張表的所有列。并有g(shù)et和set方法。

? ?productAction
? ? ? ? 如圖1-7所示,這里加載了模型驅(qū)動使用的類和直接將service注入到了action中,使action可以直接調(diào)用service類。

? ? ? ? 之后,我們寫一個service的執(zhí)行方法。

? productService
? ? ? ? 在業(yè)務(wù)層中,我們要調(diào)用Dao層的服務(wù),在spring配置后,也下圖直接注入既可,不在新new。然后,寫一個dao層的執(zhí)行方法。

? productDao
? ??????Dao層里完成最后操作,在整合hibernate之后,會有一些封裝好的函數(shù)可以直接使用。這里不急著列出。

1.3 運行結(jié)果
? ? 如圖1-11所示,我們創(chuàng)建了一個提交表單,想要將輸入的信息保存到數(shù)據(jù)庫中。運行后,控制臺的結(jié)果如圖1-12所示。


? ? ? ? 這里的顯示,說明我們的Spring+struct2整合已經(jīng)成功,它能運行三大類里的方法。這里就形成了 :指令攔截和控制 -- 具體業(yè)務(wù)處理 -- 數(shù)據(jù)交互 這樣一條鏈子。
2?Spring + hibernate
? ? ? ? 首先,我們找到?productEntity,創(chuàng)建一個對應(yīng)的映射文件。如圖2-2所示,這里hibernate可以根據(jù)這張映射表直接在數(shù)據(jù)庫中創(chuàng)建表,注意:不能創(chuàng)建數(shù)據(jù)庫,數(shù)據(jù)庫自己創(chuàng)建。這也是檢驗hibernate配置是否成功的標(biāo)志之一。

? ? ? ? 在整合hibernate時,我們一般會用到的hibernate.cgd.xml就不會再用了,一般直接寫在Spring 中進行控制,即進行Spring + hibernate的整合。首先在Spring的配置文件中加入以下代碼,如注解所示。這里使用C3P0完成了數(shù)據(jù)庫連接配置 ,并完成了hibernate屬性配置,最后加載映射文件。

? ? ? ? 接下來,可以運行服務(wù)器,查看是否能在數(shù)據(jù)庫中創(chuàng)建表單。如果能即在DAO層中調(diào)用SAVA方法既可完成SSH搭建。結(jié)果如2-4所示。

