Posted on 2006-01-18 17:42
JDeodar 閱讀(395)
評(píng)論(0) 編輯 收藏 所屬分類(lèi):
J2EE
Web Tier Design -- Web層設(shè)計(jì)
1、設(shè)計(jì)目標(biāo)
A:一個(gè)清晰的Web層。
用MVC達(dá)到:控制器(Controller)對(duì)象,接受用戶(hù)輸入的信息,并調(diào)用業(yè)務(wù)邏輯去創(chuàng)建和更新模型對(duì)象。模型(Model)對(duì)象,提供要顯示的數(shù)據(jù),提供控制器和視圖之間的契約。視圖(View)對(duì)象,顯示由控制器提供的模型對(duì)象。
B:Web層應(yīng)該盡可能地薄。
2、請(qǐng)求驅(qū)動(dòng)的Web MVC框架
一個(gè)HTTP請(qǐng)求過(guò)來(lái),被一個(gè)通用的分發(fā)器servlet(dispatcher servlet)分析,再被分發(fā)到一個(gè)對(duì)應(yīng)的應(yīng)用處理器。處理器依次處理UI特有的控制邏輯,調(diào)用業(yè)務(wù)對(duì)象和管理會(huì)話(huà)狀態(tài)(如果需要),準(zhǔn)備一個(gè)模型,再轉(zhuǎn)發(fā)到一個(gè)視圖。每個(gè)UI動(dòng)作對(duì)應(yīng)一個(gè)處理器,后者通常被稱(chēng)為動(dòng)作(action)或控制器(controller),具體的名稱(chēng)雖框架而定。
控制器可能被建模為可重用、線程安全的處理器,類(lèi)似Servlet(例如Struts和Spring);也可能實(shí)現(xiàn)為“只使用一次”的command實(shí)例(例如WebWork)。
請(qǐng)求驅(qū)動(dòng)的Web MVC框架的設(shè)計(jì)模型通常包括六種類(lèi)型的對(duì)象。在一些框架中有些對(duì)象同時(shí)扮演了幾個(gè)角色:
A:控制器(controller):它是由框架調(diào)用的組件,負(fù)責(zé)處理HTTP請(qǐng)求,并確定一個(gè)要呈現(xiàn)的視圖。
B:攔截器(interceptor):它是由框架調(diào)用的組件......
C:command或form:它是根據(jù)請(qǐng)求參數(shù)組裝的JavaBean,
可用作中間層業(yè)務(wù)對(duì)象的方法參數(shù)。如果是只使用一次(只在一次請(qǐng)求范圍內(nèi)有效)的對(duì)象,則通常稱(chēng)為command對(duì)象;如果表示可重復(fù)提交的表單,則稱(chēng)為form對(duì)象。
D:驗(yàn)證器(validator):用于驗(yàn)證command/form對(duì)象,如果發(fā)現(xiàn)錯(cuò)誤,則生成驗(yàn)證錯(cuò)誤對(duì)象,交給視圖顯示。驗(yàn)證可以針對(duì)整個(gè)對(duì)象,也可以針對(duì)特定的字段。
E:驗(yàn)證錯(cuò)誤收集器(validation errors holder):收集驗(yàn)證錯(cuò)誤,并將其暴露給視圖去顯示。驗(yàn)證過(guò)程可能是編程實(shí)現(xiàn)的,也可能是由框架特有的JSP標(biāo)簽進(jìn)行的。
F:模型(Model):由控制器曝露給視圖的一個(gè)或多個(gè)JavaBean,表示控制器和視圖之間的數(shù)據(jù)約定。
G:視圖引用(view reference):可能是一個(gè)符號(hào)名稱(chēng)、一個(gè)資源URL、或一個(gè)真實(shí)的視圖對(duì)象。控制器返回視圖引用,由框架進(jìn)行渲染。
3、事件驅(qū)動(dòng)(event-driven)的Web MVC框架
Tapestry和JSF