張昕宇 楊清文 劉蘭 梁弼



摘? 要:隨著旅游業(yè)的快速發(fā)展,喜歡旅游的大學(xué)生越來越多,但大學(xué)生的時(shí)間和經(jīng)濟(jì)有限。為了幫助大學(xué)生旅游愛好者用盡量少的時(shí)間和盡量低的成本獲得優(yōu)質(zhì)的旅游體驗(yàn),本文采用SSM(Spring+SpringMVC+MyBatis)及HTML5等技術(shù)來開發(fā)面向大學(xué)生的旅游服務(wù)平臺(tái)。實(shí)踐證明,所開發(fā)的平臺(tái)具有良好的可擴(kuò)展性和可維護(hù)性,并且大學(xué)生體驗(yàn)良好。
關(guān)鍵詞:大學(xué)生;旅游服務(wù)平臺(tái);SSM;HTML5
中圖分類號(hào):TP311.52? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2019)01-0016-03
Design and Implementation of Tourism Service Platform for College Students
ZHANG Xinyu,YANG Qingwen,LIU Lan,LIANG Bi
(School of Intelligent Manufacturing,Sichuan University of Arts and Science,Dazhou? 635000,China)
Abstract:With the rapid development of tourism,more and more college students like tourism,but their travel time and economy are limited. In order to help college students’tourism enthusiasts obtain high-quality tourism experience with as little time and as little cost as possible,this paper develop a set of tourism service platform for college students using SSM(Spring MVC + Spring + MyBatis),HTML5 and other technology. Practice has proved that the platform developed in this paper has good scalability and maintainability,and college students have a good experience.
Keywords:college students;tourism platform;SSM;HTML5
0? 引? 言
隨著旅游業(yè)和社會(huì)經(jīng)濟(jì)的迅速發(fā)展,大學(xué)生已成為我國(guó)旅游業(yè)消費(fèi)群體的重要組成部分,但由于旅游消費(fèi)水平和出游時(shí)間有限,大部分學(xué)生在選擇旅游產(chǎn)品和確定旅游目的地時(shí)都會(huì)猶豫不決[1]。為了向大學(xué)生旅游愛好者提供更劃算、更優(yōu)質(zhì)的旅游體驗(yàn),開發(fā)專門面向大學(xué)生的旅游服務(wù)平臺(tái)十分必要。本文采用多層架構(gòu)模式來設(shè)計(jì)該平臺(tái),并將其劃分為五層(即表示層、控制層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層、數(shù)據(jù)庫(kù)層)。前端使用HTML5+CSS3、JS、Ajax等技術(shù)來設(shè)計(jì),后臺(tái)則使用SSM框架技術(shù)實(shí)現(xiàn),前后臺(tái)之間的數(shù)據(jù)通信則在jQuery中使用Ajax來向后臺(tái)發(fā)送異步請(qǐng)求,并通過JSON來接收后臺(tái)返回的數(shù)據(jù),再通過jQuery顯示輸出。這可以效增強(qiáng)前后臺(tái)數(shù)據(jù)的通信能力,提高平臺(tái)的響應(yīng)速度,進(jìn)而增強(qiáng)用戶體驗(yàn)。
1? 技術(shù)簡(jiǎn)介
1.1? Spring
Spring是Java中應(yīng)用最廣的應(yīng)用程序框架,它的基本理念包括IoC(Inversion of Control 控制反轉(zhuǎn))和AOP(Aspect Oriented Programming 面向切面編程)[2]。傳統(tǒng)Java程序設(shè)計(jì)中,開發(fā)人員直接在對(duì)象內(nèi)部通過new創(chuàng)建對(duì)象,是程序主動(dòng)去創(chuàng)建依賴對(duì)象;而IoC有專門容器來創(chuàng)建這些對(duì)象,即由IoC容器來控制對(duì)象的創(chuàng)建。AOP是通過預(yù)編譯方式和運(yùn)行期動(dòng)態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù),利用AOP可以對(duì)業(yè)務(wù)邏輯的各個(gè)部分進(jìn)行隔離,從而使得業(yè)務(wù)邏輯各部分之間的耦合度降低。
1.2? Spring MVC
Spring MVC是模型-視圖-控制器(MVC)的Web框架建立在中央前端控制器,它負(fù)責(zé)發(fā)送每個(gè)請(qǐng)求到合適的處理程序,使用視圖來返回響應(yīng)結(jié)果[3]。它是Spring產(chǎn)品組合的一部分,具有Spring IoC容器緊密結(jié)合Spring松耦合等特點(diǎn),因此擁有Spring的所有優(yōu)點(diǎn)。Spring MVC框架并不知道使用的視圖,所以不會(huì)強(qiáng)迫開發(fā)者只使用JSP技術(shù)。它分離了控制器、模型對(duì)象、過濾器以及處理程序?qū)ο蟮慕巧@種分離使其更容易進(jìn)行定制。
1.3? MyBatis
MyBatis是一款優(yōu)秀的持久層框架,它支持定制化SQL、存儲(chǔ)過程以及高級(jí)映射,避免了幾乎所有的JDBC代碼和手動(dòng)設(shè)置參數(shù)以及獲取結(jié)果集。MyBatis可以使用簡(jiǎn)單的XML或注解來配置和映射原生信息,將接口和Java的POJOs(Plain Ordinary Java Objects,普通的Java對(duì)象)映射到數(shù)據(jù)庫(kù)表。相對(duì)Hibernate和Apache OJB等“一站式”O(jiān)RM解決方案而言,MyBatis是一種“半自動(dòng)化”的ORM實(shí)現(xiàn)[4]。
1.4? HTML5
HTML5是萬(wàn)維網(wǎng)的核心語(yǔ)言、標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言下的一個(gè)應(yīng)用超文本標(biāo)記語(yǔ)言(HTML)的第五次重大修改。HTML5的設(shè)計(jì)目的是為了在移動(dòng)設(shè)備上支持多媒體,新的語(yǔ)法特征被引進(jìn)以支持這一點(diǎn),如video、audio和canvas標(biāo)記。HTML5還引進(jìn)了新的功能,可以真正改變用戶與文檔的交互方式[5]。HTML5被認(rèn)為是HTML,CSS和JavaScript結(jié)合的產(chǎn)物,這三者都是可靠的技術(shù),并且在HTML5規(guī)范下組織為一個(gè)整體,HTML負(fù)責(zé)結(jié)構(gòu),CSS負(fù)責(zé)在屏幕上呈現(xiàn)該結(jié)構(gòu)和內(nèi)容,而JavaScript負(fù)責(zé)其余一些極為重要的工作。
2? 平臺(tái)設(shè)計(jì)
2.1? 平臺(tái)功能設(shè)計(jì)
本文設(shè)計(jì)的大學(xué)生旅游服務(wù)平臺(tái)分為前臺(tái)和后臺(tái)兩部分,前臺(tái)為大學(xué)生用戶提供各種服務(wù),包括旅游景點(diǎn)欣賞、旅游產(chǎn)品展示、旅游產(chǎn)品購(gòu)買、個(gè)人信息管理等功能;后臺(tái)用于對(duì)平臺(tái)中數(shù)據(jù)進(jìn)行管理,包括用戶選購(gòu)、支付退款、產(chǎn)品信息、旅游景點(diǎn)等信息管理,具體功能劃分如圖1所示。
其中,前臺(tái)的旅游產(chǎn)品展示模塊用來向用戶展示當(dāng)前熱門的旅游產(chǎn)品,讓用戶能快速挑選到自己希望購(gòu)買的產(chǎn)品,為節(jié)省用戶時(shí)間。旅游景點(diǎn)欣賞模塊可以使用戶提前欣賞到各地的旅游信息,并訂購(gòu)到自己感興趣的旅游產(chǎn)品;旅游推薦模塊中設(shè)計(jì)了四種推薦方式,第一,熱門推薦,通過記錄用戶點(diǎn)擊次數(shù),將點(diǎn)擊率高的景點(diǎn)顯示在主頁(yè);第二,用戶偏好推薦,通過記錄用戶歷史的選擇偏好來進(jìn)行旅游產(chǎn)品的推薦;第三,熱門城市推薦,通過記錄城市的點(diǎn)擊率,向用戶推薦點(diǎn)擊率高的城市景點(diǎn);第四,基于物品的的協(xié)同過濾推薦,根據(jù)所有用戶的歷史偏好數(shù)據(jù),計(jì)算物品之間的相似性,然后把與用戶喜歡的物品類似的產(chǎn)品推薦給用戶,建立每個(gè)用戶的私人定制。后臺(tái)的景點(diǎn)管理模塊完成對(duì)后臺(tái)景點(diǎn)數(shù)據(jù)的增刪改查操作,社區(qū)管理模塊用于用戶社區(qū)信息操作,其主要功能包括置頂、加精、刪除、管理用戶發(fā)表的帖子。
2.2? 平臺(tái)架構(gòu)設(shè)計(jì)
本文設(shè)計(jì)的大學(xué)生旅游服務(wù)平臺(tái)采用五層架構(gòu)模式設(shè)計(jì),其架構(gòu)設(shè)計(jì)如圖2所示[6]。
由圖2可知,表示層通過頁(yè)面Page的方式讓用戶發(fā)送請(qǐng)求給后臺(tái),并將后臺(tái)傳輸?shù)臄?shù)據(jù)實(shí)時(shí)展現(xiàn)給用戶,從而實(shí)現(xiàn)數(shù)據(jù)可視化,該層功能主要通過Ajax、HTML5等技術(shù)來實(shí)現(xiàn)。控制層通過控制器Controller來接收并處理表示層傳輸?shù)恼?qǐng)求信息,同時(shí)也負(fù)責(zé)會(huì)話管理,以及將業(yè)務(wù)邏輯層處理后的結(jié)果返回給表示層,該層功能主要由Spring MVC技術(shù)負(fù)責(zé)完成。業(yè)務(wù)邏輯層主要負(fù)責(zé)處理系統(tǒng)的實(shí)際業(yè)務(wù)邏輯功能,如用戶選購(gòu)功能、用戶管理功能等,這些功能通過Spring相關(guān)技術(shù)來實(shí)現(xiàn),并使用Spring IoC有效管理這些功能所對(duì)應(yīng)的業(yè)務(wù)Bean。數(shù)據(jù)持久層完成對(duì)象關(guān)系映射,實(shí)現(xiàn)數(shù)據(jù)持久化,并負(fù)責(zé)對(duì)后臺(tái)數(shù)據(jù)進(jìn)行CRUD操作,該層功能使用MyBatis技術(shù)來實(shí)現(xiàn)。數(shù)據(jù)庫(kù)層負(fù)責(zé)本平臺(tái)數(shù)據(jù)的管理功能,它通過MySQL數(shù)據(jù)庫(kù)工具來實(shí)現(xiàn)。
3? 平臺(tái)實(shí)現(xiàn)
3.1? 表示層
本文設(shè)計(jì)的大學(xué)生旅游服務(wù)平臺(tái)前端頁(yè)面使用HTML5+ CSS3、JS以及Ajax技術(shù)實(shí)現(xiàn),通過Ajax發(fā)送異步請(qǐng)求,獲得從后臺(tái)返回的數(shù)據(jù),并在前端頁(yè)面進(jìn)行加載。其中,旅游產(chǎn)品數(shù)據(jù)加載將相關(guān)數(shù)據(jù)從后臺(tái)數(shù)據(jù)庫(kù)取出,然后通過Ajax和jQuery將相應(yīng)的數(shù)據(jù)加載到頁(yè)面中,以獲得顯示效果,其實(shí)現(xiàn)過程的核心代碼如下。
$.ajax({ url: "/love/index/index.do", type: 'POST',? data:{ "async":true },
success: function(data){ if (data.code == "0") { analysis(data); }
else {? Alert(data.msg); } }, error : function() { alert(“failWS”); } });
3.2? 控制層
本文設(shè)計(jì)的大學(xué)生旅游服務(wù)平臺(tái)的控制層使用Spring MVC框架來實(shí)現(xiàn),該層的主要功能是接收來自前端的請(qǐng)求并完成對(duì)數(shù)據(jù)的控制轉(zhuǎn)發(fā)。以下是主頁(yè)請(qǐng)求數(shù)據(jù)的關(guān)鍵代碼。
@PostMapping("index") @ResponseBody
public ResultVO index(@RequestParam(value="async",required=false) boolean async){
return ResultVOUtil.success(tyerService.listHot()); }
3.3? 業(yè)務(wù)邏輯層
本文設(shè)計(jì)的大學(xué)生旅游服務(wù)平臺(tái)的業(yè)務(wù)邏輯層使用Spring注入的方式,減少了XML配置和Java代碼,同時(shí)利用Spring IOC容器自動(dòng)管理這些業(yè)務(wù)邏輯Bean,其中處理用戶注冊(cè)的主要代碼如下。
@Service? public class UserService{
@Autowired? private UserMapper userMapper;
public void regist(UserRegisterForm userRegister Form){
userMapper.regist(userRegisterForm); } }
3.4? 數(shù)據(jù)持久層
本文設(shè)計(jì)的大學(xué)生旅游服務(wù)平臺(tái)的數(shù)據(jù)持久層使用MyBatis來實(shí)現(xiàn),通過在XML文件中進(jìn)行配置,實(shí)現(xiàn)對(duì)象與數(shù)據(jù)庫(kù)中表的自動(dòng)映射,使用SQL語(yǔ)句對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)進(jìn)行增刪改查,完成數(shù)據(jù)持久化操作。以下為用戶管理的映射配置核心代碼[7]。
<mapper namespace="net.messi.travel.mapper.UserMapper"
<resultMap type="net.messi.travel.dataobj.User" id="userMap">
<id property="id" column="id"/>
<result property="username" column=" username"/>......</resultMap>
<select id="getUserByPhone" parameterType= "String" resultType="user">
select * from user where phone=#{phone}</select>......</select>
<insert id="regist" parameterType="userRegisterForm"> insert into user
values(null,#{username},#{password},#{phone},#{email},#{isAdmin},null,null)
</insert> ……</mapper>
3.5? 數(shù)據(jù)庫(kù)層
本文設(shè)計(jì)的大學(xué)生旅游服務(wù)平臺(tái)使用MySQL數(shù)據(jù)庫(kù)系統(tǒng)來存儲(chǔ)和管理相關(guān)數(shù)據(jù),主要數(shù)據(jù)表包括:輪播廣告表carouselAds、bank表bankinfo、日程表daytrip、feesofdescriptioon費(fèi)用說明、homoter行程表、hot熱度表、orders訂單表、playways熱門活動(dòng)表、recommend推薦表、startdate起始日期表、tyer旅游產(chǎn)品表、user用戶表、warmprompt溫馨提示表等。
4? 效果展示
上述所有功能實(shí)現(xiàn)后便得到了大學(xué)生旅游服務(wù)平臺(tái),其總體效果如圖3所示。
5? 結(jié)? 論
本文使用SSM、HTML5、Ajax等技術(shù)開發(fā)了面向大學(xué)生的旅游服務(wù)平臺(tái),此平臺(tái)為在校大學(xué)生旅游愛好者提供實(shí)惠的旅游產(chǎn)品和優(yōu)質(zhì)的旅游攻略。同時(shí),平臺(tái)采用多層架構(gòu)模式進(jìn)行設(shè)計(jì),提高了系統(tǒng)的可擴(kuò)展性和可維護(hù)性。并且平臺(tái)前端界面設(shè)計(jì)友好,頁(yè)面板塊劃分清晰,方便用戶瀏覽,可以有效提高用戶體驗(yàn)。
參考文獻(xiàn):
[1] 李亞娟,王海峰.基于移動(dòng)平臺(tái)的旅游系統(tǒng)的開發(fā)與設(shè)計(jì) [J].電子設(shè)計(jì)工程,2018,26(17):85-89.
[2] 梁弼,王光瓊,鄧小清.基于Spring框架的Web應(yīng)用輕量級(jí)3S解決方案 [J].西華大學(xué)學(xué)報(bào)(自然科學(xué)版),2018,37(3):78-82.
[3] Liang B.The study and application of the new control layer for enterprise-class web applications [J].Journal of Computers,2017,28(6):151-162.
[4] 王梓,夏凱.基于SSM框架的水質(zhì)監(jiān)測(cè)數(shù)據(jù)管理系統(tǒng)研究 [J].計(jì)算機(jī)時(shí)代,2018(7):25-27+31.
[5] 王媛.基于HTML5技術(shù)的時(shí)空聯(lián)合目標(biāo)軌跡動(dòng)態(tài)可視化技術(shù) [J].科學(xué)技術(shù)與工程,2018,18(29):98-103.
[6] Liang B. Study on a Novel and Lightweight Five-layer Architecture and Its Application [C]// ICEESE2016,中國(guó)廣東廣州,2016:246-251.
[7] 梁弼.一種簡(jiǎn)捷的數(shù)據(jù)持久層解決方案 [J].現(xiàn)代電子技術(shù),2016,39(14):84-86+91.