基于SpringBoot的个人博客系统设计与实现-论文_第1页
基于SpringBoot的个人博客系统设计与实现-论文_第2页
基于SpringBoot的个人博客系统设计与实现-论文_第3页
基于SpringBoot的个人博客系统设计与实现-论文_第4页
基于SpringBoot的个人博客系统设计与实现-论文_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

指导教师指导教师本科生毕业论文基于SpringBoot的个人博客系统设计与实现Designandimplementationofpersonalblogsystembasedon学生姓名 所在专业计算机科学与技术 所在班级职称学位论文原创性声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。所有数据、图片资料均真实可靠。除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品或成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本毕业论文的知识产权归属于培养单位。本声明的法律后果由本人承担。设计总说明 IINTRODUCTION Ⅱ 11.2系统的研究背景 2需求分析 2.1系统需求分析 12.2可行性分析 22.2.1技术可行性 22.2.2经济可行性 22.2.3操作可行性 22.3开发及运行环境 23总体设计 23.1系统功能结构图 23.1.1数据库表概要 33.2数据库表设计 43.3配置文件详情 64系统详细设计 74.1登录界面 74.2游客操作 74.2.1博客查看 74.2.2分类查看 84.2.3标签查看 94.2.4归档查看 4.2.5查看作者 4.3管理员操作 4.3.2分类管理 4.3.3标签管理 5系统测试 5.1测试的必要性 5.2测试过程 5.3测试结果 5.4项目部署 5.5负载均衡测试 参考文献 设计总说明I设计总说明作为计算机的学生,我们学习的方法是通过老师,书籍,论文等。对很多从事计算机方面的人来说,他们学习知识是通过官方文档,以及相关博客。现在知名博客网站有很多,比如CSDN,博客园,还有全球最知名的Github。其中我也在这几个博客中写过一些文章,分享自己学习的成果。因此我在想为什么不自己打造一个属于自己的博客呢。我的博客系统是采用SpringBoot、SpringMvc、Spring、SpringDataJPA等技以对博客进行添加,删除,修改,查询操作。游客可以查看管理员编辑的博客,并可以评论,打赏。最后通过测试跟负载均衡完善最终需求。 INTRODUCTIONAscomputerstudents,welearnbyteachers,books,papers,etc.Formanypeopleengagedincomputerrelatedblogs.Nowtherearemanywell-knownblogsites,suchasCSDN,bloblogstosharemylearningachievements.SoIwonderwhynotbuildablogofmyMyblogsystemiswrittenbyspringboot,springMVC,spring,springdatajpaothertechnologystacks,andthedatabaseismysql.MVCthreadopted.Administratorscanadd,delete,modifyandqueryblogs.Visitorscanviewtheblogeditedbytheadministrator,andcancommentandreward.Finally,thefinalrequirementisimprovedbytestingandl 本科生毕业论文1基于SpringBoot的个人博客系统设计与实现进入二十一世纪,以互联网为核心的现代网络和通信技术已经得到了快速的发展和广泛的应用,各种网络通信工具也随时代而生。其中就有论坛、博客、社区等较受广大人民欢迎,也是现在发展的比较成熟的信息交流工具。随着网络技术的日渐成熟,互联网已成为日常生活必不可少的工具,网络博客在近几年更是成为各类网友不可缺少的交流工具。以前我们记录个人生活的时候,我们可以写日志。现在我们可以写博客。博客又称为网络日志。目的是通过博客记录生活的点滴,分享身边美好的东西,发表自己的感言,与更多志同道合的人交流。博客发展到今天已经取得了相当规模的成就,以新浪、搜狐、网易为代表的三大门户网站都已经推出了自己的博客服务,在规模扩大的同时,博客技术也在不断的进步和完善。博客改变着人们的交流方式和情感体验和表达形态,改变着人们聚散的方式,它影响着中国互联网的发展走向,甚至会波及或影响着现实社会的决策。在这个它都可以传遍世界各个角落,可想网络时代的传播速度。毫无疑问,博客将可以作为我们美好事物及美好思想传播的载体。通过博客,你的科研成果可以让更多人知道,可以传播到世界各地,让更多人知道,可以推进社会的进步。无疑,博客这样一种影响力颇大的媒介将有利于我们好的思想好的事物的传播,有利于社会进步。所以我们要把这种好的影响力发挥到最大。2需求分析个人博客系统主要分为两个角色:普通访客,管理员。普通访客可以查看所有的博客,所有的分类,所有的标签,可以评论博客,可以查询博客,可以打赏管本科生毕业论文2理员。管理员可以对博客进行添加,删除,修改,查询操作。可以对分类进行添加,删除,修改,查询操作。可以对标签进行添加,删除,修改,查询操作。2.2可行性分析技术可行性,利用现在我们学到的技术是否能够完成个人博客系统。技术可后端方面:以java为开发语言,以tomcat作为服务器,以mysql作为数据库。技术路线是以Springboot框架为基础驱动SpringMVC+Spring+SpringDataJpa前端方面:核心框架为SemanticUi,基础为html,css,js,jq。个人博客系统的开发,主要花费的地方在于部署到服务器上。服务器采用阿里云,对于学生来说,一个月只需要10块钱作为服务器的使用费用。对于说,这个开销是可以接受的。并且只有这一个唯一的开销。因此个人博客系统在个人博客系统是部署在云上的web项目,只要登录浏览器就可以访问,况且本系统跟很多博客系统类似。只要操作过其他博客系统,可以轻松上手。若是没操作过的人,只要看一遍说明文档也是可以轻松上手。因此个人博客系统在操作2.3开发及运行环境3总体设计3.1系统功能结构图本系统主要分为两大用户模块,游客和管理员。下面针对两大用户作具体的本科生毕业论文3田田田田田田田田曰情归档:按年度时间线展示博客列表,博客详情以下是系统各功能模块的结构,如下图3-1所示:百图3-1系统结构流程图为了使用者对本系统后台数据库中的数据表有一个清晰的认识,在此列出了数据库表的结构图。如下图3-2所示:表t_blogt_blog_tagst_commentt_typet_user图3-2数据库表的结构图本科生毕业论文(1)博客表如图3-3所示:列名长度默认主键?非空?Unsigned自增?Zerofill?喻黎bigint☑…]appreciationbit是否开启commentabledbit…月是否开启蓬content…………怕博客内容createtimedatetime…………仓刘建时间descriptionvarchar…………指苗述信息F¹*=tpicturevarchar…………眉图片urlf1a0varchar……publishedbit……另是否发布recommendbit~了…月是否推荐sharestatementbit~口□月是否开启varcharFdatet1medatetime■夏更新时间Vlews1些阅读数量CYPe10bigint月所属类型iduseridbigint月所属用户id图3-3博客表(2)评论表如图3-4所示:列名列名数据类型数据类型长度默认默认非空?非空?UnsignedZerofillZerofill?注释bigint》》☑评论bit1《《是是avatarvarchar头varchar容评create_timedatetime间创varchar邮nicknamevarchar评名称评blog_idbigint评博客idparent_commentbigint评论的父id图3-4评论表(3)标签表如图3-5所示:列名数据类型长度[默认主键?Unsigned自增?Zerofill?注释bigint☑☑☑namevarchar▼标签名称图3-5标签表(4)分类表如图3-6所示:列名数据类型长度默认主键?非空?Unsigned自增?Zerofi¹n?注释bigint☑☑☑分类idnamevarchar☑分类名称图3-6分类表(5)用户表如图3-7所示:列名数据类型默认主键?非空?Unsigned自增?Zerofill?注释bigint▼☑☑☑用户idavatarvarchar头像urlcreatetimedatetime▼创建时间emailvarchar邮箱地址nicknamevarchar▼昵称passwordvarchar▼密码▼用户类型updatetimedatetime▼修改时间usernamevarchar▼用户名 本科生毕业论文图3-7用户表(6)博客与标签中间表如图3-8所示:列名数据类型长度默认非空?Unsigned自增?Zerofill?注释bigint博客idtags_idbigint▼-1图3-8博客与标签中间表广东海洋大学寸金学院2020届本科生毕业论文3.3配置文件详情配置文件是程序的核心之一,他负责配置数据库连接路径,数据库账号,数信息配置不正常,程序将无法运行如图3-9所示:driver-class-name:com.mysql.jdbc.Driverurl:jdbc:mysql://localhost:3306/blog?useUnicode=true&characterEncoding=utf-8username:rootpassword:rootjpa:ddl-auto:updatecom.lrm:debug 74系统详细设计登录是管理员管理博客的使用入口,只有数据库存在的管理员用户才能使用本系统。在登录的时候,将根据用户输入的账号密码来确定是否能操作本系统如图4-1所示:管理后台登录密码图4-1登录界面4.2游客操作博客首页是游客进入博客后所显示的第一个页面,它显出博客管理员在后台所编写的博客文章,游客可以进去博客阅读文章,并且根据文章所开放的权限,可以进行相关的操作。比如阅读,赞赏等。首页如图4-2所示:广东海洋大学寸金学院2020届本科生毕业论文8博客共3篇测试测试第一篇博客……先2020-01-05②6正能量语录……图书管理系统……图4-2博客首页代码如图4-3所示:@@GetMapping(/)publicStringindex(ePageableDefault(size=8,sort={"updateTime"),direction=Sort.Direction.DESGPageablepageable,Modelmodel)(model.addAttribute(s:page",blogService.listBlog(pageable));model.addAttribute(s"types",typeService.listTypeTop(size:6));model.addAttribute(s"tags",tagService.listTagTop(size:10));model.addAttribute(srecommendBlass",blogService.listRecommendBlogIop(size:8)):return"index":图4-3博客首页代码分类是根据后台博客所关联的类型进行分类,游客可根据分类查看对应的博客列表。分类页面如图4-4所示:分类共4个Html10MySQL0测试第一篇博客……先2020-01-056av图书管理系统图书管理系统……先2020-01-05dV图4-4分类页面代码如图4-5所示:GetMappingGetMapping("/types/(id)")publicStringtypes(@PageableDefault(size=8,sort={updatelime'),direction=Sort.Direction.DESOList<Type>typf=typeService.listTypeTop(size:10000);id=types.get(0).getId();B1ogQueryblogQuery=newBlogQuery();blogQuery.setTypeld(id);model.addAttribute(s"types",types);model.addAttribute(s"page",blogService.listBlog(pageable,blogQuery))model.addAttribute(s"activefypeid',id);pageable,Pageable图4-5分类代码标签是根据后台博客所关联的标签进行分类,游客可根据标签查看对应的博客列表。标签页面如图4-6所示: 广东海洋大学寸金学院2020届本科生毕业论文标签共2个前端1Html图4-6标签页面代码如图4-7所示:@@GetMapping("/tags/(id)")publicStringtags(@PageableDefault(size=8,sort={updateTime"),direction=Sort.Direction.DESC)Pageablepageable,@PathVariableLongid,Modelmodel){if(id==-1){id=tags.get(0).getid():model.addAttribute(stags",tags);model.addAttribute(s"page',blogService.listBlog(id,pageable)):model.addAttribute(s"activelagid',id);returntags";图4-7标签代码归档是根据管理员所发布的博客文章日期进行归档,以年份为一个单位。归档页面如图4-8所示:归档5●测试<一月05●图书管理系统一月05 广东海洋大学寸金学院2020届本科生毕业论文图4-8归档页面代码如图4-9所示:model.addAttribute(s:"archiveMap",blogService.archiveBlog());model.addAttribute(s:"blogCount",blogService.countBlog());图4-9归档代码关于我是描述博客系统作者的一些情况,给游客作相关介绍,便于了解或者联系作者。关于我页面如图4-10所示:xian,一个即将毕业的初级码农.希望结识可以共同成长的小伙伴.热爱编程,喜欢折腾,正在努力提升自己中… Q图4-10关于我页面代码如图4-11所示:图4-11关于我代码搜索是根据游客的查询字段来查找出博客内容或者标题含有游客搜索字段广东海洋大学寸金学院2020届本科生毕业论文的。搜索博客页面如图4-12所示:正能量语录图4-12搜索博客页面图4-12搜索博客页面代码如图4-13所示:publicStringsearch(GPascablaDefault(size=8,sort=('updetefime'),direction=Sort.Direction.D8SOPageablepageable.model.addAttribute(spage',blogService.listBlog(query:"%"+query+"%",pageable)):model.addAttribute(s"query",query):return"search";图4-13搜索博客代码4.3管理员操作添加博客是管理员可以进行博客的编辑,运用到了markdown编辑器,跟现在主流博客所运用的一致,支持markdown语法。添加博客页面如图4-14所示:广东海洋大学寸金学院2020届本科生毕业论文原创测试博客添加页面Aa测试博客添加测试博客添加图4-14添加博客页面代码如图4-15所示:publicStringpost(Blogblog,RedirectAttributesattributes,HttpSessionblog.setUser((User)session.getAttribute(s:"user"));blog.setType(typeService.getType(blog.getType().getId()));blog.setTags(tagService.listTag(blog.getTagIds()));Blogb;if(blog.getId()==null){b=blogService.saveBlog(blog);b=blogService.updateBlog(blog.getId(),blog);if(b==null){attributes.addFlashAttribute(s:"message”,o:returnREDIRECTLIST;图4-15添加博客代码 广东海洋大学寸金学院2020届本科生毕业论文查询博客是管理员在后台页面可以根据分类,标题,是否为推荐文章等进行搜索。查询博客页面如图4-16所示:测试Q搜索推荐测试Q搜索推荐分类标题类型推荐状态更新时间操作1测试Java是发布2020-01-0511:23:19.0编辑删除新增图4-16查询博客页面代码如图4-17所示:aPostMapping(/blegs/search")publicStringsearch(PageableDefault(size=8,sort=(updatelime),direction=Sort.Direction.DESQ)Pageablepageable.BlogQuerybiog,Modelmodel)(model.addAttribute(s"page",blogService.listBlog(pageable,blog)):returnadmin/blos!:blogList"图4-17查询博客代码编辑博客是在已经的博客基础上进行修改操作,可以添加,修改,删除新的内容等。编辑博客页面如图4-18所示:原创▼测试0C4678#第一篇博客Java代码块1.publicstaticvoidmain(stringargs[]){2System.out.print("打印输出");Java代码块-javapublicstaticvoidmain(Stringargs[]){—System.out.print("打印输出");}图4-18编辑博客页面代码如图4-19所示:广东海洋大学寸金学院2020届本科生毕业论文aPostMappingaPostMapping("/blege/search")publicStringsearch(ePageableDefault(size=8,sort=[updateTime),direction=Sort.Direction.DESCPageablepageable,BlogQueryblog,Modelmodel){model.addAttribute(spage",biogService.listBlog(pageable,blog)):returnadmin/blos:blogList";图4-19编辑博客代码删除博客删除可以对想要删除的博客进行删除操作。删除博客页面如图4-20所示:标题类型推荐状态更新时间操作1测试Java是发布2020-01-0511:23:19.0编辅删除2正能量语录Html是发布2020-01-0511:23:05.0病辑删除3图书管理系统Java否发布2020-01-0511:22:24.0编辅删除图4-20删除博客页面图4-20删除博客页面点击删除按钮即可删除对应博客代码如图4-21所示:blogService.deleteBlog(id);attributes.addFlashAttribute(s:"message",o:returnREDIRECTLIST;图4-21删除博客代码分类显示这里是管理员后台的分类显示,跟游客界面的分类有所不同,管理员的后台分类显示可以进行分类的增加,删除,修改等操作。显示分类页面如图4-22所示:名称操作删除编结由编辑刷除图4-22分类页面代码如图4-23所示:publicStringtypes(ePageableDefault(size=10,sort={"id"),direction=Sort.Direction.DESOPageablepageable,Modelmodel){model.addAttribute(s:"page",typeService.listType(pageable));图4-23分类页面代码管理员可以在添加分类页面进行添加操作,而添加成功的分类,游客页面也会有显示,如果存在重复的分类名称,将添加不成功,系统将会提示你。添加分类页面如图4-24所示:名称名称测试添加分类返回提交如图4-24添加分类页面代码如图4-25所示:广东海洋大学寸金学院2020届本科生毕业论文CPostMappingCPostMapping("/types")publicStringpost(ValidTypetype,BindingResultresult,RedirectAttributesattributeTypetypel=typeService.getTypeByName(type.getName());if(result.hasErrors())(if(t=null){如图4-25添加分类代码管理员可以在编辑分类页面进行编辑操作,而编辑成功的分类,游客页面也会有对应更新。编辑分类页面如图4-26所示:名称名称MySQL返回提交图4-26编辑分类页面代码如图4-27所示:model.addAttribute(s:"type",typeService.getType(id));return"admin/types-input图4-27编辑分类代码删除分类可以对某个分类进行删除操作。删除的分类游客界面对应的分类也会被删除。删除分类页面如图4-28所示:名称操作编辑删除编结编辑删除图4-28删除分类页面点击删除按钮即可删除对应分类代码如图4-29所示:attributes.addFlashAttribute(s:"message",o:return"redirect:/admin/type图4-29删除分类代码标签显示这里是管理员后台的标签显示,跟游客界面的标签有所不同,管理员的后台标签显示可以进行标签的增加,删除,修改等操作。显示标签页面如图4-30所示:1后端编强删除删除2新增图4-30显示标签页面代码如图4-31所示:广东海洋大学寸金学院2020届本科生毕业论文publicStringtags(ePageableDefault(size=1Q,sort={"id"),direction=Sort.Direction.DESC)Pageablepageable,Modelmodel){page",tagService.listTag(pageable));model.addAttribute(s图4-31显示标签代码管理员可以在添加标签页面进行添加操作,而添加成功的标签,游客页面也会有显示,如果存在重复的标签名称,将添加不成功,系统将会提示你。添加标签页面如图4-32所示:代码如图4-33所示:publicStringpost(@ValidTagtag,BindingResultresult,RedirectAttributesattributes)(Tagtagl=tagService.getTagByName(tag.getName());result.rejectValue(s:"name",S1:"nameError”,s2:“不能添加重复的分类"):if(result.hasErrors()){Tagt=tagService.saveTag(tag);if(t==null){图4-33添加标签代码管理员可以在编辑标签页面进行编辑操作,而编辑成功的标签,游客页面也会有对应更新。编辑标签页面如图4-34所示:广东海洋大学寸金学院2020届本科生毕业论文提交提交图4-34编辑标签页面代码如图4-35所示:publicStringeditInput(@PathVariableLongid,Modelmodel){model.addAttribute(s:"tag",tagService.getTag(id));图4-35编辑标签代码删除标签可以对某个标签进行删除操作。删除的标签游客界面对应的标签也会被删除。删除标签页面如图4-36所示:名称操作宾辑删除2前端编辑删除新增图4-36删除标签页面点击删除按钮即可删除对应标签代码如图4-37所示:tagService.deleteTag(idattributes.addFlashAttribute(s:"message图4-37删除标签代码 广东海洋大学寸金学院2020届本科生毕业论文5系统测试5.1测试的必要性软件测试是为了发现程序中未知的bug,未知的bug可能存在严重的漏洞,非法分子可以通过扫描系统的漏洞对系统进行攻击,一旦系统被攻击,运行在服务器的系统将可能宕机,或者被迫下线。使系统或用户数据丢失,影响重大。在实际工作中,测试与开发是携手并进的,并不是等开发完功能才测试,而是开发完一个小功能就要测试了,而且测试将伴随整个程序编写的进程。为了保证软件产品的最终质量,在软件开发的过程中,对软件产品进行质量控制。因此软件测试尤为重要,它让系统更加稳定和健壮,使系统的使用者能安稳的使用。5.2测试过程测试分为白盒测试和黑盒测试。本次以白盒测试举例。覆盖率测试又称白盒测试,逻辑覆盖是以程序内部的逻辑结构为基础的测试用例的技术,属于白盒测试。根据覆盖率的不同,又可分为语句覆盖、判定覆盖,判定/条件覆盖,条件组添加重复分类测试按照规定,添加分类时,不可以添加已经存在的分类,若添加重复的分类时应出现相关提示。如下图5-1所示:应出现相关提示。如下图5-1所示:验证失败返回提交X图5-1添加重复分类测试通过添加重复标签测试按照规定,添加标签时,不可以添加已经存在的标签,若添加重复的标签时应出现相关提示。如下图5-2所示:提交返回返回图5-2添加重复标签测试通过请求未知路径测试如请求未知路径,应提示用户路径有问题。如下图5-3所示:图5-3请求未知路径测试通过操作发生异常管理员或用户操作发生异常时,应出现相应提示。如下图5-4所示:图5-4操作异常测试通过登录测试登录是管理员管理系统的唯一入口,不能让未授权或者数据库不存在的用户进入系统操作页面进行相关操作。因此登录测试尤为重要。验证逻辑如下图5-5广东海洋大学寸金学院2020届本科生毕业论文登录系登录系统进入系统证账号和\提示账号或密码错误图5-5登录逻辑测试路径如下表5-6所示:序列输入预期结果实际结果用户名和密码输入其他提示账号或密码错误提示账号或密码错误用户名和密码输入:xian,123456进入管理员界面进入管理员界面表5-6测试路径5.3测试结果测试过程表明我们早期的期盼与测试结果相吻合。即相关模块测试通过,暂时未发现有bug的存在。可以放心投入使用5.4项目部署部署到阿里云服务器上,如图5-7所示。广东海洋大学寸金学院2020届本科生毕业论文Hibernate.…▲先202001054先世?Linux.先图5-7服务器页面5.5负载均衡测试分类分类JavaOtherCssmore》前端同最新推荐Hibernate正能里语录 扫码关注我部署到服务器上面,并运用负债均衡服务器测试,把请求平均分发到两台服务器,可以分压服务器的压力。测试通过。如图5-8所示:17:47:07.15717:47:07.157INF⁰27955Inio-88e-c-2]com.Ire.*ptct.Legkpct.82-2217:47:07.211INFD27955101o-89B-exec-71tom.Irm.aspoct.Lopspacurt-http:/nv?P*.183,2101lthc,i.wb.Inttp://eyserer/',1p-'',classhthod-'con.Irn.wb.Indoxcentroller.宽发 607.433:Updotelimt(url-ttpisrerver?,tp-47.ls.z¹6.1,clthsinb.indantroiller.ine,1p=47.1is:0tSC].)])omlrn,hs,Ihontentrollor.thshx',0220022217:475.n02-2217:47:07.520IRrO279s⁵tnio--X*-7]tn.Irm.MpEt.Loppect17:47:08.094IKF025147…Into-9090-exac-51cen.lrm.aspeet.17:47:07.739INF⁰2795516io-800-ev*t-6]con,Irs.aspect.LogAspect-02-2217:47:0.2471WF⁰-·Inie-9090-sxec-61con.lrn.aspsct.LegAepectmdex:Result:ResultResultReguestarg-args-图5-8负载均衡页面 广东海洋大学寸金学院2020届本科生毕业论文通过本次毕业设计,遇到了许多复杂,难以解决的问题。向朋友和同学请教了许多,终于解决了我的疑惑,也发现了自己许多的不足之处。发现很多需求知识点的贯穿很密切,认识到掌握基础知识是十分重要的,就像盖房子,地基一定要稳。切忌急功近利,我就吃了这方面的亏。所以对我来说,这次毕业设计是一项大挑战,在刚开始开发系统的时候,遇到代码运行的报错信息、警告。面对满屏的红

温馨提示

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

评论

0/150

提交评论