?作者:Flyingis
?
素描工具:
Struts + Hibernate 3
素描對(duì)象:一個(gè)足夠簡(jiǎn)單的基于
MVC
的
Web
應(yīng)用
目的:使用
Struts
分離業(yè)務(wù)邏輯與表現(xiàn),使用
Hibernate
分離數(shù)據(jù)操作與業(yè)務(wù)邏輯,整理一種基本的
MVC
開(kāi)發(fā)思路。
?
1.
素描框架
?
??? 該素描主要體現(xiàn)在系統(tǒng)層次的功能劃分,系統(tǒng)結(jié)構(gòu)的組織與設(shè)計(jì)上,素描足夠簡(jiǎn)單,數(shù)據(jù)庫(kù)中只涉及一張表:
??? 學(xué)生信息(學(xué)生編號(hào)、姓名、性別、年齡、專業(yè)信息)--Student( id, name, gender, age, specialty_id )
??? 公共類的設(shè)計(jì)與實(shí)現(xiàn)
??? 各模塊的詳細(xì)設(shè)計(jì),主要描述一個(gè)基本的
CRUD
操作,以及對(duì)象數(shù)據(jù)傳遞
2.
公共類設(shè)計(jì)
?
??? 基本的
CRUD
操作封裝在基本的幫助類
HibernateHelper
中,實(shí)現(xiàn)
Object load(Class theClass, java.io.Serializable id)
、
Query createQuery(String queryString)
、
void setQueryParameter(Query query, String name, Object val)
、
List list(Query query)
、
void save(Object o)
、
void update(Object o)
、
void delete(Object o)
、
void saveOrUpdate(Object o)
等這些基本方法。
?
??? 常量單獨(dú)封裝在
Constants
類中。
?
3.
各種對(duì)象設(shè)計(jì)
-
ActionForm:StudentForm--
用于視圖層與控制層之間傳遞數(shù)據(jù)。
-
接口
StudentIf--
實(shí)現(xiàn)了學(xué)生數(shù)據(jù)對(duì)象
Bean
所需要的所有接口方法。
-
學(xué)生數(shù)據(jù)對(duì)象
StudentData--
實(shí)現(xiàn)了記錄學(xué)生對(duì)象數(shù)據(jù)的功能,并可以用作數(shù)據(jù)交互的傳輸對(duì)象,它實(shí)現(xiàn)了接口
Serializable
和
StudentIf
。
-
學(xué)生實(shí)體
Bean StudentBean--
實(shí)現(xiàn)了學(xué)生實(shí)體的所有屬性,它實(shí)現(xiàn)了接口
Serializable
和
StudentIf
。
4.
對(duì)象管理實(shí)現(xiàn)類
?
??? 業(yè)務(wù)邏輯處理為項(xiàng)目的核心,直接關(guān)系到項(xiàng)目是否符合用戶需求。因此,我們可以單獨(dú)設(shè)計(jì)一個(gè)對(duì)象管理實(shí)現(xiàn)類
ManagerFacade,定義處理業(yè)務(wù)對(duì)象的CRUD操作,以增加學(xué)生信息為例public StudentIf addStudent(StudentIf student)。學(xué)生數(shù)據(jù)對(duì)象StudentData在Action中通過(guò)StudentForm接收到表現(xiàn)層傳入的數(shù)據(jù),然后作為ManagerFacade對(duì)象的addStudent方法的參數(shù)傳入方法內(nèi),在方法體內(nèi)聲明學(xué)生實(shí)體StudentBean的一個(gè)對(duì)象,將學(xué)生數(shù)據(jù)對(duì)象即傳入?yún)?shù)中的屬性值賦給實(shí)體對(duì)象,然后調(diào)用公共類HibernateHelper的save方法完成數(shù)據(jù)庫(kù)操作。其他基本操作與此類似,這樣設(shè)計(jì)似乎對(duì)象較多,但各層之間分工明確,有利于降藕。
??? 另外,在數(shù)據(jù)傳遞過(guò)程中,還會(huì)涉及到數(shù)據(jù)類型的轉(zhuǎn)換,可以專門(mén)設(shè)計(jì)幫助類來(lái)完成。
?
5.
頁(yè)面
UI
設(shè)計(jì)
?
??? 除了設(shè)計(jì)美觀的頁(yè)面外,最重要的是頁(yè)面結(jié)構(gòu)要符合項(xiàng)目需要,并提供一定的使用體驗(yàn),有時(shí)候簡(jiǎn)單實(shí)用就是最好。如果可以對(duì)用戶瀏覽器統(tǒng)一規(guī)范要求,或是基本不會(huì)屏蔽
Javascript
,數(shù)據(jù)格式的控制可以放在客戶端用
Javascript
實(shí)現(xiàn)。
?
6.
系統(tǒng)的部署、測(cè)試與發(fā)布。