黃文翔,潘曉衡
(東莞理工學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,廣東東莞,523808)
Bootstrap是當(dāng)前Web技術(shù)逐漸成熟的時(shí)期備受前端開(kāi)發(fā)人員歡迎的Html、CSS和JS框架。主要用于開(kāi)發(fā)響應(yīng)式布局、移動(dòng)設(shè)備優(yōu)先的Web系統(tǒng)頁(yè)面。其實(shí)現(xiàn)目標(biāo)是使頁(yè)面能在主流的桌面和移動(dòng)設(shè)備瀏覽器上都能獲得足夠流暢和優(yōu)秀的展示及響應(yīng)效果。Bootstrap是完全開(kāi)源的,其源碼是基于CSS預(yù)處理腳本Less和Sass開(kāi)發(fā)的,研發(fā)人員可以采用預(yù)編譯的CSS文件快速設(shè)計(jì),也可以從源碼定制自己需要的樣式。
SpringBoot是基于Spring的4.0版本設(shè)計(jì)的,承載了原有Spring框架的優(yōu)秀基因,為簡(jiǎn)化Spring項(xiàng)目配置而生,能輕松地創(chuàng)建獨(dú)立的、可生產(chǎn)的、基于Spring的且能直接運(yùn)行的應(yīng)用程序。SpringBoot大大提高了Web程序開(kāi)發(fā)者的開(kāi)發(fā)效率和代碼的規(guī)范性。SpringBoot目前在JavaWeb的開(kāi)發(fā)中得到了廣泛的應(yīng)用。MyBatis做為數(shù)據(jù)持久層框架,支持動(dòng)態(tài)SQL,而且非常便于和SpringBoot集成,是SpringBoot項(xiàng)目中經(jīng)常選用的持久層框架。同時(shí),本文使用了Mybatis的逆向工程插件MybatisGenerator,本插件允許開(kāi)發(fā)者通過(guò)配置文件自動(dòng)連接數(shù)據(jù)庫(kù)并生成持久層代碼,該插件穩(wěn)定性高,加快開(kāi)發(fā)效率和持久層更新效率。
該桌面移動(dòng)一體化的旅游平臺(tái)主要包括總體設(shè)計(jì)、前臺(tái)設(shè)計(jì)和后臺(tái)設(shè)計(jì)??傮w設(shè)計(jì)采用分層架構(gòu)思想來(lái)設(shè)計(jì),使其具有良好的擴(kuò)展性,易于開(kāi)發(fā)人員的開(kāi)發(fā)與維護(hù)。前端設(shè)計(jì)設(shè)計(jì)主要面向用戶(hù)設(shè)計(jì),提供便捷地酒店服務(wù)和機(jī)票訂票服務(wù)。后臺(tái)設(shè)計(jì)面向管理人員,通過(guò)信息化和結(jié)構(gòu)化的管理,提升了效率和較少勞動(dòng)成本。
基于SpringBoot的桌面移動(dòng)一體化的旅游平臺(tái),有機(jī)結(jié)合MVC(模型-視圖-控制)思想及三層架構(gòu)(視圖層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問(wèn)層)的設(shè)計(jì)模式,具體又分為視圖層、控制層、業(yè)務(wù)層、持久層和數(shù)據(jù)層。其中視圖層是用戶(hù)交互的頁(yè)面,主要通過(guò)Bootstrap,Ajax和Thymeleaf等技術(shù)去實(shí)現(xiàn),Bootstrap用戶(hù)快速構(gòu)建前端頁(yè)面,并實(shí)現(xiàn)響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì), 根據(jù)不同的屏幕尺寸進(jìn)行重新排版和縮放,無(wú)論是移動(dòng)端還是桌面端都有一個(gè)良好的體驗(yàn),Ajax用于前端向后端請(qǐng)求和接收數(shù)據(jù),Thymeleaf是HTML5模板引擎,用于后端數(shù)據(jù)的渲染展示??刂茖游挥谝晥D層和業(yè)務(wù)層之間,使用Controller來(lái)完成,負(fù)責(zé)將來(lái)自視圖層的請(qǐng)求準(zhǔn)確地轉(zhuǎn)發(fā)到業(yè)務(wù)層中對(duì)應(yīng)的業(yè)務(wù)方法(Bean)處理,并將業(yè)務(wù)層處理的結(jié)果返回給視圖層。業(yè)務(wù)層實(shí)現(xiàn)該平臺(tái)的具體業(yè)務(wù)邏輯功能。而持久層則完成數(shù)據(jù)的O-R映射,負(fù)責(zé)旅游平臺(tái)的數(shù)據(jù)訪問(wèn)操作,主要通過(guò)Mybatis來(lái)完成這些任務(wù)。而數(shù)據(jù)層負(fù)責(zé)管理該旅游平臺(tái)的數(shù)據(jù),使用MySQL來(lái)執(zhí)行。由此通過(guò)層層分工,相互協(xié)作,一同實(shí)現(xiàn)了整個(gè)桌面移動(dòng)一體化的旅游平臺(tái)的全部功能。
根據(jù)用戶(hù)的需求,該桌面移動(dòng)一體化旅游平臺(tái)合理設(shè)計(jì)了相應(yīng)的前臺(tái)功能。具體包括個(gè)人中心模塊、酒店服務(wù)模塊、機(jī)票服務(wù)模塊、博客模塊等。其總體設(shè)計(jì)圖如圖1所示。
圖1 基于SpringBoot的桌面移動(dòng)一體化的旅游平臺(tái)前臺(tái)總體設(shè)計(jì)
根據(jù)旅游服務(wù)商的不同需求,該系統(tǒng)的后臺(tái)向三種不同的工作人員(系統(tǒng)管理員、酒店服務(wù)商、飛機(jī)服務(wù)商)提供了不同的功能。其總體設(shè)計(jì)如圖2所示。
圖2 基于SpringBoot的桌面移動(dòng)一體化的旅游平臺(tái)后臺(tái)總體設(shè)計(jì)
系統(tǒng)管理員主要對(duì)用戶(hù)的信息以及發(fā)布的內(nèi)容進(jìn)行管理,其具體包括用戶(hù)信息管理、用戶(hù)賬單管理、用戶(hù)權(quán)限管理、用戶(hù)博客管理、博客標(biāo)簽管理。
酒店服務(wù)商管理面向酒店工作人員,管理酒店的各種信息,包含酒店的旅客的進(jìn)店離店確認(rèn),酒店資源信息變更,用戶(hù)的交易記錄等。
飛機(jī)服務(wù)商管理面向飛機(jī)服務(wù)商的管理人員,主要對(duì)用戶(hù)從飛機(jī)訂票到接送機(jī)等一系列活動(dòng)進(jìn)行管理。
(1)Bootstrap搭建Web頁(yè)面,充分應(yīng)用Bootstrap的響應(yīng)式設(shè)計(jì)能力,有效解決了兼容性問(wèn)題,兼容手機(jī)端和PC端;其中還采用富文本編輯器等JS腳本對(duì)頁(yè)面裝飾等。
(2)視圖層接受前端請(qǐng)求后交給業(yè)務(wù)層處理再將返回的數(shù)據(jù)傳遞給前端進(jìn)行渲染。
(3)模板引擎Thymeleaf對(duì)系統(tǒng)傳輸至前端的數(shù)據(jù)進(jìn)行復(fù)雜的渲染操作。
(1)首先使用MybatisGenerator實(shí)現(xiàn)持久化的自動(dòng)生成:需要配置MybatisGenerator和數(shù)據(jù)庫(kù)的鏈接;映射數(shù)據(jù)庫(kù)表結(jié)構(gòu)的配置格式;另外Mybatis只生成基本的實(shí)體類(lèi)和基本的數(shù)據(jù)庫(kù)操作,如果需要另外添加數(shù)據(jù)操作,可以采用Mybatis的定義方式進(jìn)行自定義。
(2)根據(jù)MybatisGenerator生成的Mybatis持久層:開(kāi)發(fā)人員可以專(zhuān)注于業(yè)務(wù)層的編寫(xiě)。
一般按照以下格式進(jìn)行編寫(xiě):
@Service標(biāo)記為Spring MVC的業(yè)務(wù)層組件。
@Resource/@Autowired注入持久層數(shù)據(jù)組件。
再進(jìn)行實(shí)際業(yè)務(wù)編寫(xiě)。
(3)編寫(xiě)好業(yè)務(wù)層之后,Controller層控制后端和頁(yè)面的交互,一般按照以下格式編寫(xiě):
@Controller標(biāo)記為Spring MVC的控制層組件。
@Resource/@Autowired注入業(yè)務(wù)組件。
@GetMapping/@PostMapping區(qū)分每個(gè)業(yè)務(wù)鏈接。
具體調(diào)用函數(shù),其中還對(duì)需要傳遞給前端的數(shù)據(jù),進(jìn)行封裝為DTO實(shí)體類(lèi)(由于大部分?jǐn)?shù)據(jù)只需要展示部分即可)。
(4)后端數(shù)據(jù)庫(kù)的設(shè)計(jì)是采用MySQL進(jìn)行數(shù)據(jù)的持久化保存。
當(dāng)今移動(dòng)互聯(lián)網(wǎng)發(fā)展的大環(huán)境下,桌面移動(dòng)一體化的旅游平臺(tái)實(shí)現(xiàn)了旅游資訊的信息化,具有簡(jiǎn)便的操作、完善的功能,提高了游客用戶(hù)旅游體驗(yàn)。平臺(tái)采用了時(shí)下流行的Java后端框架Spring Boot,相較于傳統(tǒng)的Java開(kāi)發(fā),代碼的結(jié)構(gòu)更加清晰明了,在多層次上實(shí)現(xiàn)了分析、設(shè)計(jì)、類(lèi)、方法等的重用。SpringBoot框架自帶Tomcat服務(wù)器,以及布置好了非常詳實(shí)和穩(wěn)健的默認(rèn)配置,大大加快了項(xiàng)目的開(kāi)發(fā),將開(kāi)發(fā)的主要的難度集中到了業(yè)務(wù)處理和前端頁(yè)面渲染上。