唐煜杰,張明會(huì)
(大連東軟信息學(xué)院 軟件工程,遼寧 大連 116023)
漫畫讀者已經(jīng)越來越多,在過去,讀者們閱讀紙質(zhì)漫畫,只能與身邊少數(shù)的愛好者討論,分享也只能以借閱的方式,興趣圈非常小,也難以看到很多不同種類的漫畫。很多漫畫讀者選擇在QQ群和漫畫論壇上分與其他漫畫愛好者交流漫畫,但是這樣的交流分享方式十分單一,無法在一個(gè)網(wǎng)站上分享的同時(shí)閱讀漫畫,用戶只能上傳一些截圖,未看過該漫畫的讀者還要自己去別處找漫畫看,這種方式讓廣大漫畫讀者覺得極為不便又浪費(fèi)時(shí)間,漫畫的閱讀與交流需要有一定的連貫性與流暢性。
圖1 總體業(yè)務(wù)流程圖
圖 2功能結(jié)構(gòu)圖
Spring MVC是Spring提供的一個(gè)強(qiáng)大而靈活的web框架。借助于注解,Spring MVC提供了幾乎是POJO的開發(fā)模式,使得控制器的開發(fā)和測(cè)試更加簡(jiǎn)單[1]。這些控制器一般不直接處理請(qǐng)求,而是將其委托給Spring上下文中的其他bean,通過Spring的依賴注入功能,這些bean被注入到控制器中??梢暂p松實(shí)現(xiàn)DIP(依賴倒換)、OCP(開閉原則)、IOC(控制反轉(zhuǎn))、AOP(面向切面)等特性[2]。
MyBatis是支持普通 SQL查詢,存儲(chǔ)過程和高級(jí)映射的優(yōu)秀持久層框架[3]。MyBatis消除了幾乎所有的JDBC代碼和參數(shù)的手工設(shè)置以及結(jié)果集的檢索。MyBatis使用簡(jiǎn)單的 XML或注解用于配置和原始映射,將接口和Java的POJOs(Plain Old Java Objects,普通的 Java對(duì)象)映射成數(shù)據(jù)庫(kù)中的記錄[4]。
MySQL是一個(gè)開放源碼的小型關(guān)聯(lián)式數(shù)據(jù)庫(kù)管理系統(tǒng)由瑞典MySQL AB 公司開發(fā),目前屬于Oracle 旗下產(chǎn)品。在 WEB 應(yīng)用方面,MySQL是最好的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)[5]。非常流行的開源軟件組合LAMP中的“M”指的就是MySQL。
表1 用戶信息表(t_user)
表2 漫畫信息表(t_goods)
圖3 系統(tǒng)架構(gòu)圖
表3 分類信息表(t_category)
表4 評(píng)論信息表(t_comment)
本系統(tǒng)主要分為管理員和用戶兩種角色,管理員上傳漫畫、用戶選擇漫畫、閱讀漫畫、評(píng)論漫畫等,涉及管理員及用戶兩種用戶類型。漫畫交流分享平臺(tái)的總體業(yè)務(wù)流程如圖1所示。
根據(jù)總體業(yè)務(wù)流程,確定本系統(tǒng)主要包括如圖2所示功能模塊。
在線漫畫交流分享平臺(tái)的系統(tǒng)架構(gòu)分為四層,如圖3所示。
其中第一層為Web層,包含前臺(tái)JSP頁(yè)面與Action部分的DispatcherServlet,負(fù)責(zé)接收前臺(tái)發(fā)來的請(qǐng)求并控制轉(zhuǎn)發(fā)請(qǐng)求。第二層為Service層,負(fù)責(zé)處理業(yè)務(wù)邏輯。第三層為Dao層,由持久層文件組成,負(fù)責(zé)接收Service的請(qǐng)求并對(duì)操作數(shù)據(jù)庫(kù)。第四層為實(shí)體類,負(fù)責(zé)存放各種實(shí)體類文件及其構(gòu)造函數(shù)。
本系統(tǒng)主要有四個(gè)實(shí)體,分別為漫畫、漫畫類別、用戶與評(píng)論,四個(gè)實(shí)體間的關(guān)系(ER圖)如圖4所示。
圖4 系統(tǒng)ER圖
通過對(duì)領(lǐng)域?qū)ο蟆I(yè)務(wù)對(duì)象及對(duì)象間關(guān)聯(lián)的分析,對(duì)本系統(tǒng)的數(shù)據(jù)庫(kù)表進(jìn)行了設(shè)計(jì),如表1-表4所示。本系統(tǒng)數(shù)據(jù)庫(kù)管理采用MySQL。
(1)用戶信息表(t_user)。用戶信息表主要用于保存系統(tǒng)管理員的信息,主要字段包括:用戶ID、用戶名、登錄密碼、用戶年齡、用戶性別、用戶郵箱、用戶身份。表結(jié)構(gòu)如表1所示。
圖5 評(píng)論漫畫用例順序圖
圖6 評(píng)論漫畫用例的設(shè)計(jì)類圖
(2)漫畫信息表(t_goods)。漫畫信息表主要用于保存漫畫的信息,主要字段包括:漫畫ID、類別ID、漫畫名稱、漫畫簡(jiǎn)介、漫畫作者、漫畫地區(qū)、漫畫上傳時(shí)間、漫畫推薦度、漫畫圖片地址。表結(jié)構(gòu)如表2所示。
(3)分類信息表(t_category)。用戶信息表主要用于保存漫畫分類的信息,主要字段包括:分類ID、分類名、分類圖片、分類狀態(tài)。表結(jié)構(gòu)如表3所示。
(4)評(píng)論信息表(t_comment)。評(píng)論信息表主要用于保存用戶評(píng)論的信息,主要字段包括:評(píng)論ID、漫畫ID、用戶ID、評(píng)論內(nèi)容、評(píng)論時(shí)間。表結(jié)構(gòu)如表4所示。
本系統(tǒng)的主要功能包括用戶瀏覽漫畫、評(píng)論漫畫、上傳漫畫以及管理員對(duì)基本信息管理等,介于篇幅有限,下文僅對(duì)評(píng)論漫畫和上傳漫畫兩個(gè)模塊進(jìn)行詳細(xì)設(shè)計(jì)。
(1)用例實(shí)現(xiàn)。用戶選擇漫畫后進(jìn)入閱讀界面,然后可以在閱讀界面中添加評(píng)論,評(píng)論通過post請(qǐng)求發(fā)送給Controller層的CommentAction類,然后通過AddComment()方法傳給CommentService,后發(fā)送給持久層寫進(jìn)數(shù)據(jù)庫(kù)。評(píng)論漫畫用例的實(shí)現(xiàn)順序圖如圖5所示。
(2)設(shè)計(jì)類圖。根據(jù)順序圖的分析得到評(píng)論漫畫用例的設(shè)計(jì)類圖,分為實(shí)體類user,控制層CommentAction類和邏輯層CommentService類,如圖6所示。
(1)用例實(shí)現(xiàn)。用戶登錄后可以上傳自己的漫畫,上傳內(nèi)容和漫畫實(shí)體類中的元素相統(tǒng)一,點(diǎn)擊上傳按鈕之后發(fā)送post請(qǐng)求到UploadAction類中,再獲取用戶ID,用AddGoods()方法發(fā)送到UploadService類中,檢查漫畫是否已存在,如不存在,傳入持久層插入數(shù)據(jù)庫(kù),并將結(jié)果返回到頁(yè)面。上傳用例的實(shí)現(xiàn)順序圖如圖7所示。
(2)設(shè)計(jì)類圖。根據(jù)分析得到上傳用例的設(shè)計(jì)類圖,分為user和comic兩個(gè)實(shí)體類及上傳的控制層和邏輯層類,如圖8所示。
圖7 上傳用例順序圖
圖8 上傳用例的設(shè)計(jì)類圖
第一個(gè)核心功能是用戶的漫畫上傳功能,因?yàn)槁嫿涣鞣窒砥脚_(tái)強(qiáng)調(diào)的就是交流和分享,用戶登錄后即可分享漫畫,進(jìn)入上傳漫畫頁(yè)面,填入漫畫信息,上傳封面和內(nèi)容圖片,點(diǎn)擊上傳即可上傳完畢。點(diǎn)擊分享漫畫,進(jìn)入分享漫畫頁(yè)面,并填入漫畫信息,點(diǎn)擊上傳進(jìn)行分享。Mapper層實(shí)現(xiàn)的部分代碼如下:
用戶在漫畫瀏覽頁(yè)面上可以對(duì)當(dāng)前瀏覽的漫畫進(jìn)行評(píng)論,用戶先打開主頁(yè),然后選擇分類,選擇漫畫進(jìn)入閱讀頁(yè)面,然后進(jìn)行評(píng)論。實(shí)現(xiàn)評(píng)論功能的Service和Mapper層代碼如下所示:
本文總結(jié)了漫畫交流系統(tǒng)分析、設(shè)計(jì)與實(shí)現(xiàn)的全過程,系統(tǒng)最終實(shí)現(xiàn)了用戶瀏覽漫畫、漫畫交流及分享的功能,為漫畫愛好者及漫畫作者提供了很好的交流分享平臺(tái)。本項(xiàng)目主要有兩個(gè)特點(diǎn):
(1)業(yè)務(wù)邏輯上簡(jiǎn)明直接,目標(biāo)用戶設(shè)定準(zhǔn)確,以漫畫愛好者與漫畫作者為主,為漫畫愛好者提供了一個(gè)分享自己喜愛的漫畫與他人交流的平臺(tái),也為新手漫畫作者提供了直接展示自己漫畫的機(jī)會(huì),目前網(wǎng)絡(luò)上并沒有功能主題相似的網(wǎng)站,本系統(tǒng)可以填補(bǔ)市場(chǎng)空白,有著廣闊的發(fā)展空間。
(2)程序上,由于使用了Spring與Mybatis框架,使得項(xiàng)目十分精簡(jiǎn),代碼量比傳統(tǒng)的Servlet +JDBC精簡(jiǎn)很多,便于維護(hù)。開發(fā)過程中使用了敏捷開發(fā)的思想,把開發(fā)與測(cè)試相結(jié)合,故UAT階段的Bug數(shù)非常少。此外,Spring框架的使用使得系統(tǒng)相應(yīng)性能及安全性也比傳統(tǒng)架構(gòu)出色。
參考文獻(xiàn):
[1]周燕玲.SpringMVC框架開發(fā)WEB應(yīng)用程序的探索與研究[J].科技廣場(chǎng),2016,(6):25-28.
[2]董英茹.簡(jiǎn)談AngularJS在下一代Web開發(fā)中的應(yīng)用[J]. 軟件工程師,2015,(05):30-31.
[3]姜英,王嘉.基于Struts2+Spring+Freemarker的自定義框架研究[J].電腦編程技巧與維護(hù),2013,(12):4-5
[4]林鈺杰,吳麗賢.基于整合框架的Web應(yīng)用系統(tǒng)開發(fā)平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2016,24(20):62-65.
[5]趙璘.基于Spring MVC+JDBCTemplate的Web系統(tǒng)的研究與應(yīng)用[J],軟件工程,2017,1:5-8.
[6]陽(yáng)小蘭,羅明.基于Spring+SpringMVC+MyBatis網(wǎng)上論壇的設(shè)計(jì)與實(shí)現(xiàn)[J].黑龍江科技信息,2016,(36):279-280.
[7]王曉華.試析MySQL數(shù)據(jù)庫(kù)性能的調(diào)優(yōu)[J].電腦編程技巧與維護(hù),2016,(22):48,82.
[8]賈躍,付麗梅,韓羽佳.軟件開發(fā)技能測(cè)評(píng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 電子技術(shù)與軟件工程,2016,(22):64-65.
[9]Zhang D,Wei Z,Yang Y.Research on Lightweight MVC Framework Based on Spring MVC and Mybatis[C]// Sixth International Symposium on Computational Intelligence and Design.IEEE,2014:350-353.
[10]SerdarYegulalp,SerdarYegulalp.MySQL 8.0:More Unicode,less hassle[J].InfoWorld.com,2016.
[11]林躍進(jìn).論Spring編寫J2EE程序的優(yōu)勢(shì)[J].遼寧師專學(xué)報(bào)(自然科學(xué)版),2007,(01):34-35.
[12]付麗梅,劉英鵬,賈躍.基于騰訊微校平臺(tái)的校園移動(dòng)辦公APP設(shè)計(jì)與實(shí)現(xiàn)[J].信息系統(tǒng)工程,2017,(01):156-157.
[13]李緒成,王紅,閆海珍.基于B/S架構(gòu)的MIS生成系統(tǒng)[J].長(zhǎng)春師范學(xué)院學(xué)報(bào)(自然科學(xué)版),2009,(02):24-26.
[14]羅迪,云龍,楊姣.基于Spring+MyBatis的高校人事管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].數(shù)字技術(shù)與應(yīng)用,2017,(04):179.
[15]李洋.SSM框架在Web應(yīng)用開發(fā)中的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2016,(12):190-194.