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

?

基于JAVA WEB中MVC模式的研究與應用

2014-11-04 15:26:22楊靜
電腦知識與技術(shù) 2014年28期
關(guān)鍵詞:設計模式

楊靜

摘要:MVC(Model-View-Controller)設計模式是現(xiàn)代軟件設計中一種非常重要的設計模式,也是WEB系統(tǒng)中常用的一種經(jīng)典模式,它實現(xiàn)了界面顯示與業(yè)務邏輯的分離。為了提高基于WEB系統(tǒng)中代碼的可重復性、可維護性、可移植性和系統(tǒng)性能的穩(wěn)定性,從數(shù)據(jù)庫訪問技術(shù)、XML技術(shù)和DAO設計模式的角度,提出一種MVC改進模式,并闡述了基于此模式進行開發(fā)的技術(shù)和原理。

關(guān)鍵詞:MVC;Model;設計模式;Java Web

中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2014)28-6668-04

1 MVC設計模式

MVC是一種經(jīng)典的程序設計概念,此模式將應用程序分成3個部分,分別是模型層(Model)、視圖層(View)、控制層(Controller),其關(guān)系如圖1所示:

1.1 模型層(Model)

模型層是應用程序的核心部分,主要由JavaBean組件來充當,可以是一個實體對象或一種業(yè)務邏輯。負責表達和訪問數(shù)據(jù),執(zhí)行商業(yè)邏輯和操作,維護應用程序狀態(tài)。在MVC 模型中,它控制視圖的表現(xiàn)結(jié)果。它采用面向?qū)ο蟮姆椒ǎ?將問題領域中的對象抽象為應用程序?qū)ο?。在這些抽象的對象中封裝了對象的屬性和這些對象所隱含的邏輯。模型可以接收來自視圖的查詢并做出響應,在模型的數(shù)據(jù)變化的時候,它將通知視圖并提供后者訪問自身狀態(tài)的能力,視圖將根據(jù)模型的變化來更新自己,同時控制器也可以訪問模型的功能函數(shù)以完成相關(guān)的任務[1] 。

1.2 視圖層(View)

視圖層提供應用程序與用戶之間的交互界面。它從模型中得到數(shù)據(jù)并按要求顯示出來,當模型中的數(shù)據(jù)發(fā)生變化時,視圖從模型中得到通知自動更新視圖;它也可以將用戶輸入的信息傳送給控制器。在MVC模式中,這一層并不包含任何的業(yè)務邏輯,僅僅提供一種與用戶交互的視圖,在Web應用中有JSP、HTML界面充當。

1.3 控制層(Controller)

控制層用于對程序中的請求進行控制,起到一種宏觀調(diào)控的作用,它可以通知容器選擇什么樣的視圖、什么樣的模型組件,在Web應用中由Servlet充當。

2 基于JSP的MVC設計模式

JSP(Java Server Pages)是由Sun公司倡導、許多公司參與建立的動態(tài)網(wǎng)頁技術(shù)標準。它在HTML代碼中嵌入Java代碼片段(Scriptlet)和JSP標簽,構(gòu)成JSP網(wǎng)頁。在接收到用戶請求時,服務器會處理Java代碼片段,然后生成處理結(jié)果的HTML頁面返回給客戶端,客戶端的瀏覽器將呈現(xiàn)最終的頁面效果。JSP頁面負責數(shù)據(jù)顯示、業(yè)務邏輯、頁面控制等所有的工作,這給Web設計帶來了強耦合,維護困難,開發(fā)人員分工不明確,程序處理邏輯發(fā)雜等一系列問題。為了解決這種問題,Sun公司制定了兩種設計模式,模式一(Model1)和模式二(Model2)。Model1設計模式中,主要分兩層,視圖層和模型層。圖2稱之為模式一,雖然模式一實現(xiàn)了頁面顯示和業(yè)務邏輯的分離,但是在JSP頁面中不僅需要編寫顯示,而且很多業(yè)務邏輯、流程控制和調(diào)用JavaBean的程序代碼都出現(xiàn)在JSP頁面中,當業(yè)務邏輯非常復雜時,大量的內(nèi)嵌代碼會使得整個頁面程序變得異常復雜,使整個項目再維護的時候顯得非常困難。采用Model1模式開發(fā)小型項目非常的方便,每組頁面實現(xiàn)一個功能,當需要對某個功能進行修改時,需要修改很多地方,這樣不利用功能的擴展和更新。

為了解決模式一種的緊耦合、復用性差、維護成本高的缺點,此時提出了Model2模式,如圖3所示。該圖表示的是一種把JSP與Servlets聯(lián)合使用來實現(xiàn)動態(tài)內(nèi)容服務的方法,即 MVC 模式。它可以很好地表達用戶與系統(tǒng)的交互模式以及整個系統(tǒng)的程序架構(gòu)模式。在該模式中,JSP充當視圖層,主要負責視圖的顯示servlet充當控制層,控制分發(fā)用戶的請求,根據(jù)用戶的請求,調(diào)用相應的業(yè)務Bean,并將結(jié)果返回給適當?shù)捻撁孢M行顯示,JavaBean充當模型層,主要負責業(yè)務邏輯的實現(xiàn),因此在構(gòu)建 Web 應用,采用Model2模式具有顯著的優(yōu)勢。

3 改進的MVC模式

采用Model2模式開發(fā)項目時,在業(yè)務層中主要封裝了實體Bean和業(yè)務Bean,實體Bean主要用來封裝實體對象,而業(yè)務Bean主要是一些關(guān)于對數(shù)據(jù)庫的操作。此時在業(yè)務Bean就會涉及到數(shù)據(jù)庫的連接和關(guān)閉,當在使用的過程中,如果頻繁的打開和關(guān)閉數(shù)據(jù)庫是非常耗時和浪費系統(tǒng)資源的,此時我們可以在業(yè)務層中加入一個數(shù)據(jù)庫連接池,避免了數(shù)據(jù)庫頻繁的打開和關(guān)閉,提高了系統(tǒng)性能。當一個項目的業(yè)務比較復雜時,此時在Servlet中不僅有一些流程控制代碼和業(yè)務代碼,還有大量的數(shù)據(jù)處理代碼,此時應該盡量減少在Servlet中的代碼,只讓Servlet做接收數(shù)據(jù),轉(zhuǎn)發(fā)數(shù)據(jù)功能,其它的事情放到外面去做,為了實現(xiàn)該功能,將在Servlet中對數(shù)據(jù)的一些處理操作代碼單獨封裝到Service層中,Servlet接收到用戶請求后,根據(jù)請求的目標,直接跳轉(zhuǎn)到對應的Service中,在Service中負責對數(shù)據(jù)的處理和調(diào)用相應的業(yè)務層。其實現(xiàn)流程圖如圖4所示。

4 基于MVC模式登陸模塊的實現(xiàn)

現(xiàn)在結(jié)合登陸模塊的開發(fā),介紹MVC的在Java Web中的具體實現(xiàn)步驟,從而加深對MVC設計的理解。用戶填寫登陸信息的界面和通過驗證并返回信息的界面都為視圖(View);當用戶填寫的信息通過Form表單提交后,此時需要根據(jù)action跳轉(zhuǎn)到指定的控制器(Controller),而此控制器主要是通過Servlet完成,Servlet需要在web.xml中進行配置;通過控制器調(diào)用模型層(Model),連接數(shù)據(jù)庫,驗證輸入信息是否在數(shù)據(jù)庫中存在。在此整個模塊所涉及到的程序清單如下表一各模塊的表述:

在數(shù)據(jù)庫連接時,通常采用JDBC技術(shù),此技術(shù)作為一種數(shù)據(jù)庫訪問技術(shù),具有簡單易用的優(yōu)點。但使用這種模式進行Web應用程序開發(fā),存在很多問題:首先,每一次Web請求都要建立一次數(shù)據(jù)庫連接,而建立連接是一個費時并且耗費內(nèi)存資源;其次,對于每一次數(shù)據(jù)庫連接,使用完后都得斷開,否則,如果程序出現(xiàn)異常而未能關(guān)閉,將會導致數(shù)據(jù)庫系統(tǒng)中的內(nèi)存泄漏,最終將不得不重啟數(shù)據(jù)庫。因此,這種開發(fā)不能控制被創(chuàng)建的連接對象數(shù),系統(tǒng)資源會被毫無顧及的分配出去,如連接過多,也可能導致內(nèi)存泄漏,服務器崩潰。此時我們采用數(shù)據(jù)庫連接池進行數(shù)據(jù)庫的打開和關(guān)閉。數(shù)據(jù)庫連接池的基本思想就是為數(shù)據(jù)庫連接建立一個“緩沖池”,預先在緩沖池中放入一定數(shù)量的連接,當需要建立數(shù)據(jù)庫連接時,只需從“緩沖池”中取出一個,使用完畢之后再放回去。在配置數(shù)據(jù)庫連接池時需要修改Tomcat中的server.xml和項目中WEB-INF下的web.xml文件,再在程序中獲得已有連接。

在整個MVC設計中Model是其核心部分, 對于用戶登陸模塊,需要將輸入的數(shù)據(jù)或從數(shù)據(jù)庫中讀取的數(shù)據(jù)封裝到User類,從而各個模塊都能方便的使用該JavaBean對象了,而JavaBean在封裝的時候只需要書寫它的getXxx和setXxx方法就可以了,作為Model最重要的就是如何設計一個好的DAO模式來對數(shù)據(jù)庫進行操作,為了以后能夠更好的進行功能的擴充,在DAO組件中先定義一個UserDAO接口,然后定義接口的UserDAOImpl實現(xiàn)類,在接口的實現(xiàn)類中定義的各種方法來實現(xiàn)對數(shù)據(jù)的操作,但不負責數(shù)據(jù)庫的連接和關(guān)閉操作,而要完成這一操作主要是通過代理來完成,并調(diào)用真實主題,通過一個DAOFactory工廠實現(xiàn)DAO的實例。部分代碼如下:

接口的實現(xiàn)類:

陸流程圖

5 結(jié)束語

采用MVC模式清晰將表達和內(nèi)容進行了分離,開發(fā)人員負責Servlet和JavaBean,網(wǎng)頁設計人員負責JSP頁面的開發(fā),分工明確,非常適合大項目的開發(fā),同時采用該模式開發(fā)設計清晰,獨立性強,易擴充,易維護等優(yōu)點,使各類人員都可以更加專注完成自己的工作,在Web開發(fā)中有顯著的優(yōu)勢。

參考文獻:

[1] 雷鈞.MVC 設計模式在J2EE平臺上的應用[J]. 微計算機信息,2006,22(7):45-48.

[2] 萬健,劉建華.基于MVC模式的JSP技術(shù)開發(fā)WebGIS[J].工程地球物理學報,2009,6(2):241-243.

[3] 范蕓,范慧霞. JSP動態(tài)網(wǎng)站開發(fā)基礎與上機指導[M].北京:清華大學出版社, 2010:245.

猜你喜歡
設計模式
仿生設計模式的創(chuàng)新應用探索
玩具世界(2023年6期)2024-01-29 12:14:36
“1+1”作業(yè)設計模式的實踐探索
交通機電工程設計模式創(chuàng)新探討
互動式設計模式研究
同心县| 兴海县| 高台县| 浮山县| 岱山县| 虎林市| 大方县| 信阳市| 乐东| 台州市| 京山县| 丹巴县| 金秀| 奉贤区| 莲花县| 修水县| 正镶白旗| 中牟县| 县级市| 东安县| 莱西市| 上高县| 凌源市| 宽甸| 合水县| 资源县| 凌海市| 敦煌市| 安庆市| 仁布县| 扎鲁特旗| 宕昌县| 阜宁县| 双桥区| 思茅市| 大同市| 额尔古纳市| 绵竹市| 广汉市| 醴陵市| 长汀县|