




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于SpringBoot的社交网站的设计与实现-毕业论文基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第1页。文档均为word文档,下载后可直接编辑使用亦可打印基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第1页。摘要如今社会高速发展,随着科技水平的提高,网络越来越发达,随之出现了越来越多的网络社交平台网站。而社交网站众多的情况下,用户们更倾向于方便快捷的社交网站。作为其代表的微博客充分满足了现代快节奏高压力社会下人们急剧上升的个人表达与倾诉沟通的需求,并因其拥有良好的界面交互,所以微博客系统更受现代网民的喜爱和青睐,我由此而开发出本系统给广大用户使用。本系统采用SpringBoot和MyBatis作为系统基础架构,同时采用使用MySQL数据库进行数据的存储,在前端的html页面上使用了大量的JavaScript插件和JQuery框架等让系统界面更加美观友好,并是由Thymeleaf模板引擎进行页面的数据渲染,让页面与用户的交互性更强,同时也让用户拥有更好的使用体验。在系统通知功能中引入WebSocket协议,让用户之间的通信更加顺畅便捷,保证了信息的准确传输。而引入Redis数据库,利用其数据结构的特点,能够很好地将数据保存在Redis数据中并实行自动排序,能过很容易实现类似排行榜这样的功能。在最为关心的系统安全方面,使用Shiro安全框架,将大大增加系统的安全性、健壮性。总的来说,本微博客系统基本实现了博客系统的功能,系统安全性和界面美观性也同时具备,相信用户在使用到本博客系统时,会感受到一个功能丰富,界面友好的系统。关键词:社交平台微博客系统SpringbootMyBatisMySQLWebSocket
基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第2页。基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第2页。AbstractNowadays,withtherapiddevelopmentofsociety,withtheimprovementoftechnologylevel,thenetworkismoreandmoredeveloped,andmoreandmorenetworksocialplatformwebsitesappear.Inthecaseofalargenumberofsocialnetworkingsites,userstendtobemoreconvenientandefficientsocialnetworkingsites.Asarepresentativeofthemicroblog,itfullymeetstheneedsoftherapidriseofpersonalexpressionandcommunicationunderthemodernfast-pacedandhighpressuresociety,andbecauseofitsgoodinterfaceinteraction,themicroblogsystemismorepopularandfavoredbymodernInternetusers,soIdevelopedthissystemforthemajorityofusers.ThesystemusesSpringBootandMyBatisasthesysteminfrastructure,usesMySQLdatabasefordatastorage,usesalargenumberofJavaScriptplug-insandjQueryonthefront-endHTMLpagetomakethesysteminterfacemorebeautifulandfriendly,andusestheThymeleaftemplateenginetorenderthepagedata,makingthepagemoreinteractivewiththeuser,andatthesametime,makingtheuserhavebetteruser'sexperience.WebSocketprotocolisintroducedintothesystemnotificationfunction,whichmakesthecommunicationbetweenusersmoresmoothandconvenient,andensurestheaccuratetransmissionofinformation.TheintroductionofRedisdatabase,usingthecharacteristicsofitsdatastructure,canwellsavethedatainRedisdataandimplementautomaticsorting,andcaneasilyachievesuchfunctionsasleaderboards.Inthemostconcernedsystemsecurity,usingShirosecurityframeworkwillgreatlyincreasethesecurityandrobustnessofthesystem.Ingeneral,thismicroblogsystembasicallyrealizesthefunctionsoftheblogsystem,andthesystemsecurityandinterfaceaestheticsarealsoavailable.Ibelievethatwhenusersusethisblogsystem,theywillfeelasystemwithrichfunctionsandfriendlyinterface.Keywords:socialplatformMicroblogsystemSpringBootMyBatisMySQLWebSocket基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第3页。目录基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第3页。第一章绪论 [5]。4.1.2MyBatis持久层框架Mybatis是一款优秀好用的持久层框架,非常适合与Springboot或Spring框架结合在一起使用,Mybatis支持定制化SQL和高级映射等特性,Mybatis与Springboot结合使用时,只需要在Springboot配置文件上写好相关的配置项即可完成环境搭建,能够极其方便地操作数据库数据,并且框架比较简单,容易入门和便于上手使用。4.1.3MySQL数据库MySQL数据库由于其免费,并且性能是非常高的,使用MySQL作为本系统的数据库是极其合适的。并且MySQL数据库的操作和安装简单方便,便于系统的开发。4.1.4Redis存储由于Redis数据库拥有其独特的数据存储结构,所以使用Redis的Zset结构来存储热点微博是最合适不过了,也正是因为Redis支持排行榜功能,所以选择了Redis数据库作为排行榜功能的开发工具。4.1.5WebSocket协议WebSocket是HTML5开始提供的一种在浏览器和服务器间进行全双工通信的协议。目前很多没有使用WebSocket进行客户端服务端实时通信的web应用,大多使用设置规则时间的轮询,或者使用长轮询较多来处理消息的实时推送。这样势必会较大程度浪费服务器和带宽资源,而WebSocket正是来解决该问题而出现,使得B/S架构的应用拥有C/S架构一样的实时通信能力[15]。WebSocket正是由于基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第19页。其对系统负担较小,所以选用它,但由于其技术难度还是有点高,所以在使用方面并没有涉及得很全面,而且需要花费大量时间去研究和测试改正。基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第19页。4.2功能实现4.2.1“登录注册”功能的实现注册流程图,如图4-2.1所示,用户输入账号、密码时,前端会进行JavaScript校验,如果输入不符合规则,则不能点击注册按钮并出现提示信息。如果输入格式正确时,会把数据提交到后台检查此用户名是否已被别人使用,如果此用户名不可用则返回提示信息给前端,可用的话就会注册成功,并且密码以MD5并加盐方式加密,以密文形式保存到数据库,最后注册成功会跳转到登录页面。图4-2.1注册流程图而前端的表单校验,最为关键是表单的onsubmit事件,只有触发这个事件,才会判断是否会把表单提交到后台。如果function的结果为false,则不能提交表单,同时出现提示信息;结果为true时才能提交表单。提交到后台时会校验用户名是否存在,如果存在则返回提示信息,用户名不存在时则注册成功,并把密码加密。校验核心代码如下图4-2.1.2所示:基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第20页。图4-2.1.2前端校验代码基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第20页。其中登录流程如图4-2.1.3所示。其中登录时在后台的数据检验交给了shiro安全框架来执行,shiro框架会对登录的密码进行加密,然后与数据库中加密的密码进行比对,如果匹配成功,那么就能直接跳转到主页。匹配失败则会抛出异常返回给前端页面。图4-2.1.3登录流程图
基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第21页。登录时系统会自动调用shiro框架的校验方法login(),将用户名密码(token)传给shiro框架。而shiro框架在调用login()方法时,会调用shiro内部的认证方法来进行身份认证,我们只需自己写一些业务代码来把token拿来和数据库查出的密码进行对比就行了,对比成功则能登录成功,对比失败就会抛出异常信息传给前端,前端以信息提示的方式来提醒用户。Shiro核心代码如图4-2.1.4至4-2.1.5所示:基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第21页。图4-2.1.4登录部分核心代码当调用Shiro的login()方法后,shiro将会调用它内部的认证方法doGetAuthenticationInfo来对传进来的token进行验证,当验证失败是会立即抛出异常并拦截回登录页面,而验证成功则会放行。图4-2.1.5shiro核心代码基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第22页。4.2.2“微博客”功能的实现基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第22页。发送博客步骤为:用户在输入框中输入发布的博客内容,点击输入框右下角的发布按钮,将输入的内容发送出去,然后就能在页面上看到自己发送的博客了。其中此功能的实现过程中,在前端使用了大量的JavaScript插件使页面更加美观,交互性更好。而博客的发布,一定要在输入框输入文字才能够发布博客,否则发布按钮将不可选用。而发布成功后,页面会重新加载并能显示出自己发送的博客与其他用户发送的博客,而博客则会以最新时间的顺序进行排序显示出来。部分前端JavaScript插件代码如下图4-2.2.1所示,其中js文件、css文件的引入以及他们之间的加载顺序可能会影响他们的正常显示,所以为了能让各个插件间能够互相协调共处,需要花费较多时间去对js、css文件的加载进行合理排序。图4-2.2.1前端JavaScript插件代码发送微博客功能主要把着重点放在前端页面上,主要是为了让用户有个良好的使用体验,所以在前端使用了许多JQuery函数、JavaScript插件等让页面的元素随着用户的操作而发生相应的变化。另外前端发送数据给后台服务器时,是通过Ajax方式发送,使用Ajax异步请求来发送数据给服务器,能够实现页面的异步更新,这意味着可以在不重新加载整个网页的情况下,可以对网页的某部分进行更新,不再因等待服务器的响应而进入等待状态。而后端在接收到前端传过来的文字、文件、图片等内容后,会将其汇总在一起保存在一个微博对象中并将此对象存入数据库对应的表中进行数据的持久化,这样就能方便系统在显示博客时能从数据库中再次拿取数据出来了。后台部分代码如下图4-2.2.2所示:基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第23页。图4-2.2.2发送博客的代码基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第23页。微博操作模块实现:微博操作模块包括点赞、评论、回复评论、转发、收藏等操作。(1)点赞:点赞的时候,点击点赞按钮,前端页面会进行样式改变使其按钮变为已点赞,同时将一些数据传入到后台,将这个用户对这条微博点赞这个行为记录到数据库中,并且会记录这个微博被点赞的次数,每点击一次会自动+1,取消点赞就-1。当用户下一次登录时,会查出对这条微博是否点过赞,从而在点赞按钮的样式也会相应改变为点赞/已点赞,同时也会查询出对这条微博的点赞次数。部分核心代码如图4-2.2.3和4-2.2.4所示:图4-2.2.3部分点赞代码在显示博客时,会检验当前登录用户是否对显示的博客进行过点赞,如果点过赞,那么这条博客的点赞按钮会显示为已点赞,而以下代码就是判断用户是否已点赞这条博客。基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第24页。基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第24页。图4-2.2.4判断是否点赞代码(2)评论:对某条微博进行评论,评论完时前端的JavaScript评论插件会立刻生成一个评论模块在微博下方,同时把这条评论数据存进数据库使其持久化,在往后再次登录时,仍然能查看到评论。评论功能的关键点是要把评论关联好哪一条微博,这样在查询微博的时候,只需查出和这条微博关联的所有评论即可。微博和评论是一对多的关系,一条微博带着多条评论。部分核心代码如图4-2.2.5所示:图4-2.2.5部分评论代码(3)回复评论:在评论时,我们也可以对别人的评论进行回复,设计思路和评论功能相同,一条评论带着多条回复,当点击回复时,前端会立即创建回复内容模块,同时我们将回复内容的数据保存到数据库中进行持久化,下次登录时还能查看到回复。基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第25页。其中在查询时,微博只需关注要查出他带有的评论就行了,而评论也只需查出他自己带有的回复,就是查询只需查出与他直接关联的下一层,对于下层则不用关心。这样查询的话就能避免进行多表联查,使数据库的查询性能降低,使查询速度大大提高。核心逻辑代码如下图4-2.2.6所示:基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第25页。图4-2.2.6核心逻辑代码(4)转发:转发的本质其实也就是发送一条博客,只是我们的博客内容是另外一条博客,所以我们在转发后,只需在一条微博里面再嵌套一条博客就可以。核心代码如图4-2.2.8所示,这里通过在博客实体类里面设置转发的那条博客id,而在显示博客的时候,服务器会专门查看这个转发的博客id属性是否为空,如果不为空的话则表示这条博客是属于转发博客,是一条转发别人博客的博客,那么在页面显示时就会以一条博客里面再嵌套一条博客的形式来显示。图4-2.2.8核心代码(5)收藏:收藏功能时为了让用户能够对自己喜欢的博客进行收藏,方便基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第26页。下次查看。点击收藏后,前端按钮样式会改变为相应的样式,同时会将数据保存到收藏表中,下次登录时会查看是否对这条微博进行收藏,从而使前端页面显示出对应的按钮样式,而取消收藏后,会将这条收藏记录删除。同时收藏后可以在自己的个人主页中查看收藏的微博记录。核心代码如图4-2.2.9所示:基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第26页。图4-2.2.9收藏核心代码4.2.3“消息通知”和“用户私信”的功能实现生成消息通知的步骤及消息通知的实现消息通知产生的步骤过程为用户对某条博客进行了点赞、评论或转发等操作时,以及用户发送私信给其他用户时,都会产生消息通知并发送给对方,对方如果此时在线的话,会立即受到消息提醒并可以查看消息通知的内容;而如果对方此时不在线,那么他就不能够立刻受到消息通知,只有当他再次上线时才能收到消息提醒。消息通知模块实现思路:通过在网上查询消息通知模块的资料,发现实现的方案主要有两种:1.通过ajax长轮询,通过在ajax一直往后台发送请求查看是否有关于“我”的消息通知。2.通过websocket的方式实现消息的在线发送。我之所以选择websocket这种方式,是因为通过ajax长轮询这种方式会大大增加系统内存资源的消耗,这不利于以后系统的扩展以及优化,而webSocket是html5一种新的协议,实现了浏览器与服务器之间的全双工通信,能很好的节省服务器资源与带宽,并在服务器端与浏览器端实现实时通行,他建立在TCP之上,同http一样,通过tcp来传输数据。并且它有以下特点:(1)只需要一次HTTP握手,所以说整个通讯过程是建立在一次连接/状态中,服务器端会知道连接的信息,知道客户端关闭请求,同时由服务器主动推送,当有信息需要发送时,直接发送。基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第27页。(2)客户端的连接通过session对象存储,能够实现实时推送,与Ajax沦陷和longpoll相比有明显的优势。基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第27页。但是使用websocket来实现消息通知却有一个缺点:当目标用户不在线时,会发送消息失败,造成用户上线后收不到消息通知。所以我在websocket的基础上进行了改进,在通过websocket发送消息的同时,将这条通知数据保存到数据库,当用户上线加入websocket后,会立即将数据库的消息查询出来然后加入到websocket的onOpen()方法中,这样的话当成功加入websocket后会自动调用到onOpen()方法将消息通过websocket发送给用户,这样一来用户在一上线时就能收到消息通知了,产生消息的代码如下图4-2.3.2所示:图4-2.3.2消息通知部分代码当用户登录成功后,或者说连接上服务器后,用户会马上进行websocket的连接。而通过在websocket连接成功后会执行的onOpen()方法里加入查询数据库的代码,这样就能保证用户一旦登录系统,服务器就会先去数据库中查询关于这个用户用户的消息通知,并通过websocket发送给用户。而由于websocket一次只能发送一条消息,但是本系统的消息通知有4种,那么可以直接将这四种信息以字符串的形式拼接起来,同时每种消息之间以一个特殊符号间隔开,这样直接拼接成一个字符串传给前端,由前端页面对这个字符串按照特殊符号进行分解解析,这样就能将这个字符串分解成4种不同的信息了,就能够把这四种不同基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第28页。的消息通知放在相对应的页面区域进行显示了。连接websocket成功后会执行的代码如下图4-2.3.3所示:基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第28页。图4-2.3.3连接成功时执行的代码用户之间私信流程及其实现:用户之间的进行私信时所执行的流程为:用户通过点击其他用户的头像进入到他人的个人首页,通过点击私聊按钮建立起会话连接,一旦建立起会话连接,那么双方就会强行关联起来,双方都把对方加入到自己的聊天对象列表中。其中一方发送消息时,如果对方在线,那么websocket能直接发送聊天消息和通知消息给对方,同时将消息记录保持到数据库中。而如果对方不在线,那么websocket发送聊天消息和通知消息失败,但是会把数据存到数据库中。对方上线后会立即加入到websocket中,那么websocket连接成功时会发送一条消息给用户,那么此时可以将保存到数据库中的消息发送给用户,使用户能够一上线就能收到私信消息提醒,同时如果用户点击消息提示,能够直接进入聊天页面,并查询数据库获得之前别人给我发送的消息内容。通过将消息保存到数据库,能使websocket发送失败的消息保存起来,避免消息丢失,这样就能解决对方不在线的情况下,消息发送出去而对方接收失败的问题。如果不将消息存储到数据库的话,一旦用户不在线,消息会发送失败,这样就非常影响用户的使用体验。用户只想发送一次消息,对方就一定能够收到,不必要等到对方在线后才能发送信息。这样的话,对于线上、线下都能够保证消息的完整性了,不用再担心因为不在线而造成发送不了消息或发送的消息丢失的问题。基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第29页。而正是因为websocket能够在线发送信息,所以很多在线聊天网页都会使用此技术来实现在线聊天。在本系统中也正是因为如此而引入了这种优秀的技术来实现私聊功能。基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第29页。另外用户与用户一旦建立起会话连接,那么双方之间的所有聊天内容都会在这个会话中进行记录。而聊天对象之间之所以为强关联是因为:你与对方建立起连接时,对方也已和你建立起连接,所以一旦建立起会话连接,数据库中就会保存两条聊天对象记录。建立会话连接的核心代码如图4-2.3.5所示:图4-2.3.5建立会话连接的核心代码当用户点击发送按钮发送消息时,数据会传到后台,后台的处理逻辑为:将这条消息保存进数据库,同时将这条消息通过websocket发送给接收者,同时也将通知提醒的消息也发送给对方。发送消息的部分核心代码如图4-2.3.6所示:图4-2.3.6发送消息的核心代码基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第30页。基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第30页。私信模块的存在问题:私信内容消息和通知消息都是通过websocket的方法来发送给用户的,但是两个消息的内容不同,而websocket一次只能发送一条消息,如何解决一次发送两条内容不同的消息呢?通过仔细的思考和研究,想出了解决办法:既然websocket一次只能发送一条消息,那么使用两个不同的websocket就能完美解决,一个websocket负责发送聊天内容,另一个websocket发送消息通知。通过这种方法,让着两个服务各司其职,不同的信息就用对应的服务来发送,不必再担心消息发生发错,或者消息混乱等情况的发生了。具体代码如图4-2.3.8至4-2.3.9所示:图4-2.3.8负责消息通知的websocket部分代码通过在注解@ServerEndpoint上填写不同的映射路径,那么前端在发送websocket的信息时就会根据不同的路径来选择不同的websocket服务器了。图4-2.3.9负责聊天消息的websocke的部分代码基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第31页。4.2.4“热门博客”功能的实现基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第31页。热门博客生成的步骤为:当用户对某条博客进行操作时,会提升这条博客的热度,同时将其存储在Redis数据库中。因Redis的Zset数据结构极其适合于实现排行榜功能,Zset自带一个分数计数器scores,所以使用Redis存储热门博客。设计实现思路为:当用户操作某条微博(点赞、评论、转发)时,会在后台将这条微博存到Redis的Zset集合中,同时设置它的scores加1。而热门微博的排行榜就是从Redis数据库中取出分数最高的前10条微博进行显示的,并由于Redis数据库的Zset集合是按照分数的高低进行排序存放的,因此在取出数据时,这些数据自然就会按照分数(热度)的高低进行排序,不需再写逻辑代码对他们进行排序了。热门博客排行榜的核心代码如图4-2.4.2所示:图4-2.4.2核心代码保存后,可以使用Redis的可视化工具RedisDesktopManager连接上Redis服务器,并查看数据是否存入Redis中。这里我是将微博客记录的唯一id存进Redis中,而查询排行榜时就能通过主键来获取整条微博客记录信息了。Redis数据记录如图4-2.4.3所示:图4-2.4.3Redis保存的数据图基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第32页。4.2.5“搜索”功能的实现基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第32页。搜索功能的实现思路是通过输入关键字,后台通过数据库的模糊查询将所有内容中带有这个关键字的所有微博或用户查询出来。因这个模块技术难度不高,所以设计和实现主要是注重前端的交互性就行。当时为了让用户能有更好的使用体验,避免查询一次后搜索框的内容清空,出现频繁输入搜索内容的情况,这里将搜索内容也直接传到下一次跳转页面,部分核心代码如图4-2.5.1所示:图4-2.5.1搜索核心代码本系统的主要的功能就介绍到这里,还有很多小功能主要体现在前端的页面上,为了让用户的体验性更好,页面的功能也是极其重要的,所以在前端页面上也是花费大量的时间进行改造,使用了很多JavaScript插件,使前端有个美观操作界面。4.3数据库的实现根据上面的功能需求并结合每个实体之间的关系,本系统一共创建12张数据库表来支持功能的实现,满足功能上的数据需求。每张表的实现都会对应一个功能或者多个功能,而一个功能可能也会操作多张表的数据来实现其功能要求。以下表3-4.1至3-4.12分别介绍了每张表的字段、数据类型以及每个字段的使用含义。 聊天对象表(chatlist)主要是用于存储用户的聊天对象的,每个用户都会有很多聊天对象,通过将这些对象放在一个专门的表中存放,便于后台代码基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第33页。在执行相应功能时,能够快速查找到这些对象的信息,如表3-4.1。基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第33页。表3-4.1chatlist聊天对象信息表键名数据类型长度是否主键实体类字段名描述idint11是Id唯一字段meint255否me本人(我)的idyouint255否you聊天对象的idsessionIDvarchar255否sessionID会话id(这次谈话的id)lastTimeTalkdatetime0否lastTimeTalk最后一次聊天的时间sxMessageint255否sxMessage未查看的新信息数聊天记录表(chatrecord)主要用于存储用户的聊天消息的,在用户再次聊天时,能够让用户查看到上次的聊天记录,避免的聊天信息的丢失,在进入聊天时,后台会根据双方的用户id,到这张记录表去查找消息记录返回给前端,如表3-4.2。表3-4.2chatrecord聊天记录信息表键名数据类型长度是否主键实体类字段名描述idint11是Id唯一字段基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第34页。sessionId基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第34页。varchar255否sessionId会话id(这次谈话的id)sendManint255否sendMan发送消息者idreceiveManint255否receiveMan接收消息者idcontantvarchar255否contant消息内容sendTimedatetime0否sendTime发送消息的时间收藏记录表(collect)用于存放用户收藏的博客记录,用户在收藏某条博客后,点击个人收藏页面时,后代会聪哥这张表中查找出收藏的博客并返回给页面显示,如表3-4.3。表3-4.3collect收藏记录信息表键名数据类型长度是否主键实体类字段名描述collectIDvarchar255是collectID唯一字段userIDint255否userID收藏者idwbIDvarchar255否wbID被收藏的微博id关注记录表(gz)用于记录用户与用户之间的关注情况,如果用户关注了对方,那么后台会记录这条数据,在用户再次查看某位用户时,将知道是否关注对方,如表3-4.4。基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第35页。表3-4.4gz关注记录信息表基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第35页。键名数据类型长度是否主键实体类字段名描述idint11是Id唯一字段gzUsernamevarchar255否gzUsername关注人的usernamegzedUsernamevarchar255否gzedUsername被关注人的username回复评论表(hfpllist)用于记录用户回复评论的内容,当用户再次查看某条评论的回复时,后台将查询这张表的数据并返回给页面,如表3-4.5。表3-4.5hfpllist回复评论记录信息表键名数据类型长度是否主键实体类字段名描述idvarchar11是Id唯一字段plIDvarchar255否plID会话id(这次谈话的id)plzIDint11否plzID发送消息者idusernamevarchar255否username接收消息者idhfContentvarchar255否hfContent回复内容hfpltimedatetime0否hfpltime发送消息的时间基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第36页。基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第36页。点赞消息通知表(likemessage)用于保存用户点赞后产生的消息通知记录,如表3-4.6。表3-4.6likemessage点赞消息通知记录信息表键名数据类型长度是否主键实体类字段名描述idint80是Id唯一字段likeUserNamevarchar255否likeUserName点赞者用户名likedUsernamevarchar255否likedUsername被点赞者的用户名dzWeibovarchar255否dzWeibo被点赞的那条微博iddzTimedatetime0否dzTime点赞时间点赞记录表(love)用于记录用户的点赞情况,如果对某条博客点赞后,会将记录保存到这张表,下次查看时能知道是否会这条博客点过赞,如表3-4.7。表3-4.7love点赞记录信息表键名数据类型长度是否主键实体类字段名描述dzIDvarchar255是dzID唯一字段userIDvarchar255否userID点赞者idwbIDvarchar255否wbID点赞的那条微博id基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第37页。评论记录表(pllist)用于记录用户的评论消息,如果对某条博客评论后,会将记录保存到这张表,下次查看评论时能后台会查看这张表并返回评论记录给页面,如表3-4.8。基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第37页。表3-4.8pllist评论信息记录信息表键名数据类型长度是否主键实体类字段名描述idvarchar80是Id唯一字段weiboidvarchar255否weiboid被评论的微博idusernamevarchar11否username评论者的用户名useridint255否userid评论者的idplContentvarchar255否plContent评论的内容plTimedatetime0否plTime评论的时间评论消息通知表(plmessage)用于记录用户的收到的评论通知,当有人评论了用户的某条博客时,将这记录存放在这张表,如表3-4.9。表3-4.9plmessage评论消息通知记录信息表键名数据类型长度是否主键实体类字段名描述idint11是Id唯一字段plUsernamevarchar255否plUsername评论者用户名基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第38页。pledUsername基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第38页。varchar255否pledUsername被评论者的用户名plWeibovarchar255否plWeibo被评论的那条微博idplTimedatetime0否plTime评论时间。plContentvarchar255否plContent评论内容用户信息表(user)用于存放用户的个人信息,包括头像、账号密码等,如表3-4.10。表3-4.10user用户信息记录信息表键名数据类型长度是否主键实体类字段名描述idint11是Id唯一字段usernamevarchar255否username用户名passwordvarchar255否password密码saltvarchar255否salt加盐headImgNamevarchar255否headImgName头像图片名personal_labelvarchar255否personalLabel个性签名webNamevarchar255否webName网名基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第39页。name基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第39页。varchar255否name真实名字cityvarchar255否city城市genderInt255否gender姓名(0:男,1:女)birthdaydate0否birthday生日likeCountint255否likeCount点赞消息提醒数量plCountint255否plCount评论消息提醒数量zfCountint255否zfCount转发消息提醒数量chatMessageint255否 chatMessage私信消息提醒数量博客信息表(weibo)用于记录用户发送过的博客记录,当用户发送一条博客后会将这条博客保存到此表,在页面显示时就会查询这张表获取博客记录,如表3-4.11。表3-4.11weibo博客信息记录信息表键名数据类型长度是否主键实体类字段名描述weibo_idvarchar255是weiboId唯一字段user_idint11否userId该条微博的作者id。contentvarchar255否content微博文字内容postTimedatetime0否postTime发送时间基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第40页。pic1基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第40页。varchar255否pic1发送的图片名称pic2varchar255否pic2发送的图片名称pic3varchar255否pic3发送的图片名称pic4varchar255否pic4发送的图片名称Pic5varchar255否Pic5发送的图片名称Pic6varchar255否Pic6发送的图片名称videovarchar255否video上传的视频文件名musicvarchar255否music上传的音乐文件名zanint11否zan该条微博的点赞数zfwbidvarchar255否zfwbid转发的微博id转发消息通知表(zfmessage)用于记录用户的收到的转发通知,当有人转发了用户的某条博客时,将这记录存放在这张表,如表3-4.12。表3-4.12zfmessage转发消息通知记录信息表键名数据类型长度是否主键实体类字段名描述idint11是Id唯一字段zfUsernamevarchar255否zfUsername转发者用户名基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第41页。zfedUsername基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第41页。varchar255否zfedUsername被转发者的用户名zfWeibovarchar255否zfWeibo转发的那条微博idzfTimedatetime0否zfTime转发时间4.4实现效果以上功能的实现效果全部在前端的页面上得到了体验,每个功能都会与某个页面,某个按钮或者某块区域直接关联起来。部分功能效果如图4-3.1至4-3.5所示:注册时,如果输入不规范,会以红色字段提示用户输入错误,如果输入规范则不会提示。图4-3.1注册功能效果图用户点击表情按钮,可以选着一个表情发送出去,表情可以为动态图,也可以为静态图,选着表情后会以一个特殊的文字显示在输入框中,发送后经前端表情插件解析后重新识别为表情图片。基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第42页。基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第42页。图4-3.2表情功能效果图点赞后点赞按钮里面数字加1,并且心形变为实体,当取消点赞时按钮数字则减1,而心形会变为空心。图4-3.3点赞功能效果图用户点击评论按钮后会弹出评论框,在评论框中输入评论内容,点击绿色评论按钮发送评论信息,评论消息会立即显示在评论框下方。图4-3.4评论功能效果图基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第43页。当用户收到消息通知时,会在页面的左上方通知区域出现红色圆圈,圆圈内的数字表示总消息数量,鼠标放在通知区域会显示详细的通知消息,如赞、评论等,哪个区域有红色圆圈,表示对应哪个模块有消息。基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第43页。图4-3.5消息通知功能效果图用户私聊页面,在页面的左侧为用户的聊天对象列表,右侧为聊天框。图4-3.6私信功能效果图4.4本章总结本章主要详细介绍各个功能的实现过程和实现思路,并且介绍了各功能的实现情况以及实现出来的效果。
基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第44页。基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第44页。第五章系统测试任何系统都要经过反复的测试,多次测试后才算开发成功。本系统开发完成后对各个功能进行了测试,并对测试出现的问题、bug等进行改进,使系统更加强大牢固。5.1测试用例结果通过对本系统的各项功能进行多次测试,得出了测试用例结果,下表为本系统的测试功能用例表,将会介绍各个功能的测试情况,如下所示:表5-1测试功能用例表需求功能名称测试用例名称执行说明执行情况是否通过登录注册登录与注册测试测试用户是否可以使用正常注册账号和进行登录,输入错误时是否出现提示良好是发送表情功能表情功能测试测试用户能否正常使用表情功能,点击表情按钮能否正常弹出表情框,发送表情后能否正常显示良好是发送图片,视频、音乐发送多种不同形式的博客测试测试用户能否正常发送图片、视频、音乐等格式的博客,能否正常查看图片、视频,能否聆听到音乐良好是搜索博客和用户搜索测试测试用户能否通过输入关键字搜索出博客、用户,搜素出来的结果与搜索词是否符合良好是个人中心个人中心模块测试测试用户点击头像图标能否进入到个人主页,能否在个人主页查看自己发送过的博客,能否查看收藏的博客良好是热门排行榜功能热门排行榜测试测试多个用户对同一条博客进行点赞、评论等操作,能否让此条博客进入到热门排行榜良好是基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第45页。私聊基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第45页。私聊功能测试测试用户向另一个用户进行私聊时,对方能否接收到消息,对方发送消息多来时,自己是否也能收到良好是收藏功能收藏功能测试测试用户点击收藏按钮后,能否在个人收藏中查看到本条收藏博客良好是转发功能转发功能测试测试用户能否正常转发某条博客,点击转发按钮能否正常弹出转发框,转发后能否正常显示转发的内容良好是回复功能回复功能测试测试用户能否正常对某条评论进行回复,回复内容能否正常显示良好是评论功能评论功能测试测试用户能否对某条博客进行评论,评论的内容能否正常显示在博客下方良好是消息通知消息通知测试测试用户对某条博客点赞、评论时,该博客作者能否收到消息通知,别人私聊用户时,用户能否收到私聊的通知提醒。良好是基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第46页。5.2测试效果基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第46页。对于功能测试方面,在微博功能测试中,测试内容为发送50条微博客,发送的内容包括文字、图片、音乐、视频等,查看发送的内容是否可以正确、按时间顺序进行有序的排序,并且对于发送的图片、视频、音乐、表情等能否正常查看。测试效果如图5-1所示。图5-2微博客功能测试效果图而私信功能和消息通知功能的测试,通过在两个不同的浏览器或者在两台电脑上登录两个不同的账号,私信对方进行聊天,查看能否接收到通知消息,点击消息提示时能够查看到消息记录,测试效果如图5-2所示:图5-3私信与消息通知功能测试效果图基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第47页。对于搜索功能的测试,分别进行50次搜索,对搜索得到的内容,查看是否含有搜索的关键字,同时要查看结果展示是否正确,页面排版是否美观等,测试效果如图5-3所示。基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第47页。图5-4搜索功能测试效果图热门微博客排行功能的测试,分别使用多个用户对微博客进行点赞、评论、转发等,然后查看对于多人操作的微博客能否出现在排行榜中,测试效果如图5-4所示。图5-5搜索功能测试结果图经过对每个功能的多次测试,找出了这些功能出现的问题和bug并修改,经过修改后,目前所有功能均能正常运行使用,而页面的跳转、页面上的样式变化等业务异常,数据库的读写操作也正常,基本能够满足用户的目标所需。不过由于本次测试其性能次数有限,可能存在局限性。基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第48页。基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第48页。第六章总结通过分析研究目前流行的社交博客平台,参考这些系统的优秀、前沿的技术和功能,发扬他们的优点、改正他们的缺点,并结合自身的实际情况开发了一个微博客系统。本微博客系统能够让用户在上下班路上、周末休息等有限时间内充分接收外界网络的信息,不仅可以消遣时间,也能了解网络咨询等。本系统在设计上,把信息内容设置得“精致玲珑”,文字输入限制在140个字以内,图片上传限制在6张以内,这样的设计会让在显示的时候一条博客显得精短,不会一整条就占用一个页面的显示。同时在用户之间的交流互动,也不仅仅只是在评论中进行,更应该可以像聊天工具一样自由地交流,所以私聊功能由此而出现。而为了让用户能够第一时间了解当前的热点新闻,我们为此而做出热点排行榜功能,这些功能的主要目的都是为了让用户能够在最短的时间内清楚地知道外界的信息,查看自己想要的信息。本系统以SpringBoot作为核心框架,通过SpringBoot与其他框架的整合,构建起了整个系统的架构。首先引入Mybatis框架,能够让系统可以对数据库进行操作和查看;另外引入ApacheShiro安全框架,能够让系统的安全性得到很大的提高;引入WebSocket技术,能够使用户之间的通讯更加快速准确,保证信息的正确传递,另外还能减少系统资源,提高系统性能。而为了实现排行榜功能,为此引入Redis数据库,由于Redis的基于键值对形式的非关系型数据库,所以在存储数据时是极其快的,并且其拥有独特的存储数据结构Zset,非常适合用来存储那些排行榜上的数据。本系统在页面上进行了的大量的优化和调整,使页面能够以较为美观地呈现给用户,让用户能有良好的使用体验,并且每个功能都会有一部分的页面与之对应,用户通过页面来直接使用功能,使功能的特性更加直观地呈现出来。在开发完成后,测试环节是最重要的一步,可以说一个系统的好坏与它有没有经过测试有必要联系。所以本系统经过大量反复的测试,对功能逻辑、对页面等进行测试,将发现的问题、bug、错误等,全部加以修改优化,为了能让用户更加顺畅、更好地使用本博客系统所必须做的一步。总的来说,本微博客系统实现了目前社交平台的大部分功能,能够满足用户的日常使用需求,同时对于未实现的功能或者难以实现的功能,会在未来出现更好的技术或者拥有更多的资源支持时,会考虑将这些功能都实现起来,使系统更加的完善和强大。基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第49页。基于SpringBoot的社交网站的设计与实现-毕业论文全文共51页,当前为第49页。参考文献[1]赵一凡、卞良、丛昕.《基于MD5的加盐消息摘要Java实现》[J]2018年3月15日[2]CayS.Horstmann.《Java核心技术卷I:基础知识》[M].\o"机械工业出版社"机械工业出版社2016年9月1日[3]CraigWalls.《SpringBoot实战》[M].\o"人民邮电出版社"人民邮电出版社2016年9月1日[4]疯狂软件.《SpringBoot2企业应用实战》[M].\o"电子工业出版社"电子工业出版社2018年5月1日[5]黄健宏.《Redis设计与实现》[M].
\o"机械工业出版社"机械工业出版社2014年6月1日[6]明日科技.《MySQL从入门到精通》[M].\o"清华大学出版社"清华大学出版社2017年8月1日[7]刘增辉.《MyBatis从入门到精通》[M].HYPERLINK"/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农村房屋拆除合同样本
- 中石油合作合同样本
- 修建简易合同标准文本
- 买房退款合同标准文本
- 第11讲 人体的呼吸 2025年会考生物学专题练习(含答案)
- 仓储补充协议合同样本
- 买卖花椒合同样本
- 学生志愿服务活动安排计划
- 公积金要求合同标准文本
- 农场安装家具合同样本
- 《给水排水管道工程施工及验收规范》-20210801081158
- 医院管理安全生产主体责任清单
- 湖南省常德市石门一中2025届高三第三次模拟考试物理试卷含解析
- 广西燃气安全检查标准 DBJ T45-1472-2023(2023年7月1日实施)
- 系统自检报告范本
- 知识产权法(四川师范大学)智慧树知到答案2024年四川师范大学
- 民法典中英对照(官方翻译版)-第一编
- 食用菌加工与储藏技术考核试卷
- 重大事故隐患判定标准课件
- Python编程案例教程全套教学课件
- 福州流动人口登记表
评论
0/150
提交评论