基于SpringMVC的漫画交流分享平台设计与实现
2017-03-08张明会唐煜杰
张明会,唐煜杰
(1.大连东软信息学院 软件工程,辽宁省 大连市 116023)
1 引言
漫画读者已经越来越多,在过去,读者们阅读纸质漫画,只能与身边少数的爱好者讨论,分享也只能以借阅的方式,兴趣圈非常小,也难以看到很多不同种类的漫画。很多漫画读者选择在QQ群和漫画论坛上分与其他漫画爱好者交流漫画,但是这样的交流分享方式十分单一,无法在一个网站上分享的同时阅读漫画,用户只能上传一些截图,未看过该漫画的读者还要自己去别处找漫画看,这种方式让广大漫画读者觉得极为不便又浪费时间,漫画的阅读与交流需要有一定的连贯性与流畅性。
2 系统开发技术
2.1 SpringMVC
Spring MVC是Spring提供的一个强大而灵活的web框架。借助于注解,Spring MVC提供了几乎是POJO的开发模式,使得控制器的开发和测试更加简单[1-4]。这些控制器一般不直接处理请求,而是将其委托给Spring上下文中的其他bean,通过Spring的依赖注入功能,这些bean被注入到控制器中。可以轻松实现DIP(依赖倒换)、OCP(开闭原则)、IOC(控制反转)、AOP(面向切面)等特性[5]。
2.2 Mybatis
MyBatis是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架[6-8]。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的 XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录[9]。
2.3 MySQL
MySQL是一个开放源码的小型关联式数据库管理系统由瑞典MySQL AB 公司开发,目前属于Oracle 旗下产品[10]。在 WEB 应用方面,MySQL是最好的关系型数据库管理系统之一。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库[11]。非常流行的开源软件组合LAMP中的“M”指的就是MySQL[12]。
3 系统功能分析与设计
3.1 业务流程
通用的管理系统中一般至少都会根据不同功能设置不同的角色,不论是Web系统还是APP[13-15]。本系统主要分为管理员和用户两种角色,管理员上传漫画、用户选择漫画、阅读漫画、评论漫画等,涉及管理员及用户两种用户类型。漫画交流分享平台的总体业务流程如图1所示。
3.2 功能模块设计
根据总体业务流程,确定本系统主要包括如图2所示功能模块。
图1 总体业务流程图Fig.1 Business process diagram
图 2 功能结构图Fig.2 Functional structure diagram
3.3 系统架构设计
在线漫画交流分享平台的系统架构分为四层,如图3所示。
其中第一层为Web层,包含前台JSP页面与Action部分的DispatcherServlet,负责接收前台发来的请求并控制转发请求。第二层为Service层,负责处理业务逻辑。第三层为Dao层,由持久层文件组成,负责接收Service的请求并对操作数据库。第四层为实体类,负责存放各种实体类文件及其构造函数。
3.4 数据库设计
本系统主要有四个实体,分别为漫画、漫画类别、用户与评论,四个实体间的关系(ER图)如图4所示。
通过对领域对象、业务对象及对象间关联的分析,对本系统的数据库表进行了设计,如表3.1--表3.8所示。本系统数据库管理采用MySQL。
表1 用户信息表(t_user)Tab.1 User information table(t_user)
(1)用户信息表(t_user)
用户信息表主要用于保存系统管理员的信息,主要字段包括:用户ID、用户名、登录密码、用户年龄、用户性别、用户邮箱、用户身份。表结构如表1所示。
(2)漫画信息表(t_goods)
漫画信息表主要用于保存漫画的信息,主要字段包括:漫画ID、类别ID、漫画名称、漫画简介、漫画作者、漫画地区、漫画上传时间、漫画推荐度、漫画图片地址。表结构如表2所示。
(3)分类信息表(t_category)
用户信息表主要用于保存漫画分类的信息,主要字段包括:分类ID、分类名、分类图片、分类状态。表结构如表3所示。
图 3 系统架构图Fig.3 System architecture diagram
图4 系统ER图Fig.4 System ER diagram
表2 漫画信息表(t_goods)Tab.2 Comic information table(t_goods)
表3 分类信息表(t_category)Tab.3 category information table(t_category)
(4)评论信息表(t_comment)
评论信息表主要用于保存用户评论的信息,主要字段包括:评论ID、漫画ID、用户ID、评论内容、评论时间。表结构如表4所示。
表4 评论信息表(t_comment)Tab.4 comment information table (t_comment)
3.5 对象设计
本系统的主要功能包括用户浏览漫画、评论漫画、上传漫画以及管理员对基本信息管理等,介于篇幅有限,下文仅对评论漫画和上传漫画两个模块进行详细设计。
3.5.1 评论漫画用例对象设计
(1)用例实现
用户选择漫画后进入阅读界面,然后可以在阅读界面中添加评论,评论通过post请求发送给Controller层的CommentAction类,然后通过AddComment()方法传给CommentService,后发送给持久层写进数据库。
(2)设计类图
根据顺序图的分析得到评论漫画用例的设计类图,分为实体类user,控制层CommentAction类和逻辑层CommentService类,如图5所示。
图5 评论漫画用例的设计类图Fig.6 Class diagrams for comments on comic use cases
3.5.2 上传漫画用例对象设计
(1)用例实现
用户登录后可以上传自己的漫画,上传内容和漫画实体类中的元素相统一,点击上传按钮之后发送post请求到UploadAction类中,再获取用户ID,用AddGoods()方法发送到UploadService类中,检查漫画是否已存在,如不存在,传入持久层插入数据库,并将结果返回到页面。
(2)设计类图
根据分析得到上传用例的设计类图,分为user和comic两个实体类及上传的控制层和逻辑层类,如图6所示。
图6 上传用例的设计类图Fig.6 Class diagrams for uploading usecase
4 系统实现
4.1 上传功能
第一个核心功能是用户的漫画上传功能,因为漫画交流分享平台强调的就是交流和分享,用户登录后即可分享漫画,进入上传漫画页面,填入漫画信息,上传封面和内容图片,点击上传即可上传完毕。点击分享漫画,进入分享漫画页面,并填入漫画信息,点击上传进行分享。Mapper层实现的部分代码如下:
4.2 评论功能
用户在漫画浏览页面上可以对当前浏览的漫画进行评论,用户先打开主页,然后选择分类,选择漫画进入阅读页面,然后进行评论。实现评论功能的Service和Mapper层代码如下所示:
@Override public Page<Goods> getGoodsByCate(String cateId,String sort){
5 总结
本文总结了漫画交流系统分析、设计与实现的全过程,系统最终实现了用户浏览漫画、漫画交流及分享的功能,为漫画爱好者及漫画作者提供了很好的交流分享平台。本项目主要有两个特点:
(1)业务逻辑上简明直接,目标用户设定准确,以漫画爱好者与漫画作者为主,为漫画爱好者提供了一个分享自己喜爱的漫画与他人交流的平台,也为新手漫画作者提供了直接展示自己漫画的机会,目前网络上并没有功能主题相似的网站,本系统可以填补市场空白,有着广阔的发展空间。
(2)程序上,由于使用了Spring与Mybatis框架,使得项目十分精简,代码量比传统的Servlet +JDBC精简很多,便于维护。开发过程中使用了敏捷开发的思想,把开发与测试相结合,故UAT阶段的Bug数非常少。此外,Spring框架的使用使得系统相应性能及安全性也比传统架构出色。
[1] 周燕玲. SpringMVC框架开发WEB应用程序的探索与研究[J].科技广场,2016,(6):25-28.Zhou Yanling.Exploration and Research on developing WEB application program based on SpringMVC framework, Science Mosaic,2016,(6):25-28.
[2] 赵璘.基于Spring MVC+JDBCTemplate的Web系统的研究与应用[J],软件工程,2017,1:5-8.Zhao Lin.Research and application of Web system based on Spring MVC+JDBCTemplate, Software Engineer,2017,1:5-8.
[3] 林跃进. 论Spring编写J2EE程序的优势[J]. 辽宁师专学报(自然科学版),2007,(01):34-35.Lin Yuejing. On the advantages of writing J2EE program by Spring ,Journal of Liaoning Teachers College(Natural Science Edition) ,2007,(01):34-35.
[4] 李洋. SSM框架在Web应用开发中的设计与实现[J]. 计算机技术与发展,2016,(12):190-194.Li Yang.Design and implementation of SSM framework in Web application development, Computer Technology and Development, ,2016,(12):190-194.
[5] 阳小兰,罗明.基于Spring+SpringMVC+MyBatis网上论坛的设计与实现[J]. 黑龙江科技信息, 2016(36):279-280.Yang Xiaolan ,Luoming.Design and implementation of online forum based on Spring+SpringMVC+MyBatis, Heilongjiang Science and Technology Information, 2016(36):279-280.
[6] 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.
[7] 姜英,王嘉. 基于Struts2+Spring+Freemarker的自定义框架研究[J]. 电脑编程技巧与维护,2013,(12):4-5.Jiang Ying,Wang Jia.Research of custom framework based on Struts2+Spring+Freemarker, Computer Programming Skills & Maintenance,2013,(12):4-5.
[8] 董英茹. 简谈AngularJS在下一代Web开发中的应用[J]. 软件工程师,2015,(05):30-31.Dong Yingru.Brief talk about the application of AngularJS in next generation Web development, Software Engineer, 2015,(05):30-31.
[9] 罗迪,云龙,杨姣. 基于Spring+MyBatis的高校人事管理系统的设计与实现[J]. 数字技术与应用,2017,(04):179.Luo Di,Yun Long,Yang Jiao.Design and implementation of university personnel management system based on Spring+MyBatism. Digital Technology and Application,2017,(04):179.
[10] 刘雪香. 大型ERP 实施中数据库的设计优化研究[J]. 软件,2017,38(5):137-139.Liu Xuexiang. Research on database design optimization in large scale ERP implementation, Electronic Design Engineering[J] , Software,2017,38(5):137-139.
[11] 王庆福.网站建设中数据库技术与WEB 技术的应用对比研究[J].软件,2013,34(2):86-87.Wang Qingfu. Comparative study of database technology and WEB technology in website construction[J], Software, 2013,34(2):86-87.
[12] 贾跃,付丽梅,韩羽佳. 软件开发技能测评系统的设计与实现[J]. 电子技术与软件工程,2016,(22):64-65.Jia Yue,Fu Limei, Han Yujia.Design and implementation of software development skills evaluation system, Electronic Technology &Software Engineering,2016,(22):64-65.
[13] Serdar Yegulalp,Serdar Yegulalp. MySQL 8.0: More Unicode, less hassle[J]. InfoWorld.com,2016
[14] 付丽梅,刘英鹏,贾跃. 基于腾讯微校平台的校园移动办公APP设计与实现[J]. 信息系统工程,2017,(01):156-157.Fu Limei,Liu YingPeng, Jia Yue. Design and implementation of campus mobile office APP based on Tencent micro school platform .China CIO News, 2017, (01):156-157.
[15] 李绪成,王红,闫海珍. 基于B/S架构的MIS生成系统[J]. 长春师范学院学报(自然科学版),2009,(02):24-26.Li Xucheng,Wang Hong,Yan Haizhen. MIS generation system based on B/S architecture,Journal of Changchun Normal University(Natural Sciences) ,2009,(02):24-26.