劉昊承
(北京郵電大學(xué)計(jì)算機(jī)學(xué)院 北京 100876)
隨著移動(dòng)互聯(lián)網(wǎng)融入到各行各業(yè)中,對(duì)應(yīng)用程序的需求量不斷增加。傳統(tǒng)的應(yīng)用程序開發(fā)模式主要采用 C/S模式、B/S模式,C/S模式是采用客戶端到服務(wù)端模式主要應(yīng)用到客戶端要求較高的程序,該模式存在缺陷是維護(hù)成本高、系統(tǒng)兼容性難解決問題;B/S模式是一種瀏覽器到服務(wù)端的模式,由于具有較高的兼容性,被廣泛應(yīng)用到應(yīng)用程序開發(fā)中,調(diào)查數(shù)據(jù)表明由于瀏覽器前端技術(shù)的不斷更新,目前開發(fā)陣營(yíng)由傳統(tǒng)的C/S模式轉(zhuǎn)向B/S模式,B/S模式中MVC框架為開發(fā)提供了更有效的工具。
當(dāng)前有關(guān)MVC模型應(yīng)用研究較多,針對(duì)傳統(tǒng)的雷達(dá)管理系統(tǒng)采用C/S模式,存在靈活性差、開放受限制、數(shù)據(jù)識(shí)別度不高問題,使用MVC模式結(jié)合Java編程語言進(jìn)行了移動(dòng)端雷達(dá)管理系統(tǒng)設(shè)計(jì)。所設(shè)計(jì)的系統(tǒng)能夠進(jìn)行雷達(dá)頻信號(hào)采集、存儲(chǔ)、移動(dòng)終端查看。系統(tǒng)關(guān)鍵技術(shù)為基于強(qiáng)回波定位算法以及百度天氣API,實(shí)現(xiàn)了數(shù)據(jù)識(shí)別中核心環(huán)節(jié)數(shù)據(jù)采集。針對(duì)大面積水產(chǎn)養(yǎng)殖環(huán)環(huán)境監(jiān)測(cè)指標(biāo)多,而現(xiàn)有的監(jiān)測(cè)設(shè)備不能滿足多指標(biāo)遠(yuǎn)距離監(jiān)測(cè)問題。提出基于LoRa無線通信的水產(chǎn)養(yǎng)殖監(jiān)測(cè)系統(tǒng)。該系統(tǒng)運(yùn)行于Linux系統(tǒng)上,系統(tǒng)開發(fā)使用Java編程語言利用SpringMVC框架,使用HiBernate數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存儲(chǔ),最終解決了動(dòng)態(tài)監(jiān)測(cè)中數(shù)據(jù)傳輸長(zhǎng)的問題?,F(xiàn)有系統(tǒng)中利用MVC框架大大提高了軟件開發(fā)效率,然而有關(guān)如何應(yīng)用MVC模式進(jìn)行Web應(yīng)用程序開發(fā)相關(guān)報(bào)道文件較少,本文針對(duì)這一問題進(jìn)行詳細(xì)研究。
MVC是“Model-View-Controller”簡(jiǎn)稱,中文為“模型—視圖—控制器”,是由模型、視圖、控制器組成。MVC封裝了核心流程、業(yè)務(wù)流程,將復(fù)雜的功能轉(zhuǎn)換為界面層、業(yè)務(wù)邏輯層、數(shù)據(jù)層,這樣方便了界面的輸入輸出。視圖層是用戶能夠使用的界面,向用戶展示數(shù)據(jù)、用戶添加數(shù)據(jù)等操作,該過程中不接受更深層業(yè)務(wù)數(shù)據(jù)分析。按照模型層的構(gòu)建,可知相同的信息可對(duì)應(yīng)多個(gè)視圖層??刂破髦胸?fù)責(zé)用戶的行為,是調(diào)用用戶數(shù)據(jù)與視圖之間的中間層。界面中每個(gè)用戶有多個(gè)請(qǐng)求,第一步完成控制器接收并進(jìn)行模型處理,接著根據(jù)業(yè)務(wù)邏輯請(qǐng)求進(jìn)行數(shù)據(jù)返回,最終控制根據(jù)用戶業(yè)務(wù)邏輯需求進(jìn)行控制。圖1為MVC模式結(jié)構(gòu)。
圖1:MVC模式結(jié)構(gòu)圖
由圖1可知MVC模式中模型、控制器、視圖之間相互分離、相互關(guān)聯(lián),一個(gè)模型可對(duì)應(yīng)多個(gè)視圖。在開發(fā)過程中如果某個(gè)功能發(fā)生變化視圖的控制器出現(xiàn)了更改,會(huì)導(dǎo)致視圖層發(fā)生變化。
MVC優(yōu)點(diǎn):MVC能夠?qū)崿F(xiàn)一個(gè)模型構(gòu)建多個(gè)視圖,這樣提高了代碼重復(fù)利用效率。在開發(fā)過程中用戶功能需要調(diào)整時(shí),只需調(diào)成模型層中功能模塊,即可完成視圖層相關(guān)功能開發(fā),大大提高了開發(fā)效率。模型層、控制器、視圖層之間層次分明、結(jié)構(gòu)清晰,這樣讓開發(fā)者專注特定的功能,為系統(tǒng)開發(fā)擴(kuò)展性、維護(hù)性提供了便利。MVC中控制器可進(jìn)行業(yè)務(wù)對(duì)象請(qǐng)求控制,這樣提高了應(yīng)用程序靈活性。
MVC缺點(diǎn):使用MVC進(jìn)行應(yīng)用程序開發(fā),增加了系統(tǒng)的難度、復(fù)雜性。業(yè)務(wù)功能簡(jiǎn)單的應(yīng)用程序使用該模式后增加了系統(tǒng)結(jié)構(gòu)復(fù)雜性,過多的頁面交互降低了運(yùn)行效率。MVC理論上實(shí)現(xiàn)了視圖層和控制器分離,但實(shí)際開發(fā)中很難做到這點(diǎn)。視圖層與控制器即分離也相互關(guān)聯(lián),如果視圖層沒有控制器則所開發(fā)的應(yīng)用受到限制,實(shí)際中受到模型層接口設(shè)計(jì)影響,導(dǎo)致頻繁調(diào)用視圖層才可實(shí)現(xiàn)界面顯示。MVC設(shè)計(jì)面比較廣,入學(xué)者需要花費(fèi)大量的時(shí)間才能獨(dú)立設(shè)計(jì),增加了學(xué)習(xí)成本。
Java編程語言是面向?qū)ο缶幊陶Z言,是由sun公司1995年設(shè)計(jì)的一款編程語言,具有簡(jiǎn)單、分布式、安全性高、跨平臺(tái)等優(yōu)點(diǎn),可用于桌面應(yīng)用程序、Web程序、嵌入式程序等開發(fā)。與C++編程語言相比,他具有簡(jiǎn)單、垃圾回收機(jī)制、安全性等優(yōu)點(diǎn)。目前最新的Java版本是Java8.0,Java的編程環(huán)境為JDK,是Java核心模塊。此外JavaAPI類庫中還提供了JRE,該模塊是一個(gè)運(yùn)行環(huán)境,使用該模塊后無需安裝JDK。Java編程常見的開發(fā)工具有Eclipse(開源平臺(tái))、netbeans(開源平臺(tái),進(jìn)行客戶機(jī)和Web程序開發(fā))、MyEclipse(主流Java應(yīng)用程序開發(fā)環(huán)境)。
圖2:設(shè)備管理類
表1:為設(shè)備管理系統(tǒng)數(shù)據(jù)表結(jié)構(gòu)
Java開發(fā)中主要是以.jsp腳本進(jìn)行運(yùn)行,該腳本語言能夠跨平臺(tái)運(yùn)行,相比Asp.net、Asp、PHP腳本語言具有更廣的應(yīng)用領(lǐng)域。MVC技術(shù)在jsp設(shè)計(jì)中的應(yīng)用包括系統(tǒng)功能需求分析、模型組件設(shè)計(jì)、視圖層設(shè)計(jì)以及控制器設(shè)計(jì)。系統(tǒng)應(yīng)用需求分析可采用UML建模技術(shù)進(jìn)行Web應(yīng)用程序功能需求分析,包括功能需求分析和非功能需求分析;模型組件設(shè)計(jì)主要是進(jìn)行業(yè)務(wù)層、數(shù)據(jù)層封裝管理,該層中提供了內(nèi)核數(shù)據(jù)管理以及接口管理,按照J(rèn)ava類設(shè)計(jì)要求進(jìn)行類封裝實(shí)現(xiàn)多次利用管理。視圖設(shè)計(jì)是向用戶展示界面,從系統(tǒng)數(shù)據(jù)庫中獲取數(shù)據(jù)后,顯示在前端界面。根據(jù)Java開發(fā)者編寫的后端管理.jsp頁面進(jìn)行界面顯示??刂破鞯脑O(shè)計(jì)作用是接收相應(yīng)的請(qǐng)求并進(jìn)行數(shù)據(jù)反饋。根據(jù)Java編程語言提供的.java將設(shè)計(jì)的控制方法存入到該文件中,這樣實(shí)現(xiàn)控制管理。為了控制管理提高程序自由度,在jsp文件中每個(gè).jsp頁面都有.java文件相對(duì)應(yīng)這樣滿足了控制層的要求。
基于Java來發(fā)的Web應(yīng)用程序MVC操作流程可歸納為,用戶在瀏覽器中瀏覽Query.jsp并將查詢結(jié)果提交至服務(wù)器端進(jìn)行servlet-Query-servlet查詢,查詢結(jié)果存儲(chǔ)到緩沖池中,緩沖池中能夠進(jìn)行智能判斷,如果緩沖池合理,則將控制器轉(zhuǎn)移到bufferedlist.jsp中,取出Queryresultbean內(nèi)容返回到瀏覽器。
Web應(yīng)用程序開發(fā)中數(shù)據(jù)庫設(shè)計(jì)是核心功能,本文詳細(xì)分析MVC在數(shù)據(jù)層設(shè)計(jì)應(yīng)用。Web程序業(yè)務(wù)邏輯可歸納為數(shù)據(jù)添加、數(shù)據(jù)查看、數(shù)據(jù)刪除、數(shù)據(jù)修改。按照MVC設(shè)計(jì)思路可將數(shù)據(jù)庫層獨(dú)立分析這樣并提供相應(yīng)的接口這樣方便二次開發(fā)。
設(shè)備管理系統(tǒng)是生產(chǎn)廠商、應(yīng)用商家比進(jìn)行使用的管理系統(tǒng)。本文使用UML建模技術(shù)結(jié)合MVC框架進(jìn)行基于Java編程語言開發(fā)的設(shè)備管理系統(tǒng)。圖2為設(shè)備管理系統(tǒng)類圖。
根據(jù)MVC模式進(jìn)行了設(shè)備管理系統(tǒng)設(shè)計(jì),從圖2中可知設(shè)備管理中包含類有:device_management、device_managementBLL、device_managementMoble、device_managementDALL分別用于設(shè)備界面管理、設(shè)備業(yè)務(wù)邏輯管理、設(shè)備數(shù)據(jù)集管理、設(shè)備數(shù)據(jù)管理。各個(gè)類中包含的方法為device_managemen中包含 device_managemen_insert()、device_managemen_select()、device_managemen_delete()、device_managemen_update()分別用于設(shè)備信息添加界面管理、設(shè)備信息查詢界面管理、設(shè)備信息刪除界面管理、設(shè)備信息修改界面管理。device_managemen類對(duì)應(yīng)MVC層中的視圖層、device_managementBLL對(duì)應(yīng)MVC層中的業(yè)務(wù)邏輯管理、device_managementDALL對(duì)應(yīng)MVC層中的數(shù)據(jù)管理。
為詳細(xì)存儲(chǔ)設(shè)備管理,需要對(duì)設(shè)備管理進(jìn)行數(shù)據(jù)庫設(shè)計(jì),部分信息表見表1所示。
本文所設(shè)計(jì)的基于Java的Web應(yīng)用層頁面使用復(fù)合視圖形式,每個(gè)設(shè)備管理系統(tǒng)頁面是由多個(gè)子視圖組成。根據(jù)Java提供的控件進(jìn)行視圖層編輯。每個(gè)網(wǎng)站都提供了母版頁,采用html樣式進(jìn)行管理。系統(tǒng)中相關(guān)驗(yàn)證使用正則表達(dá)式進(jìn)行管理。為豐富視圖層界面,采用jQuery進(jìn)行前端開發(fā)。
在開發(fā)設(shè)備管理系統(tǒng)時(shí),控制層的設(shè)計(jì)使用分散控制,每個(gè).jsp文件都對(duì)應(yīng)后臺(tái).java文件,達(dá)到頁面控制目的。所設(shè)計(jì)的頁面中每個(gè)空間都對(duì)應(yīng)了相應(yīng)事件以及數(shù)據(jù)交互關(guān)系。下面對(duì)設(shè)備管理中設(shè)備信息添加管理進(jìn)行講解,在設(shè)備信息添加模塊中有Device_addition.jsp文件,可通過control控制設(shè)備信息添加成功。
使用MVC模式進(jìn)行JavaWeb應(yīng)用程序開發(fā)能夠提高開發(fā)者開發(fā)效率,為開發(fā)者提供了標(biāo)準(zhǔn)接口管理,從而提高了開發(fā)效率、降低了程序維護(hù)成本。本文以設(shè)備管理系統(tǒng)開發(fā)進(jìn)行分析,使用MVC模式后,代碼編寫規(guī)范、易操作等,非常適合大型項(xiàng)目開發(fā)。隨著移動(dòng)APP技術(shù)不斷發(fā)展,后期MVC模式將不斷拓展應(yīng)用領(lǐng)域。