【基于SpringBoot的博客系统设计与实现17000字(论文)】_第1页
【基于SpringBoot的博客系统设计与实现17000字(论文)】_第2页
【基于SpringBoot的博客系统设计与实现17000字(论文)】_第3页
【基于SpringBoot的博客系统设计与实现17000字(论文)】_第4页
【基于SpringBoot的博客系统设计与实现17000字(论文)】_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

I1绪论1.1博客的背景分析博客,英文名为Blog,是一种常见的社交类软件系统。1997年,博客这个词被首次提出。埃文威廉在2006年创立了Twitter,大卫•卡普(DavidKarp)在2007年在Twitter和博客之间制造了一场混乱,2000年,日本的网络博客概念首次进入中国[1-2]。2002年,随着中国的开放,博客进入了一个广泛普及的时期英寸英寸2005年各大网站纷纷建立了自己的博客系统,真正进入博客时代是在2007年开始慢慢出现各种小型博客网页,博客时代真正开始[3-4]。2009年,他们在新浪微博上走红,2011年第一个简单的博客出现,同时发布点滴网在大型网站上拥有小型博客,如网易。慢慢来开始关注轻博客获取。博客在市场上有独特的权威,可能会变得可笑在严重的病例可以被隔离博客。此外,博客可以提供学习者的学习方法顺序[5]。每个可以教技术的人一起学习,一起做进度。介于此发展途径,通过协议反复反省,成长为博客。博客对校园也有积极的影响文化网络对师生的学习生活有着深刻的影响学习。作为一个共同记录知识和生活的平台,为高中博客提供了一种新的类型和平台-作为老师博客和微博扩展强调简单的博客内容相同,但它更有趣。它促进了对喜爱和有趣内容的积极理解、学习和交流。只有学生参与互动,在这方面可以取得相当大的进展。目前国内外对博客系统的设计有很多局限性。比如博客界面老旧,功能缺乏,后台管理所涉及技术老旧,管理不便等诸多问题。且目前存在的博客都是偏向于专业化或者有些博主是以收益为主分享知识,这对我们学生来说似乎并不友好。目前大多数博客系统前端界面都是采用HTML+CSS+JavaScript技术所写,并没用到现在主流的前端框架。后台多数采用JSP+JavaServlet或者采用PHP+MySQL模式。只有极少数的优质博客实现了前后端分离技术,或这目前最主流的前后端框架。此次博客系统的涉及,作为新一代的社交模式,采用目前最主流的SpringBoot搭建后台,使用SemanticUI呈现新颖的前端界面。另外,本次所开发的博客不仅在技术方面有很多改进,内容方面都表现出了自己的独特性:注重用户的效果体验,用户阅读体验更佳:代码高亮显示拥有更好的用户交互效果,这给阅读者一个视觉效果比直接阅读枯燥的理论知识要好得多。注重用户的实际体验,着力于高质量的博客内容,推进以兴趣为驱动的社交,相对于强调内容,我觉得本系统更具有实际意义,它的个性化界面和个性化操作,将是用户最好的学习工具。1.2博客存在的意义近几年,互联网这个行业已经成了一个热门领域,尤其是许多高校学生正在处于寻找自我方向的初级阶段。对于刚刚踏入某一个领域的他们来说,每一项技术对他们来说都是陌生的。与此同时,如今的信息化大数据时代也是一种非常流行的技术交谈方式,如IT之家,刷一刷即可了解最近最新的互联网前沿信息;CSDN,搜一搜就可找到你想要的某一领域的技术点;哔哩哔哩,搜一搜即可得到各大机构的培训课程。而本次课题所突出的就是提供给技术人员的一个交谈平台,包含评论、喜欢、引用等特点,使其具有线上“游乐场”之称,以兴趣主导,以精致表达吸引围观,将技术学习当成一种习惯[6-7]。高校的学生们所能获取网络前沿信息的网络媒体通道有CSDN、掘金、IT之家、微信公众号、中关村在线等方式,但无一种是专门向技术求学者专门设置。CSDN虽为互联网博客巨头,他们都有专业的团队在做维护,但是信息混杂,有效信息很难及时获取,掘金虽含有大量信息,但因其注册操作信息较多,广告弹窗较多,容易使学生厌恶;各类公众号多用于发布通知,很少有平台会定期更新新的技术文章,这就造成人员流动较大。本系统设计的意义如下几个方面:博客帮助学生养成技术分享与问题探讨的习惯。个人博客作为比博客相对轻松,比微博相对严肃的方式,用精致内容表达着对互联网的认知,透露着对自我的探寻和对梦想的追寻,以及对现实的抵抗。文字图片的排版以及内容编排需要静来去思考、去沉淀,这其实给了高校的学生们一种去浮躁的表达方式[8]。在校园环境这样清净的环境中,使得交流更加贴近与生活。通过技术分享认识一批三观相合的朋友,有老师,同学,甚至有技术大咖线上指导,大家通过线上文字交流,线下可以相聚,因为是校园环境的关系,这样的群体更容易聚集,也更加放心交流。博客倡导积极探讨解决技术问题,鼓励大家传达技术领域的前沿知识、分享美好生活,并在此结识新的朋友和技术领域的老师,为自己学习突破技术难点提供一个平台。1.3任务与问题分析本课题结合理论实际,从生活的角度出发,凭借软件工程理论和面向对象的思想,对基于SpringBoot的博客系统进行分析与设计,借助IDEA工具与Java高级语言进行代码编写,使用当下较为先进的SpringBoot+JPA+thymeleaf模版开发实现。1.3.1课题研究任务整个代码结构搭建松耦合的三层,Controller、View、Model层,完成View与Controller以及Controller与Model交互结构的搭建,进而完成整个系统的基本框架搭建,再根据具体需求对框架进行添加相关结构等操作,将采用Maven工具来管理整个项目[9];博客系统需求解析,对系统所具备的功能用实行剖析总结,并对系统的功能和系统应具备的安全性进行分析总结,同时借助Visio工具绘制相关图表进行说明;博客系统总体设计,分析博客系统的核心架构,详细分析介绍各个功能模块并设计完成系统的数据库,设计实体结构,设计实体之间的关系,用Visio工具绘制相应的逻辑关系图。博客的系统实现,借助相关工具介绍实现过程,并且通过对各个模块关键功能的业务逻辑实现描述以及借助绘图工具绘制的相关图表来说明整个系统功能实现以及安全实现的过程;博客系统系统测试,常见的系统测试分为两种,一种是黑盒测试,一种是白盒测试。而白盒测试主要书针对于代码的测试,经常会用到一些自动化测试工具,而本次论文的写作,由于受篇幅的限制,主要以黑盒测试为主,并对响应的测试用例做分析,包括有效的测试和无效的测试方案,最终对测试用例数据做对比总结,以达到软件开发的设计要求。1.3.2课题问题分析采用软件工程理论,结合面向对象编程思想,完成MVC架构的搭建。对博客采用分层结构、多重验证、安全编码等保障系统安全。采用新型界面设计,实现设计图的零像素还原。通过各种测试,实现系统的便捷化,使用化,为众多技术人员提供一手学习资料和最新的前沿知识。1.4论文结构计划第一章:本章节是绪论,主要针对的是本课题所涉及的技术相关的国内外研究现状,建立本博客系统的意义等做分析。第二章:关键技术分析,这里面设计的是本次课题开发过程中涉及的关键技术,包括每项技术的架构图等。第三章:系统的需求分析,本章节主要对系统的功能和性能做出分析,另外对系统的用户和用例做了分析。第四章:系统的总体设计,本章节对系统的每个功能模块做了简单的介绍,并对每一个功能模块的架构图做了介绍。最后,利用E-R图介绍了本系统的数据库设计详情。第五章:系统的实现与测试,给出了响应的测试用例和结果,并用缺陷报告和性能测试对系统的所有功能做了一个综合考量。第六章:总结与展望,对本次系统的开发工作和论文撰写的工作进行总结和评价,指出了毕业设计的系统中存在的不足与缺陷。以及这次设计的收获与心得体会。最终附上论文中的参考文献和致谢内容。

2系统技术难点分析本章将阐述此次研究的课题博客系统实现过程中所使用的关键技术,之所以做技术介绍,因为其所涉及的技术不仅限于基本的Java技术。本次课题主要用于基本框架搭建的松耦合架构模式和B/S架构模式,SpringBoot框架,JPA+thymeleaf模版,用于项目管理的Maven工具。2.1系统架构技术随着网络技术的发展,特别随着Web技术的不断成熟,各种系统架构模式层出不穷。我们常见的有B/S架构和C/S架构,后因企业越来越需要灵活地处理业务流程,并符合系统开发的安全性要求和后期的维护工作,因此就出现了松耦合架构和紧耦合架构[10]。本模块将主要介绍松耦合架构和B/S架构,C/S架构和紧耦合架构本系统没有涉及,故不做过多描述。松耦合架构松耦合系统通常是基于消息的系统,其中客户端和远程服务不知道如何实现彼此。客户端和服务之间的通信由消息架构控制。只要消息符合协商好的模式,就可以根据需要修改PC端和Service端的实现过程,这样的话就不用担心互相之间的损害。而在松耦合架构中总结了了紧耦合架构的所有缺点,很多技术指标超出了我们的估计,具体表现分为以下几个方面:实现负荷自适应机制。(根据当时的操作环境,松散耦合的体系结构分配并行任务以避免过载)。实现了运行任务的随机控制。(松散耦合的体系结构对正在运行的任务进行随机调整和控制,从而进一步避免了连续过载的现象)。基本杜绝网络攻击。由于代理服务器的隔离和屏蔽效果,结合其他安全管理方法,可以在代理服务器上识别并过滤外部攻击,从而保护后续服务器免受感染。Invoke/Produce这种机制符合软件工程中的程序机制的模块化,涉及大型数据时,方便数据和业务处理。松耦合架构保证了资源的合理应用和安全性。其响应的结构图如图2-1所示。图2-1松耦合结构图综上所述,在设计新结构的同时,我们也发现,如果我们想适应松耦合的结构,原来的松耦合结构会更加灵活在由于当前工作模式的改变,几乎所有在紧耦合体系结构中运行的代码都需要重写。这是一个庞大的项目,需要大量的人力和时间来修改和调试。因此,我们设计了基于松耦合架构和代理服务器的调用/产生机制。这是另一个代理方案,就是抽象数据处理,分组分级管理。将该机制应用到原始数据处理和业务逻辑后,程序代码基本不需要修改,可以转移到CAS模型运行。

2.1.2B/S架构B/S架构,就是我们通常所说的浏览器和服务器结构。浏览器是指Web浏览器,但是主要事务逻辑是在服务器端实现的。B/S体系结构系统不需要特殊安装,只能使用Web浏览器。实际上,这就是我们前端正在做的事情,大多数逻辑都移交给了后端。我们大多数前端都在执行较少的逻辑,例如数据渲染和请求。B/S体系结构分为三层[11-12]:表现层:第一个表示层主要完成用户与后台的交互以及最终查询结果的输出功能。逻辑层:服务器和客户端的交互,完成逻辑处理。数据层:收到客户端请求后独立执行各种操作。其结构如图2-2所示: 图2-2B/S结构图目前我们常见的两种B/S架构模式,第一种为客户端-服务器-数据库,第二种为客户端-web服务器-应用服务器-数据库,它主要就是客户端和数据库的一个交互流程。客户端发送HTTP请求到服务器,然后服务器将对HTTP请求进行解析,接着从数据库调用业务逻辑读取数据。其次,通过业务逻辑的处理,在应用层中对数据进行逻辑处理,然后在Web层中渲染Json和模板数据,最终将静态页面数据传送回客户端。以上就是这种模式的一个简单的业务处理流程,它们的结构图如图2-3,2-4所示:图2-3客户端-服务器-数据库业务处理图这应当是一种经常使用的形式:客户端向Server发出Http请求,Server中的web服务层可以解析Http请求,服务器中的应用层调用业务逻辑处理,如果需要,服务器会对数据进行逻辑处理并返回给客户端。图2-4客户端-web服务器-应用服务器-数据库业务处理图2.2SpringBoot技术SpringBoot是目前Java开发中的流行框架之一,它继承了Spring的优缺点,使得开发人员开发工作变得简洁便利。框架使用特定的方式进行配置,这样开发人员就不再需要定义模板化的配置。这样,SpringBoot致力于成为蓬勃发展的快速应用开发的领导者[13-14]。以前用Spring能做的,现在用SpringBoot同样也能实现。可以用它快速搭建系统。同时,还可以使用SpringCloud(一种基于SpringBoot的云应用开发工具)构建分布式网站。SpringBoot为开发人员提供便捷,其采用JavaConfig的方式,Tomcat服务器是集成的,可以使用简单的配置,SpringBoot提供许多默认配置。接下来让我们看看SpringBoot的项目启动流程图:图2-5SpringBoot项目启动流程图2.3JPA+thymeleaf技术JavaPersistenceAPI(简称JPA)是一种用于对象持久性的API。它不提供关系映射的实现,它为编程提供了一种API接口,更偏向于规范,但是特定的实现由ORM供应商提供。Hibernate是实现:Hibernate不仅是ORM框架,而且还是JPA实现。从功能上讲,JPA是Hibernate函数的子集。易于使用和集成:JPA的主要目标之一是提供一个更简单的编程模型。与JDBC中的select功能相比:JPA中的查找功能是基于面向对象的。JPA定义了一个唯一的JPQL,它可以支持高级查询功能,例如批处理更新修改,JOIN,GROUPBY,HAVING等。只能由SQL提供,甚至支持子查询。支持面向对象的高级属性:JPA可以支持并拥有面向对象的高级特性,就好比类之间的继承,类之间的多态和复杂关系,都支持最大限度的利用面向对象。图2-6ORM规范图Thymeleaf是当前开发中一个很受欢迎的模板引擎,它的底层是用Java语言开发的。模板引擎是计算机领域的一个代名词,是一个新概念。除了Thymeleaf,还有一些其他的模板引擎,他们的功能跟Thymeleaf也是类似的。Thymeleaf的它就是提供一个创建模板的机制方法,可以被浏览器正确显示,所以也可以作为静态建模。您可以使用它来创建经验证的XML和HTML模板。用Thymeleaf时,我们所创建的Static页面可以直接在各浏览器中打开,有利于后期工作的开展。2.4本章结语本章阐述了博客系统实现过程中所使用的关键技术,包括了对本系统所使用的松耦合架构、B/S架构模式的介绍,SpringBoot框架的介绍,JPA+thymeleaf模板的介绍。这几大主要的技术,然后再加上对MySQL数据库的使用等的其他系统相关的技术问题会在后续具体实现的章节中做简单介绍。3博客系统需求分析系统分析与设计主要是为了对系统的需求和功能进行的分析和评审而做的必要的内容。本章节将对系统需要实现的功能做一个简单的分析,其结果会让系统的功能需求更加完整、准确、清晰、具体,为本系统的开发和研究提供保障可行性保障,本章将对博客系统功能需求分析,包括业务流程分析、数据流分析、用例图分析等模块[13]。3.1博客功能分析在本小节中,主要就是介绍系统的功能需求,该过程主要是以介绍本系统前台需求、后台需求为主。整个过程的完整与否、详尽与否将会影响系统的功能需求做的是否详细合理的关键因素,也是观察整个系统的进度和系统功能进度实现的关键一步。(1)系统管理模块:包括博客管理子模块、博客分类管理子模块和博客标签管理子模块,要求用户具有管理员权限。其中博客管理子模块中包括对博客的发布、编辑、删除功能,以及通过博客的分类和标题完成对博客的搜索编辑功能。博客分类管理子模块包含了对博客分类的增、删、改操作。博客标签管理子模块包含了对博客所添加的各类标签的增、删、改操作。除此之外,在新博客的发布功能中,添加Markdown语法支持,使得传输的代码等高亮显示。对与添加后的博客,添加标签后的博客,分类后的博客等,都使用分页管理,方便后续业务的展开。(2)前台功能模块:包括了五个大类,即首页子模块、分类子模块、标签子模块、归档子模块、关于我。其中,首页中展示每一条博客的标题,概述,发表时间,浏览总数,博客首页图片,已经发表人和发表人的头像。在每一条博客的右下角,添加该片博客的具体分类标签。另外就是右上角的搜索功能,可以实现模糊搜索。其余除关于我中包含的是自我介绍之外的四个子模块,分别对每一类所属进行分类统计,用户可根据自己的喜好选择所想的标签。(3)本系统将实现移动端的响应,最终实现在移动端的效果展示。将原有PC端展示的导航栏,在移动端全部展示为下拉菜单,将PC端的标签选项,分类选项。个人二维码,网站介绍等相关的内容,全部放到博客信息的下面,有利于页面的美化和移动端的完美呈现。3.2博客性能分析在互联网云集的今天,各类软件层出不穷,但是很多往往从一开始就忽略了系统的性能。从某种角度来说,系统的性能意味着系统使用尽可能少的资源,并同时提供尽可能快的运行速度。本次研究的博客系统主要面向就是在校师生,不管从哪个角度出发,都要求系统拥有较好的性能,易用性和可靠性。从未来的展望和发展来看,我们应考虑它的可扩展性和可维护性。在系统的非功能性需求中,我们还需要考虑其他的内容,它一般包含执行的质量和发展的状况质量两种,而执行的质量在系统中相当重要的,就好比易用性,它在系统的用户体验过程中占有一定的比重,系统的结构特性决定了系统的运行速度以及相关的功能完善程度。因此需对系统的性能提前做出决策并应用在后期的研究中,具体性能要求见表3-1所示。表3-1系统的性能需求说明表性能名称性能需求说明性能主要是系统的兼容性,由于本系统做了移动端的响应,要保证各浏览器下的系统的兼容性。当管理员用户长时间不进行操作时,系统理应自动推出管理界面,一面信息的泄漏或操作不当造成数据丢失,理想化时间应为10-15S。易用性博客系统的界面应当简洁明了,各类导航设置合理,要保证系统的操作简单,视觉清晰。可靠性博客系统对于用户的信息应当做到保护,本系统只做简单的MD5加密算法,不做其他的相关安全措施。可扩展性博客系统应该符合二次开发的要求,系统的架构和设计应该符合软件工程基本理论。以保证后期添加或下架某个模块时更加容易。可维护性博客系统应该支持定期的数据维护,保持定期更新,以保证系统的正常运行。3.3博客用户及用例分析从功能的描述中,系统所涉及的用户只有两种,管理员用户,即博主。还有就是普通用户。管理员,系统的管理人员,一般负责系统的维护,以便系统正常运行。普通用户即为游客,主要使用博客浏览博文,搜索博文,评论区交流学习。admin用例图如图3-1所示:博文管理:主要就是对需要发布的博文进行审核,如果所发布的博文内容不符合原则,管理员可以删除本篇博文。标签管理:主要查看博文所分配的标签,并定期根据所需发布的博文内容做修改,可随时根据需求删除或修改响应的标签。分类管理:主要对所需发布的博文进行分类操作,一方面审核分类是否准确,一方面定期对分类内容做删除或修改。归档管理:每次发布博文时需要做归档处理,并做定期巡检。图3-1admin用例图User的用例图如图3-2所示:博文浏览:用户可以随时随地对博客系统中的所有博文进行浏览,可以看见每一篇博文的浏览量和发布日期。博文互动:普通用户之间的互动操作,主要就是针对每一篇博文随时进行交流,博文的最后提供了博主联系方式,另外还可以在评论功能中交流。联系管理员:用户可以通过博客系统首页中的关于我的介绍,找到博主,并联系处理相关事宜。图3-2User用例图3.4本章结语本章主要对本次所研究的课题博客系统的需求进行了详细的分析,包括博客系统的功能需求分析,博客系统的性能分析,以及对博客系统的用户和他相关的用例进行了详细的分析。对于系统的架构图啊,系统的数据模型以及各功能模块的介绍,将在第四章节逐一展现。4博客系统总体设计4.1博客系统体系结构本次课题采用B/S架构,而在前面我们介绍到,B/S架构是由浏览器和服务器组成的。不仅如此,它还是依靠C/S架构演变而成的一种体系结构模式。从系统的架构中看,本次研究的博客系统可以被分为Browser浏览器层,TomcatWeb服务器层,以及最底层的MySQL数据库层[15]。具体的结构图,如图4-1所示。图4-1系统体系结构分析图Browser浏览器层是具有同用户交互的一个环节层,用户可以通过浏览器(IE、Chrome、FireFox、Safari等)来浏览访问或操作本博客系统,同时借助thymeleaf模版。以及SemanticUI等来设计PC端页面以及移动端的响应页面。TomcatWeb服务器层,它集成与系统的核心层,系统的所有业务逻辑处理都是借助本层完成设计的,里面还包含了系统访问数据层等一系列操作,所涉及的功能范围覆盖整个系统。MySQL数据库是核心的一层,它包含了整个数据库的核心数据的更新与迭代,当前社会是一个互联网云集大数据的时代,数据对于系统软件来说,都是极其重要的。这一层主要为Web层提供数据服务。根据前面的分析与研究,本系统包含了博客管理、标签管理、分类管理、归档管理和系统管理五个部分,其中的每个功能模块在下文中将进行详细的分析与介绍,其总体功能结构图如图4-2所示。图4-2系统的总体功能分析图4.2博客系统功能分析从课题实际出发,我们确定了系统的功能需求,需结合系统实际,这里面包含了本课题博客系统的核心功能模块,接下来将从博文管理,标签管理,分类管理,互动管理四个方面进行介绍。4.2.1博客管理博客管理模块主要就是针对给用户全新的界面展示以及博客相关的信息的,里面包含了博客发布,博客修改,博客浏览,博客删除,搜索博客的功能,其结构分析如图4-3所示。图4-3博客功能结构分析图博客发布:此功能是供博客作者在登录后台后编辑一些技术、链接、图片、文章等内容。本课题以Boot的博客系统为基础,在博客发布功能上增加了对MarkDown语法的支持,以满足发布开发相关的博客内容。在所有内容填写正常时,系统就会将相关的数据添加到数据库表中,然后完成博客的发布。博客修改:此功能就是博主对响应的博文进行修改的过程,可以修改博文的相关标签,权限以及分类等内容。这里主要是以数据库的修改为重,因为数据都是通过数据库进行存储的,然完成相关的数据修改后,将其博客内容显示在系统的界面中。博客浏览:此功能是游客和自己进入相关的博文中,可以查看博客的发布时间,博客的浏览量,还有博主信息都可看到。在博文结束后,还包含了本篇博文的赞赏、评论、喜欢等相关内容。博客删除:此功能主要归管理员所有,管理员在进行系统的审核,博客的审核以及定期维护时,将长期浏览量较低以及评论较差的内容从博文系统中删除,这一过程还是需要经过数据库的操作,在删除之后,数据表中相应的数据块就会移除,且不会影响数据表结构。搜索博客:此功能就是用户和博主自己通过关键子、标签、分类等关键字,在博客系统首页中完成相关博文的搜索,搜索后的结果会以博文列表的形式展示在系统界面上供用户选择浏览。4.2.2标签模块标签管理功能,是对博客的相关标签进行增删改查的操作,这里面包含了系统管理员和博主对博客内容标签的管理。另外,在首页的搜索功能中,还添加了对标签搜索的功能。其功能结构分析如图4-4所示。图4-4标签功能结构分析图增加标签:此功能主要由管理员完成操作,由于博客系统发布的文章内容不确定,会不定期进行修改,这对文章相关的标签有一定的限制,需要定期进行维护,并对其进行添加的操作,并将其数据存入数据库中。删除标签:此功能主要是对管理员而言,假如有的标签长时间不使用,或者此标签没有定期的文章更新,或着一段时间之后此类文章不再发布时,需要对此标签进行删除操作,并从数据表中移除相关的数据。修改标签:此功能主要用于在博客文章发表时,标签选择错误,或者博文已经发表之后,需要对其进行修改操作。且每一次的修改,都要与数据库做交互,保证数据表中的信息得到相关的修改。搜索标签:在博客系统的首页菜单栏中,添加了相关的搜索功能,我,这里主要就是方便用户交互效果,根据用户所需要的数据进行搜索,搜索结束后将结果展示在系统的界面之上。4.2.3分类模块分类管理模块,主要还是针对于管理员和博主而言。分类管理包含了对分类的名称的增删改查功能,并完成与数据库的交互。除此之外,系统中还增加了分类名称的搜索功能。其功能结构分析如图4-5所示。图4-5分类功能结构分析图增加分类:此功能主要由管理员完成操作,由于博客系统发布的文章会加入相关的分类操作,以便于最后的归档操作,同时方便对博客文章的搜索与浏览,然对其进行添加的操作,并将其数据存入数据库中,会有更好的用户体验。删除分类:此功能主要是对管理员而言,假如有的此分类长时间不使用,或者本分类中的文章内容长期发表较少,或着一段时间之后此类文章不再发布时,需要此分类进行删除操作,并从数据表中移除相关的数据。修改分类:此功能主要用于在博客文章发表时,分类选择错误,或者博文已经发表之后,需要对其进行修改操作。且每一次的修改,都要与数据库做交互,保证数据表中的信息得到相关的修改。搜索分类:在系统的首页菜单栏中,添加了一个搜索框,这里主要就是用于更好的一个用户交互效果,根据用户所需的数据进行搜索,搜索结束后将结果展示在系统的界面之上。4.3数据库和数据表分析从软件工程理论出发,一个完整的软件设计流程还需要包含数据库的设计,其涉及到了相关的数据库设计的知识。在前面已经对需求分析、概念设计做了详细的分析与介绍。接下来就是概念设计,主要是将数据模型做成概念模型。在本章节最后将对博客系统涉及的数据表的结构做介绍[16]。4.3.1E-R关系分析在软件工程导论里面对数据建模做了详细的介绍,这里我只对本系统所涉及的实体关系进行分析和解读。下面我么将对实体之间的关系做一一介绍。用户与博客文章之间的关系为一对多,即一个用户可以浏览访问多篇博客文章,而一篇文章只会有一个博主用户,那就是坐着本身。博客的一篇文章可以分配多个标签,同时一个标签也可以分配个多篇博客文章。评论与博客文章的关系则是多对多的关系,即一个用户可以对博客文章进行多次评论,一篇文章也可以被多个用户评论。回复评论与评论之间的关系,即一条评论可以拥有多个二级回复,还可以对回复的内容进行评论再回复。根据上面对数据模型的分析,我们得出博客系统数据库中的实体关系图(E-R)图,详情如图4-6所示。图4-6E-R关系描述图4.3.2数据表单分析在上一小节中,对数据库模型做了简单的介绍以及它的E-R实体图,其实在实际开发中,其实体都会一一对应响应的数据表,根据统计,本次系统开发过程中,总共设计6张数据表,根据原设计的物理模型,通过Navicat工具在MySQL数据库中生成了对应的数据表格。Blog表结构Blog表包含了博客ID、是否赞赏、博客评论、博客内容、创建时间、博客描述、博客首图、博客标签、是否发布、是否推荐、是否转载、博客标题、更新时间、浏览量、分类ID和用户ID属性,如表4-1所示。表4-1Blog表结构序号字段类型字段限制字段描述1idbigint(20)Primarykey博客ID2appreciationbit(1)Notnull是否赞赏3commentabledbit(1)Notnull博客评论4contentlongtextNotnull博客内容5create_timedatetimeNotnull创建时间6descriptionvarchar(255)Notnull博客描述7first_picturevarchar(255)Notnull博客首图8flagvarchar(255)博客标签9publishedbit(1)Notnull是否发布10recommendbit(1)Notnull是否推荐11share_statementbit(1)Notnull是否转载12titlevarchar(255)Notnull博客标题13update_timedatetimeNotnull更新时间14viewsint(11)浏览量15type_idbigint(20)Foreignkey分类ID16user_idbigint(20)Foreignkey用户IDTag表结构Tag表中包含了标签的ID和标签名称两个属性,如表4-2所示。表4-2Tag表结构序号字段类型字段限制字段描述1idbigint(20)Primarykey标签ID2namevarchar(255)Notnull标签名称User表结构User表包含了用户ID、用户头像、创建时间、用户Email、用户名称、用户密码、用户类型、更新时间和登录名称属性,如表4-3所示。表4-3User表结构序号字段类型字段限制字段描述1idbigint(20)Primarykey用户ID2avatarvarchar(255)Notnull用户头像3create_timedatetime创建时间4emailvarchar(255)Notnull用户Email5nicknamevarchar(255)Notnull用户名称6passwordvarchar(255)Notnull用户密码7typeint(11)用户类型8update_timedatetime更新时间9usernamevarchar(255)Notnull登录名称Type表结构Type表中包含了分类的ID和标签名称两个属性,如表4-4所示。表4-4Type表结构序号字段类型字段限制字段描述1idbigint(20)Primarykey分类ID2namevarchar(255)Notnull分类名称Blog与Tag匹配表结构Blog与Tag匹配表中包含了分类的ID和标签名称两个属性,如表4-5所示。表4-5Blog与Tag匹配表结构序号字段类型字段限制字段描述1blogs_idbigint(20)Notnull博客ID2tags_idbigint(20)Notnull标签IDComment表结构Comment表中包含了评论ID、管理员回复、用户头像、评论内容、评论时间、用户Email、用户名称以及父评论ID属性,如表4-6所示。表4-6Comment表结构序号字段类型字段限制字段描述1idbigint(20)Primarykey评论ID2admin_commentbit(1)Notnull博主回复3avatarvarchar(255)用户头像4contentvarchar(255)Notnull评论内容5create_timedatetimeNotnull创建时间6emailvarchar(255)Notnull用户Email7nicknamevarchar(255)用户名称8blog_idbigint(20)Foreignkey博客ID9parent_comment_idbigint(20)Foreignkey父评论ID4.4本章结语本章首先对系统的总体设计进行了详细的介绍,并对每一个功能模块都做了分析,且给出了相应的功能结构图。在此过程中,对每一个功能模块所涉及的内容做文字介绍,包括在什么时候需要用到此功都略有提及。其次,对数据库的设计进行了介绍,从数据库的模型设计到物理设计,再到最终对数据表的5系统的实现及测试本章节从系统的运行环境、相关的效果图展示以及最终的测试方法和测试用例三个部分进行描述和分析。为本次系统的开发和设计做一次全方位的总结和分析,方便系统后期的维护和管理。5.1系统的运行环境本次博客系统的开发实现的环境具体介绍如下:采用MacBookPro的1.4GHz四核IntelCorei5处理器,16GB的内存环境;采用Java语言为首要的开发语言,其他的语言为辅。使用当下最流行的IDEA2020.3作为整个系统开发的工具,使用WebStorm2020.1作为前端页面的开发环境,采用Maven作为相关依赖包的选择和依赖仓库的管理工作;使用MySQL5.7作为系统的数据存储的选择,并使用NavicatPremium12为图形化工具,更加便捷。采用Visio2019制作所涉及的各种类型的图,本次课题所涉及的UML用例图,架构图,功能结构图,都是借助此工具完成设计。采用SpringBoot2.0.4作为系统的开发框架,并在开发文档pom中引入相关的包依赖。本系统实现了移动端的响应,其采用的主要的浏览器是Chrome、Firefox、Safari等主流浏览器。5.2系统的实现及效果图本研究的课题,博客系统的卡文件主要包括以下几类,分别是:com.bhr.aspect、com.bhr.dao、com.bhr.handler、erceptor、com.bhr.po、com.bhr.service、com.bhr.util、com.bhr.vo、com.bhr.web。每个包下存储的Java文件是负责前端交互的相关接口和处理文件,主要负责web中的业务逻辑处理。util包存储了系统中设计的MD5算法工具类、Markdown语法工具类。本系统采用的是Thymeleaf的模版引擎,这是一种Java的集成模板引擎,此过程需要使用web中的相关XxxController类来实现视图交互,以便完成对页面的编辑处理。5.2.1博客功能的实现本小节主要涉及四部分内容,即博客的发布,博客的浏览,博客的搜索,以及对博客的管理层。这部分主要涉及数据库的添加、删除和修改的内容。在系统开发过程中,web中IndexController,service中的BlogService接口,以及实现BlogService接口的BlogServiceImpl类,通过对相关参数的操作,完成对数据的操作,并展示在页面上。博客的发布功能此功能主要包含的就是对博客文章的发布编辑功能,也包含了对已经发布的文章进行修改编辑的处理。如果文章已经存在则会提示“该博文已存在!”,无法完成发布。如果改文章被删除,则会提示“该博文不存在!”,无法完成对博客的修改操作。此功能设计的方法为saveBlog,它包含的参数是Blog对象,这里面包含了博客文章中的标题,名称,头像等相关的String类型的内容,其次我们还在方法中使用了Boolean类型,这是对本篇文章的是否推荐,是否赞赏,是否评论等相关内容做分析。最终通过与数据库的交互,将相关的数据添加到数据库中,然后通过IndexController类,配置相关的本地服务器地址,然后将相关的数据内容展示在前端界面上,至此完成前后端数据交互,博客的发布功能结束。博客发布界面,如图5-1所示。图5-1博客新增界面渲染图博客的浏览功能此功能实现的方法是index方法,里面的参数是data类型的更新时间,以及String类型的博文描述。参数中分别对博客的最大展示数,并让博客根据最新的更新时间来排序展示在博客列表之中。此外,对于博客的文章描述也做了排序处理,以更好的展示在系统的博客列表中,并做了相应的分页处理。此外,系统还结合了List集合框架,将每次从后台读出的数据放在List集合中,并进行遍历,之后将结果站实现页面上,里面用到了addAttribute方法,将内容通过BlogService做业务逻辑处理,最终展示在首页之中。其效果图如图5-2所示。图5-2博客首页渲染图博客的管理功能此功能是针对已经发布的博客进行删改查的操作,通过BlogRepository类下的updateViews方法实现对博客的管理功能。其次,使用service下的BlogServiceImpl中的getAndConvert方法,对所需要修改的博客进行修改处理,如果当前博客已经被博主删除,则会提示“该博客不存在”,通过BlogRepository下的findOne方法,使用起初定义的id来查找对应的博客内容。在此期间,还需要在此调用博客发布的功能,将已经发布的功能内容重新从数据库中读出,并放在博客发布的页面之中,一打开编辑页面就可以看见相应的数据。最后再调用saveBlog的方法,在web层对数据进行相应的处理,同时完成对数据库的操作,使数据库中的数据和修改之后的数据显示一致。效果如图5-3所示。图5-3博客后台管理页渲染图5.2.2标签功能的实现此功能主要包含的就是对博客标签的管理与展示功能,也包含了对已经添加的标签进行修改和编辑的操作。如果标签已经存在则会提示“不能添加重复的分类”,无法完成新标签的添加操作。如果通过TagService中的saveTag方法对象判断是否为空,则提示“新增失败”,相反则提示“新增成功”。同样,在标签更新过程中,TagService中的updateTag方法对象判断为空,则提示“更新失败”,相反则提示“更新成功”。此功能设计的方法为saveTag,它包含的参数是Tag对象,这里面包含了博客文章中的标题,名称,头像等相关的String类型的内容,其次我们还在方法中使用了Boolean类型,这是对本篇文章的是否推荐,是否赞赏,是否评论等相关内容做分析。最后对相关的数据添加到数据库中,然后通过项目文件中admin下面的TagController类,配置相关的本地服务器地址,然后将相关的数据内容展示在前端界面上,至此完成前后端数据交互,标签的管理过程结束,其效果图如图5-4所示。图5-4标签管理页标签浏览功能中,是对已经发布的博客内容做了标签设计,可以在首页导航栏中的标签功能中查看已经设置了标签的博客文章,并且可以根据相应的标签选择自己想要的文章。其效果图如图5-5所示。图5-5标签页渲染图5.2.3分类功能的实现此功能主要包含的就是对博客分类的管理与展示功能,也包含了对已经添加的分类的博客进行修改和编辑的操作。如果分类已经存在则会提示“不能添加重复的分类”。如果通过TypeService中的saveType方法对象判断是否为空,则提示“新增失败”,相反则提示“新增成功”。同样,在标签更新过程中,TypeService中的updateType方法对象判断为空,则提示“更新失败”,相反则提示“更新成功”。此功能设计的方法为saveType,它包含的参数是Type对象,这里面包含了博客文章中的标题,名称,头像等相关的String类型的内容,其次我们还在方法中使用了Boolean类型,这是对本篇文章的是否推荐,是否赞赏,是否评论等相关内容做分析。最后,需要使用TypeRepository中的save方法,对相关的数据添加到数据库中,然后通过项目文件中admin下面的TypeController类,配置相关的本地服务器地址,然后将相关的数据内容展示在前端界面上,至此完成前后端数据交互,分类的管理过程结束。其效果图如图5-6所示。图5-6分类管理页渲染图分类浏览功能中,是对已经发布的博客内容做了分类设计,可以在首页导航栏中的分类功能查看已设置分类的博客文章,您可以根据相应的分类选择所需的文章。渲染如图5-7所示。图5-7博客分类页渲染图5.2.4移动端效果的实现本系统最大的创新点就是实现了移动端的响应,可以在移动端和PC端兼容响应的功能设计,其功能实现过程跟PC端一模一样,这里不再做过多赘述,直接贴上效果图。其效果图如图5-8所示。图5-8博客首页(移动端)渲染图5.3测试方法及用例分析系统测试是整个软件开发周期中最后一个阶段,旨在检查系统中的错误和一些容易忽略的小细节。其检查结果,将会对软件的测评和质量评估有这十分重要的作用,所以测试者应当注重每一个功能的测试,以方便找到开发者和设计者最切合实际的需求。5.3.1测试方法介绍在软件工程的课程中,我们了解到常用的测试方法有两种,即黑盒测试和白盒测试。白盒测试,至少测试一次程序模块的所有独立执行路径。核心是检查条件、路径等结构缺陷。黑盒测试。是否有bug?在界面上,输入能被正确接受吗?能输出结果对吗?是否存在数据结构错误或信息访问错误?性能合格吗?对否已初始化?这里主要是以有效和无效输入测试比较多,还有黑盒测试等等[17]。由于白盒测试和代码是离不开的,这也就集成了一些自动化测试工具,其贯穿于整个开发过程中,常见的则是借助Junit、FindBugs等工具进行。在本篇课题中,我主要介绍黑盒测试,并撰写相关的测试用例。5.3.2测试用例介绍本次课题的测试用例,主要涉及两个方面。一个是系统的功能测试,一个是系统的性能测试。其中,系统功能测试理应对系统的所有功能全覆盖,但是由于本次论文书写的篇幅限制,仅对重要的用例做介绍。系统的功能测试用例。本用例分为两个部分,分别是对有效输入的正确响应和相关的提示,和对无效输入的异常提示和异常用例。里面关于用户的,用User-001格式编号,博客相关的用Blog-001开始编号,评论相关用数字编号。输入有效的部分测试用例表具体如表5-1所示。表5-1有效输入的部分测试用例表编号测试项操作输入预期结果User-001管理员登录1、进入登录界面;2、输入用户信息;3、点击“登录按钮。正确输入信息用户名:admin密码:789452成功跳转到后台管理界面。欢迎XXX登录博客系统。登录成功。Blog-001博客发布点击“新增”博客按钮;按要求填写博客信息;点击“发布”按钮按要求填写的博客信息;标题:Happy内容:Happy相关复选框全选。进入博客编辑发布的界面;提示“发布成功”。在首页博客系统中卡以查看博客。Blog-002修改博客进入管理界面;点击“博客”按钮点击需要修改的博客文章的“修改”按钮。点击“发布”按要求修改博客的各项信息;标题:Happy内容:Happy相关复选框全选。跳转到博客编辑的界面,里面已包含相关数据;提示“修改成功”。完成修改。续表5-1信息输入有效时部分测试用例表编号测试项操作输入预期结果Blog-003删除博客1、进入管理界面;2、点击“博客”3、点击需要修改的博客文章后面的“删除”按钮。4、点击“确定”无输入删除提示框弹出。回到博客首页查看博客列表。成功删除该博客。Blog-004搜索博客点击首页的搜索框,按要求填写关键字;点击“搜索”按钮正确输入信息关键字:test成功输入关键字。在博客列表中弹出与关键字相关的博客001评论博客1、进入博客浏览界面;2、输入合法的评论内容;3、输入合法的联系信息;4、点击“发布”按钮。正确输入信息内容:不错的博客文章。进入博客浏览界面;点击评论框输入合法的评论信息;可以正常完成评论。002回复评论1、进入博客浏览界面;2、浏览别人的评论信息,并回复;3、输入合法的信息4、点击“发布”正确输入信息内容:感谢评论。1、进入博客浏览界面;2、点击“回复”按钮,输入合法的回复信息;3、可以正常完成评论回复。输入的信息无效时的部分测试用例如表5-2所示。表5-2信息输入无效时部分测试用例表编号测试项操作输入预期结果User-001异常管理员登录输入非法字符名称输入超过六位密码输入已存在的名称输入:test¥#输入:test12345输入:test弹出提示,用户名不合法,请重新输入合法的昵称。Blog-001异常博客发布不输入标题不输入内容不选择复选框输入:为空输入:为空选择:为空弹出提示,博客内容和标题不能为空。001异常评论博客不输入评论内容输入内容超出长度不输入联系信息输入:为空输入:超出输入:为空弹出提示,评论信息不能为空。002异常回复评论不输入回复内容输入内容超出长度不输入联系信息输入:为空输入:超出输入:为空弹出提示,回复评论信息不能为空。系统性能测试用例表,编号从X-001开始,如表5-3所示。表5-3系统的性能测试用例表编号测试项操作预期结果X-001性能记录登录时的响应时间记录发布时的响应时间记录评论时的响应时间平均时间不会超过3秒X-002可靠性记录系统单人使用的可用时间。记录系统多人使用的可用时间平均可用时间达到预期效果,系统可以正常运行5.4本章结语在本章节中,提及了系统的开发环境和系统的功能实现、系统测试等三个方面入手分析与介绍。在系统的开发环境中,分别对本次使用的开发工具,软件选择,以及硬件环境等做了详细的分析介绍。在系统的功能实现中,从博客管理模块、标签管理模块、分类管理模块、移动端效果等方面进行了总结,并对相对应的效果图放在了文章中,方便直观的看到系统的效果。除此之外,还对本课题博客系统进行了简单的测试,并对相关的测绘方法进行了简要的介绍。由于篇幅限制,本文只对黑盒测试做了分析,并对响应的有效输入和无效输入做了测试用例分析,并绘制了相应的表格,包含对系统功能的测试用例和系统性能的测试用例分析。6

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论