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