国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于J2EE和MVC模式的Web應(yīng)用開(kāi)發(fā)方法研究

2011-05-28 12:46汪丹平
關(guān)鍵詞:事務(wù)視圖瀏覽器

唐 勇 汪丹平

(安徽理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,安徽 淮南 232001)

一、MVC模式

MVC是一種目前廣泛流行的軟件設(shè)計(jì)模式,隨著 J2EE(Java2 Enterprise Edition)的成熟,它正在成為在J2EE平臺(tái)上推薦的一種設(shè)計(jì)模型,其目的就是實(shí)現(xiàn)Web系統(tǒng)的職能分工.MVC是把一個(gè)應(yīng)用的輸入、處理、輸出流程按照 Model、View、Controller的方式進(jìn)行分離,其優(yōu)勢(shì)在于層與層之間各司其職,互不干涉。模型、視圖、控制器三者之間的關(guān)系和各自的主要功能,如圖1所示:

圖1 MVC組件類(lèi)型的關(guān)系和功能

在該模型中,應(yīng)用程序分為三個(gè)組成部分:

(1)View:用戶(hù)視圖模塊,這是用戶(hù)界面部分。主管應(yīng)用程序與人之間的接口,一方面,它為用戶(hù)提供了輸入手段,并觸發(fā)應(yīng)用邏輯運(yùn)行,另一方面,它又將邏輯運(yùn)行的結(jié)果以某種形式顯示給用戶(hù)。

(2)Contr0ller:流程控制模塊,該部分是用戶(hù)界面與Model的接口。一方面它解釋來(lái)自于view的輸入,將其解釋成系統(tǒng)能夠理解的對(duì)象,同時(shí)它也識(shí)別用戶(hù)動(dòng)作,并將其解釋為對(duì)Model特定方法的調(diào)用;另一方面,它也處理來(lái)自于Model的事件和Model邏輯執(zhí)行的結(jié)果,調(diào)用適當(dāng)?shù)腣iew為用戶(hù)提供反饋。

(3)Model:事務(wù)邏輯模塊,是整個(gè)模型的核心。它表示解決方案真正的邏輯。它采用面向?qū)ο蟮姆椒ǎ瑢?wèn)題領(lǐng)域中的對(duì)象抽象為應(yīng)用程序?qū)ο?。在這些抽象的對(duì)象中封裝了對(duì)象的屬性和這些對(duì)象所隱含的邏輯。

二、J2EE

J2EE是一整套技術(shù)的總稱(chēng),包括建立企業(yè)應(yīng)用系統(tǒng)的各個(gè)方面,使用J2EE技術(shù)能使我們快速建立企業(yè)應(yīng)用系統(tǒng)。J2EE的目標(biāo)是提供一個(gè)基于Java語(yǔ)言的服務(wù)器端應(yīng)用結(jié)構(gòu),支持平臺(tái)獨(dú)立、可移植、多用戶(hù)、安全和標(biāo)準(zhǔn)的企業(yè)級(jí)應(yīng)用。使用J2EE來(lái)開(kāi)發(fā)n層的應(yīng)用,要將原來(lái)的2層體系細(xì)分為多個(gè)不同的層。一個(gè)n層的應(yīng)用能夠?yàn)橐韵碌拿總€(gè)服務(wù)提供獨(dú)立的層:

(1)表現(xiàn):在一個(gè)典型的Web應(yīng)用中,運(yùn)行在客戶(hù)機(jī)器上的瀏覽器負(fù)責(zé)處理表現(xiàn)。

(2)動(dòng)態(tài)產(chǎn)生表現(xiàn):雖然瀏覽器可以處理一些動(dòng)態(tài)產(chǎn)生的表現(xiàn),不過(guò)為了支持多種不同的瀏覽器,大部分的動(dòng)態(tài)產(chǎn)生都應(yīng)該在Web服務(wù)器進(jìn)行,通過(guò)使用JSP,servlet或者XML(Extensible Markup Language,擴(kuò)展標(biāo)記語(yǔ)言)和XSL(Extensible Stylesheet Language,擴(kuò)展樣式表語(yǔ)言)。

(3)商業(yè)邏輯:實(shí)現(xiàn)商業(yè)邏輯的最佳方法是通過(guò)Session EJB。

(4)數(shù)據(jù)訪問(wèn):實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)的最佳方法是在Entity EJB,以及使用JDBC。

(5)Backend系統(tǒng)集成:可使用各種不同的技術(shù)來(lái)與backend系統(tǒng)集成。最佳的選擇在于backend系統(tǒng)的確切種類(lèi)。

J2EE是一個(gè)標(biāo)準(zhǔn)的體系結(jié)構(gòu),它特別面向使用Java程序設(shè)計(jì)語(yǔ)言進(jìn)行基于Web的企業(yè)應(yīng)用的開(kāi)發(fā)與部署,圖2展示了基于Web應(yīng)用的J2EE應(yīng)用編程模型。

圖2 基于Web應(yīng)用的J2EE應(yīng)用編程模型

三、基于JZEE和MVC模式的解決方案

將MVC模式應(yīng)用于web應(yīng)用程序中時(shí),控制模塊(Controller)主要提供以下功能:首先接收用戶(hù)端發(fā)送的與網(wǎng)絡(luò)協(xié)議相關(guān)的請(qǐng)求,然后解析請(qǐng)求并轉(zhuǎn)換為事務(wù)邏輯模塊(Model)的輸入?yún)?shù),調(diào)用相應(yīng)的事務(wù)邏輯模塊(Model)進(jìn)行處理,最后根據(jù)事務(wù)邏輯模塊的處理結(jié)果調(diào)用相應(yīng)的用戶(hù)視圖模塊(View)生成結(jié)果頁(yè)面,返回至瀏覽器。

JSP和Servlet都具備實(shí)現(xiàn)控制模塊的條件,但通常情況下,我們選用Servlet。因?yàn)榭刂颇K主要的功能是接收輸入?yún)?shù),控制程序流程,程序代碼一般是連貫的Java代碼,并且無(wú)需向客戶(hù)端輸出信息,而JSP更適合在編寫(xiě)動(dòng)態(tài)頁(yè)面時(shí)使用,同時(shí)JSP的解釋執(zhí)行過(guò)程比Servlet更為復(fù)雜。

用戶(hù)視圖模塊的主要功能是根據(jù)事務(wù)邏輯模塊處理的結(jié)果生成返回至客戶(hù)端的頁(yè)面。與控制模塊相反的是,由于用戶(hù)視圖模塊的重心在于頁(yè)面設(shè)計(jì),因此,JSP是開(kāi)發(fā)頁(yè)面模塊的最好選擇。目前已有很多可視化的網(wǎng)頁(yè)設(shè)計(jì)軟件能夠識(shí)別JSP標(biāo)記,方便了網(wǎng)頁(yè)設(shè)計(jì)人員的開(kāi)發(fā)過(guò)程。

事務(wù)邏輯模塊(Model)是Web應(yīng)用程序中最終負(fù)責(zé)處理客戶(hù)請(qǐng)求的模塊。因此,事務(wù)邏輯模塊必須能夠滿(mǎn)足大多數(shù)客戶(hù)的需求,包括保證應(yīng)用程序各組件的事務(wù)整合,維護(hù)并快速的獲取應(yīng)用數(shù)據(jù),支持事務(wù)工作流的協(xié)調(diào)以及在已有應(yīng)用程序中集成新的應(yīng)用組件等。為了滿(mǎn)足這些需求,編寫(xiě)事務(wù)邏輯模塊需要使用到以下 技 術(shù) :Servlet、JavaBean、EJB、JDBC、CORBA、LDAP以及其它企業(yè)級(jí)的應(yīng)用服務(wù)。

由于己經(jīng)把事務(wù)邏輯模塊與控制模塊進(jìn)行了分離,這樣該模塊的開(kāi)發(fā)就無(wú)需特殊的網(wǎng)絡(luò)編程能力,程序的開(kāi)發(fā)主要就集幣在事務(wù)處理、邏輯判斷等方面了,因此在中小型網(wǎng)站的應(yīng)用中通常把事務(wù)邏輯模塊封裝為JavaBean,提高了事務(wù)邏輯模塊在網(wǎng)絡(luò)應(yīng)用和非網(wǎng)絡(luò)應(yīng)用中的可重用性,并為將來(lái)向分布式網(wǎng)絡(luò)計(jì)算過(guò)渡打好基礎(chǔ)。

圖3 MVC在Web應(yīng)用中的體系結(jié)構(gòu)

在MVC模型中,后端系統(tǒng)是我們的Model,用來(lái)創(chuàng)建用戶(hù)響應(yīng)界面的模板是view,而把這兩者聯(lián)系起來(lái)的紐帶是Controller。JSP完美的對(duì)應(yīng)于MVC模式中的View,Servlet包含了管理如何處理請(qǐng)求的邏輯,實(shí)際上就成為了Controller,而系統(tǒng)已有的業(yè)務(wù)規(guī)則就是Model,并用JavaBean進(jìn)行封裝。MVC在Web應(yīng)用中的體系結(jié)構(gòu),如圖3所示,其中,Servlet充當(dāng)控制者的角色,負(fù)責(zé)管理對(duì)請(qǐng)求的處理,創(chuàng)建JSP頁(yè)需要使用的bean和對(duì)象,同時(shí)根據(jù)用戶(hù)的動(dòng)作決定把那個(gè)JSP頁(yè)傳給請(qǐng)求者。特別要注意,在JSP頁(yè)內(nèi)沒(méi)有處理邏輯,它僅負(fù)責(zé)檢索原先由Servlet創(chuàng)建的對(duì)象或bean,從Servlet中提取動(dòng)態(tài)內(nèi)容插入靜態(tài)模板。這是一種有代表性的方法,它清晰地分離了表達(dá)和內(nèi)容,明確了角色的定義以及開(kāi)發(fā)者與網(wǎng)頁(yè)設(shè)計(jì)者的分工。事實(shí)上,項(xiàng)目越復(fù)雜,使用MVC體系結(jié)構(gòu)的好處就越大。

模塊間數(shù)據(jù)交換是通過(guò)把事務(wù)邏輯模塊的處理結(jié)果存儲(chǔ)在一個(gè)JavaBean中,并將該JavaBean存放在session中。當(dāng)控制模塊需要獲取事務(wù)邏輯模塊的處理結(jié)果時(shí),只要從當(dāng)前會(huì)話(huà)中取出JavaBean,即可得到所需數(shù)據(jù)。Data Beans有效地解決了控制模塊與事務(wù)邏輯模塊之間的數(shù)據(jù)傳遞問(wèn)題,并且借助于會(huì)話(huà)管理使得不同用戶(hù)的數(shù)據(jù)得以區(qū)分。

該系統(tǒng)屬于瀏覽器/服務(wù)器模型(Browser/Server)。一般的,客戶(hù)通過(guò)瀏覽器發(fā)送HTTP請(qǐng)求給服務(wù)器端Web服務(wù)器,Web服務(wù)器接收該請(qǐng)求并且進(jìn)行相應(yīng)處理,然后將處理后的結(jié)果返回到客戶(hù)的瀏覽器中。在客戶(hù)端,瀏覽器中呈現(xiàn)的正是該系統(tǒng)的視圖部分,視圖的作用就是提供給客戶(hù)一個(gè)可視化的界面,并且允許客戶(hù)輸入一些數(shù)據(jù)來(lái)與服務(wù)器端程序交互。對(duì)客戶(hù)來(lái)說(shuō),他只能看到視圖,而模型和控制器對(duì)他則是透明的。在這里Web服務(wù)器僅起到提供HTTP服務(wù)的作用。Web服務(wù)器將客戶(hù)提交的HTTP請(qǐng)求交給后方的JSP、Servlet引擎,并且進(jìn)一步交給其中的控制器來(lái)處理。控制器按照從請(qǐng)求映射表將該請(qǐng)求映射到相應(yīng)的對(duì)象或bean;處理器對(duì)模型進(jìn)行更新、修改等操作,處理完后返回結(jié)果給控制器;控制器根據(jù)結(jié)果通知視圖做相應(yīng)變化,并且選擇相應(yīng)視圖返回給客戶(hù)。

總結(jié)

J2EE技術(shù)和MVC設(shè)計(jì)模式的結(jié)合,大大降低了Web應(yīng)用系統(tǒng)結(jié)構(gòu)的復(fù)雜程度、代碼之間的禍合度,增加了代碼的易維護(hù)性、應(yīng)用框架的可重用性、組件的可重用性、易測(cè)性和不同技能的開(kāi)發(fā)員的分工。

[1]許幼鳴,徐錦,文耘.基于設(shè)計(jì)模式的軟件重用.1999,3:13~14,計(jì)算機(jī)工程.

[2]Vlada Matena,Beth Stearus.J2EE 平臺(tái)上的EJB組件開(kāi)發(fā).翟裕中,北京:機(jī)械工業(yè)出版社,2001.

[3]裴龍,何大可.JavaZSwing組件設(shè)計(jì)模式分析.2001,8:274~276,計(jì)算機(jī)應(yīng)用.

[4]Martin Flower.Analysis Patterns:Reusable object Models.Addison Wesley,1997.

[5]GAMMA E,HELM R.設(shè)計(jì)模式[M].北京:機(jī)械工業(yè)出版社,2000.

[6]Subrahmanyam Allamaraju.J2EE服務(wù)器端高級(jí)編程.北京:機(jī)械工業(yè)出版社,2001.

猜你喜歡
事務(wù)視圖瀏覽器
基于分布式事務(wù)的門(mén)架數(shù)據(jù)處理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
河湖事務(wù)
反瀏覽器指紋追蹤
視圖
Y—20重型運(yùn)輸機(jī)多視圖
SA2型76毫米車(chē)載高炮多視圖
環(huán)球?yàn)g覽器
SQLServer自治事務(wù)實(shí)現(xiàn)方案探析
移動(dòng)實(shí)時(shí)環(huán)境下的數(shù)據(jù)一致性研究
清流县| 北票市| 龙山县| 德庆县| 泉州市| 海伦市| 和静县| 凤凰县| 紫阳县| 顺昌县| 黔西县| 涞源县| 金门县| 望城县| 平江县| 始兴县| 池州市| 永定县| 双辽市| 凉山| 二手房| 沈阳市| 秀山| 衡山县| 万安县| 浮山县| 阜康市| 扶绥县| 扬州市| 谷城县| 康马县| 武义县| 驻马店市| 调兵山市| 广州市| 岫岩| 重庆市| 定日县| 商南县| 铜梁县| 桑植县|