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