版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第1頁。文檔均為word文檔,下載后可直接編輯使用亦可打印基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第1頁。摘要如今社會(huì)高速發(fā)展,隨著科技水平的提高,網(wǎng)絡(luò)越來越發(fā)達(dá),隨之出現(xiàn)了越來越多的網(wǎng)絡(luò)社交平臺(tái)網(wǎng)站。而社交網(wǎng)站眾多的情況下,用戶們更傾向于方便快捷的社交網(wǎng)站。作為其代表的微博客充分滿足了現(xiàn)代快節(jié)奏高壓力社會(huì)下人們急劇上升的個(gè)人表達(dá)與傾訴溝通的需求,并因其擁有良好的界面交互,所以微博客系統(tǒng)更受現(xiàn)代網(wǎng)民的喜愛和青睞,我由此而開發(fā)出本系統(tǒng)給廣大用戶使用。本系統(tǒng)采用SpringBoot和MyBatis作為系統(tǒng)基礎(chǔ)架構(gòu),同時(shí)采用使用MySQL數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的存儲(chǔ),在前端的html頁面上使用了大量的JavaScript插件和JQuery框架等讓系統(tǒng)界面更加美觀友好,并是由Thymeleaf模板引擎進(jìn)行頁面的數(shù)據(jù)渲染,讓頁面與用戶的交互性更強(qiáng),同時(shí)也讓用戶擁有更好的使用體驗(yàn)。在系統(tǒng)通知功能中引入WebSocket協(xié)議,讓用戶之間的通信更加順暢便捷,保證了信息的準(zhǔn)確傳輸。而引入Redis數(shù)據(jù)庫(kù),利用其數(shù)據(jù)結(jié)構(gòu)的特點(diǎn),能夠很好地將數(shù)據(jù)保存在Redis數(shù)據(jù)中并實(shí)行自動(dòng)排序,能過很容易實(shí)現(xiàn)類似排行榜這樣的功能。在最為關(guān)心的系統(tǒng)安全方面,使用Shiro安全框架,將大大增加系統(tǒng)的安全性、健壯性??偟膩碚f,本微博客系統(tǒng)基本實(shí)現(xiàn)了博客系統(tǒng)的功能,系統(tǒng)安全性和界面美觀性也同時(shí)具備,相信用戶在使用到本博客系統(tǒng)時(shí),會(huì)感受到一個(gè)功能豐富,界面友好的系統(tǒng)。關(guān)鍵詞:社交平臺(tái)微博客系統(tǒng)SpringbootMyBatisMySQLWebSocket
基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第2頁?;赟pringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第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的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第3頁。目錄基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第3頁。第一章緒論 [5]。4.1.2MyBatis持久層框架Mybatis是一款優(yōu)秀好用的持久層框架,非常適合與Springboot或Spring框架結(jié)合在一起使用,Mybatis支持定制化SQL和高級(jí)映射等特性,Mybatis與Springboot結(jié)合使用時(shí),只需要在Springboot配置文件上寫好相關(guān)的配置項(xiàng)即可完成環(huán)境搭建,能夠極其方便地操作數(shù)據(jù)庫(kù)數(shù)據(jù),并且框架比較簡(jiǎn)單,容易入門和便于上手使用。4.1.3MySQL數(shù)據(jù)庫(kù)MySQL數(shù)據(jù)庫(kù)由于其免費(fèi),并且性能是非常高的,使用MySQL作為本系統(tǒng)的數(shù)據(jù)庫(kù)是極其合適的。并且MySQL數(shù)據(jù)庫(kù)的操作和安裝簡(jiǎn)單方便,便于系統(tǒng)的開發(fā)。4.1.4Redis存儲(chǔ)由于Redis數(shù)據(jù)庫(kù)擁有其獨(dú)特的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),所以使用Redis的Zset結(jié)構(gòu)來存儲(chǔ)熱點(diǎn)微博是最合適不過了,也正是因?yàn)镽edis支持排行榜功能,所以選擇了Redis數(shù)據(jù)庫(kù)作為排行榜功能的開發(fā)工具。4.1.5WebSocket協(xié)議WebSocket是HTML5開始提供的一種在瀏覽器和服務(wù)器間進(jìn)行全雙工通信的協(xié)議。目前很多沒有使用WebSocket進(jìn)行客戶端服務(wù)端實(shí)時(shí)通信的web應(yīng)用,大多使用設(shè)置規(guī)則時(shí)間的輪詢,或者使用長(zhǎng)輪詢較多來處理消息的實(shí)時(shí)推送。這樣勢(shì)必會(huì)較大程度浪費(fèi)服務(wù)器和帶寬資源,而WebSocket正是來解決該問題而出現(xiàn),使得B/S架構(gòu)的應(yīng)用擁有C/S架構(gòu)一樣的實(shí)時(shí)通信能力[15]。WebSocket正是由于基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第19頁。其對(duì)系統(tǒng)負(fù)擔(dān)較小,所以選用它,但由于其技術(shù)難度還是有點(diǎn)高,所以在使用方面并沒有涉及得很全面,而且需要花費(fèi)大量時(shí)間去研究和測(cè)試改正?;赟pringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第19頁。4.2功能實(shí)現(xiàn)4.2.1“登錄注冊(cè)”功能的實(shí)現(xiàn)注冊(cè)流程圖,如圖4-2.1所示,用戶輸入賬號(hào)、密碼時(shí),前端會(huì)進(jìn)行JavaScript校驗(yàn),如果輸入不符合規(guī)則,則不能點(diǎn)擊注冊(cè)按鈕并出現(xiàn)提示信息。如果輸入格式正確時(shí),會(huì)把數(shù)據(jù)提交到后臺(tái)檢查此用戶名是否已被別人使用,如果此用戶名不可用則返回提示信息給前端,可用的話就會(huì)注冊(cè)成功,并且密碼以MD5并加鹽方式加密,以密文形式保存到數(shù)據(jù)庫(kù),最后注冊(cè)成功會(huì)跳轉(zhuǎn)到登錄頁面。圖4-2.1注冊(cè)流程圖而前端的表單校驗(yàn),最為關(guān)鍵是表單的onsubmit事件,只有觸發(fā)這個(gè)事件,才會(huì)判斷是否會(huì)把表單提交到后臺(tái)。如果function的結(jié)果為false,則不能提交表單,同時(shí)出現(xiàn)提示信息;結(jié)果為true時(shí)才能提交表單。提交到后臺(tái)時(shí)會(huì)校驗(yàn)用戶名是否存在,如果存在則返回提示信息,用戶名不存在時(shí)則注冊(cè)成功,并把密碼加密。校驗(yàn)核心代碼如下圖4-2.1.2所示:基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第20頁。圖4-2.1.2前端校驗(yàn)代碼基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第20頁。其中登錄流程如圖4-2.1.3所示。其中登錄時(shí)在后臺(tái)的數(shù)據(jù)檢驗(yàn)交給了shiro安全框架來執(zhí)行,shiro框架會(huì)對(duì)登錄的密碼進(jìn)行加密,然后與數(shù)據(jù)庫(kù)中加密的密碼進(jìn)行比對(duì),如果匹配成功,那么就能直接跳轉(zhuǎn)到主頁。匹配失敗則會(huì)拋出異常返回給前端頁面。圖4-2.1.3登錄流程圖
基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第21頁。登錄時(shí)系統(tǒng)會(huì)自動(dòng)調(diào)用shiro框架的校驗(yàn)方法login(),將用戶名密碼(token)傳給shiro框架。而shiro框架在調(diào)用login()方法時(shí),會(huì)調(diào)用shiro內(nèi)部的認(rèn)證方法來進(jìn)行身份認(rèn)證,我們只需自己寫一些業(yè)務(wù)代碼來把token拿來和數(shù)據(jù)庫(kù)查出的密碼進(jìn)行對(duì)比就行了,對(duì)比成功則能登錄成功,對(duì)比失敗就會(huì)拋出異常信息傳給前端,前端以信息提示的方式來提醒用戶。Shiro核心代碼如圖4-2.1.4至4-2.1.5所示:基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第21頁。圖4-2.1.4登錄部分核心代碼當(dāng)調(diào)用Shiro的login()方法后,shiro將會(huì)調(diào)用它內(nèi)部的認(rèn)證方法doGetAuthenticationInfo來對(duì)傳進(jìn)來的token進(jìn)行驗(yàn)證,當(dāng)驗(yàn)證失敗是會(huì)立即拋出異常并攔截回登錄頁面,而驗(yàn)證成功則會(huì)放行。圖4-2.1.5shiro核心代碼基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第22頁。4.2.2“微博客”功能的實(shí)現(xiàn)基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第22頁。發(fā)送博客步驟為:用戶在輸入框中輸入發(fā)布的博客內(nèi)容,點(diǎn)擊輸入框右下角的發(fā)布按鈕,將輸入的內(nèi)容發(fā)送出去,然后就能在頁面上看到自己發(fā)送的博客了。其中此功能的實(shí)現(xiàn)過程中,在前端使用了大量的JavaScript插件使頁面更加美觀,交互性更好。而博客的發(fā)布,一定要在輸入框輸入文字才能夠發(fā)布博客,否則發(fā)布按鈕將不可選用。而發(fā)布成功后,頁面會(huì)重新加載并能顯示出自己發(fā)送的博客與其他用戶發(fā)送的博客,而博客則會(huì)以最新時(shí)間的順序進(jìn)行排序顯示出來。部分前端JavaScript插件代碼如下圖4-2.2.1所示,其中js文件、css文件的引入以及他們之間的加載順序可能會(huì)影響他們的正常顯示,所以為了能讓各個(gè)插件間能夠互相協(xié)調(diào)共處,需要花費(fèi)較多時(shí)間去對(duì)js、css文件的加載進(jìn)行合理排序。圖4-2.2.1前端JavaScript插件代碼發(fā)送微博客功能主要把著重點(diǎn)放在前端頁面上,主要是為了讓用戶有個(gè)良好的使用體驗(yàn),所以在前端使用了許多JQuery函數(shù)、JavaScript插件等讓頁面的元素隨著用戶的操作而發(fā)生相應(yīng)的變化。另外前端發(fā)送數(shù)據(jù)給后臺(tái)服務(wù)器時(shí),是通過Ajax方式發(fā)送,使用Ajax異步請(qǐng)求來發(fā)送數(shù)據(jù)給服務(wù)器,能夠?qū)崿F(xiàn)頁面的異步更新,這意味著可以在不重新加載整個(gè)網(wǎng)頁的情況下,可以對(duì)網(wǎng)頁的某部分進(jìn)行更新,不再因等待服務(wù)器的響應(yīng)而進(jìn)入等待狀態(tài)。而后端在接收到前端傳過來的文字、文件、圖片等內(nèi)容后,會(huì)將其匯總在一起保存在一個(gè)微博對(duì)象中并將此對(duì)象存入數(shù)據(jù)庫(kù)對(duì)應(yīng)的表中進(jìn)行數(shù)據(jù)的持久化,這樣就能方便系統(tǒng)在顯示博客時(shí)能從數(shù)據(jù)庫(kù)中再次拿取數(shù)據(jù)出來了。后臺(tái)部分代碼如下圖4-2.2.2所示:基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第23頁。圖4-2.2.2發(fā)送博客的代碼基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第23頁。微博操作模塊實(shí)現(xiàn):微博操作模塊包括點(diǎn)贊、評(píng)論、回復(fù)評(píng)論、轉(zhuǎn)發(fā)、收藏等操作。(1)點(diǎn)贊:點(diǎn)贊的時(shí)候,點(diǎn)擊點(diǎn)贊按鈕,前端頁面會(huì)進(jìn)行樣式改變使其按鈕變?yōu)橐腰c(diǎn)贊,同時(shí)將一些數(shù)據(jù)傳入到后臺(tái),將這個(gè)用戶對(duì)這條微博點(diǎn)贊這個(gè)行為記錄到數(shù)據(jù)庫(kù)中,并且會(huì)記錄這個(gè)微博被點(diǎn)贊的次數(shù),每點(diǎn)擊一次會(huì)自動(dòng)+1,取消點(diǎn)贊就-1。當(dāng)用戶下一次登錄時(shí),會(huì)查出對(duì)這條微博是否點(diǎn)過贊,從而在點(diǎn)贊按鈕的樣式也會(huì)相應(yīng)改變?yōu)辄c(diǎn)贊/已點(diǎn)贊,同時(shí)也會(huì)查詢出對(duì)這條微博的點(diǎn)贊次數(shù)。部分核心代碼如圖4-2.2.3和4-2.2.4所示:圖4-2.2.3部分點(diǎn)贊代碼在顯示博客時(shí),會(huì)檢驗(yàn)當(dāng)前登錄用戶是否對(duì)顯示的博客進(jìn)行過點(diǎn)贊,如果點(diǎn)過贊,那么這條博客的點(diǎn)贊按鈕會(huì)顯示為已點(diǎn)贊,而以下代碼就是判斷用戶是否已點(diǎn)贊這條博客。基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第24頁?;赟pringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第24頁。圖4-2.2.4判斷是否點(diǎn)贊代碼(2)評(píng)論:對(duì)某條微博進(jìn)行評(píng)論,評(píng)論完時(shí)前端的JavaScript評(píng)論插件會(huì)立刻生成一個(gè)評(píng)論模塊在微博下方,同時(shí)把這條評(píng)論數(shù)據(jù)存進(jìn)數(shù)據(jù)庫(kù)使其持久化,在往后再次登錄時(shí),仍然能查看到評(píng)論。評(píng)論功能的關(guān)鍵點(diǎn)是要把評(píng)論關(guān)聯(lián)好哪一條微博,這樣在查詢微博的時(shí)候,只需查出和這條微博關(guān)聯(lián)的所有評(píng)論即可。微博和評(píng)論是一對(duì)多的關(guān)系,一條微博帶著多條評(píng)論。部分核心代碼如圖4-2.2.5所示:圖4-2.2.5部分評(píng)論代碼(3)回復(fù)評(píng)論:在評(píng)論時(shí),我們也可以對(duì)別人的評(píng)論進(jìn)行回復(fù),設(shè)計(jì)思路和評(píng)論功能相同,一條評(píng)論帶著多條回復(fù),當(dāng)點(diǎn)擊回復(fù)時(shí),前端會(huì)立即創(chuàng)建回復(fù)內(nèi)容模塊,同時(shí)我們將回復(fù)內(nèi)容的數(shù)據(jù)保存到數(shù)據(jù)庫(kù)中進(jìn)行持久化,下次登錄時(shí)還能查看到回復(fù)。基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第25頁。其中在查詢時(shí),微博只需關(guān)注要查出他帶有的評(píng)論就行了,而評(píng)論也只需查出他自己帶有的回復(fù),就是查詢只需查出與他直接關(guān)聯(lián)的下一層,對(duì)于下層則不用關(guān)心。這樣查詢的話就能避免進(jìn)行多表聯(lián)查,使數(shù)據(jù)庫(kù)的查詢性能降低,使查詢速度大大提高。核心邏輯代碼如下圖4-2.2.6所示:基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第25頁。圖4-2.2.6核心邏輯代碼(4)轉(zhuǎn)發(fā):轉(zhuǎn)發(fā)的本質(zhì)其實(shí)也就是發(fā)送一條博客,只是我們的博客內(nèi)容是另外一條博客,所以我們?cè)谵D(zhuǎn)發(fā)后,只需在一條微博里面再嵌套一條博客就可以。核心代碼如圖4-2.2.8所示,這里通過在博客實(shí)體類里面設(shè)置轉(zhuǎn)發(fā)的那條博客id,而在顯示博客的時(shí)候,服務(wù)器會(huì)專門查看這個(gè)轉(zhuǎn)發(fā)的博客id屬性是否為空,如果不為空的話則表示這條博客是屬于轉(zhuǎn)發(fā)博客,是一條轉(zhuǎn)發(fā)別人博客的博客,那么在頁面顯示時(shí)就會(huì)以一條博客里面再嵌套一條博客的形式來顯示。圖4-2.2.8核心代碼(5)收藏:收藏功能時(shí)為了讓用戶能夠?qū)ψ约合矚g的博客進(jìn)行收藏,方便基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第26頁。下次查看。點(diǎn)擊收藏后,前端按鈕樣式會(huì)改變?yōu)橄鄳?yīng)的樣式,同時(shí)會(huì)將數(shù)據(jù)保存到收藏表中,下次登錄時(shí)會(huì)查看是否對(duì)這條微博進(jìn)行收藏,從而使前端頁面顯示出對(duì)應(yīng)的按鈕樣式,而取消收藏后,會(huì)將這條收藏記錄刪除。同時(shí)收藏后可以在自己的個(gè)人主頁中查看收藏的微博記錄。核心代碼如圖4-2.2.9所示:基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第26頁。圖4-2.2.9收藏核心代碼4.2.3“消息通知”和“用戶私信”的功能實(shí)現(xiàn)生成消息通知的步驟及消息通知的實(shí)現(xiàn)消息通知產(chǎn)生的步驟過程為用戶對(duì)某條博客進(jìn)行了點(diǎn)贊、評(píng)論或轉(zhuǎn)發(fā)等操作時(shí),以及用戶發(fā)送私信給其他用戶時(shí),都會(huì)產(chǎn)生消息通知并發(fā)送給對(duì)方,對(duì)方如果此時(shí)在線的話,會(huì)立即受到消息提醒并可以查看消息通知的內(nèi)容;而如果對(duì)方此時(shí)不在線,那么他就不能夠立刻受到消息通知,只有當(dāng)他再次上線時(shí)才能收到消息提醒。消息通知模塊實(shí)現(xiàn)思路:通過在網(wǎng)上查詢消息通知模塊的資料,發(fā)現(xiàn)實(shí)現(xiàn)的方案主要有兩種:1.通過ajax長(zhǎng)輪詢,通過在ajax一直往后臺(tái)發(fā)送請(qǐng)求查看是否有關(guān)于“我”的消息通知。2.通過websocket的方式實(shí)現(xiàn)消息的在線發(fā)送。我之所以選擇websocket這種方式,是因?yàn)橥ㄟ^ajax長(zhǎng)輪詢這種方式會(huì)大大增加系統(tǒng)內(nèi)存資源的消耗,這不利于以后系統(tǒng)的擴(kuò)展以及優(yōu)化,而webSocket是html5一種新的協(xié)議,實(shí)現(xiàn)了瀏覽器與服務(wù)器之間的全雙工通信,能很好的節(jié)省服務(wù)器資源與帶寬,并在服務(wù)器端與瀏覽器端實(shí)現(xiàn)實(shí)時(shí)通行,他建立在TCP之上,同http一樣,通過tcp來傳輸數(shù)據(jù)。并且它有以下特點(diǎn):(1)只需要一次HTTP握手,所以說整個(gè)通訊過程是建立在一次連接/狀態(tài)中,服務(wù)器端會(huì)知道連接的信息,知道客戶端關(guān)閉請(qǐng)求,同時(shí)由服務(wù)器主動(dòng)推送,當(dāng)有信息需要發(fā)送時(shí),直接發(fā)送?;赟pringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第27頁。(2)客戶端的連接通過session對(duì)象存儲(chǔ),能夠?qū)崿F(xiàn)實(shí)時(shí)推送,與Ajax淪陷和longpoll相比有明顯的優(yōu)勢(shì)。基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第27頁。但是使用websocket來實(shí)現(xiàn)消息通知卻有一個(gè)缺點(diǎn):當(dāng)目標(biāo)用戶不在線時(shí),會(huì)發(fā)送消息失敗,造成用戶上線后收不到消息通知。所以我在websocket的基礎(chǔ)上進(jìn)行了改進(jìn),在通過websocket發(fā)送消息的同時(shí),將這條通知數(shù)據(jù)保存到數(shù)據(jù)庫(kù),當(dāng)用戶上線加入websocket后,會(huì)立即將數(shù)據(jù)庫(kù)的消息查詢出來然后加入到websocket的onOpen()方法中,這樣的話當(dāng)成功加入websocket后會(huì)自動(dòng)調(diào)用到onOpen()方法將消息通過websocket發(fā)送給用戶,這樣一來用戶在一上線時(shí)就能收到消息通知了,產(chǎn)生消息的代碼如下圖4-2.3.2所示:圖4-2.3.2消息通知部分代碼當(dāng)用戶登錄成功后,或者說連接上服務(wù)器后,用戶會(huì)馬上進(jìn)行websocket的連接。而通過在websocket連接成功后會(huì)執(zhí)行的onOpen()方法里加入查詢數(shù)據(jù)庫(kù)的代碼,這樣就能保證用戶一旦登錄系統(tǒng),服務(wù)器就會(huì)先去數(shù)據(jù)庫(kù)中查詢關(guān)于這個(gè)用戶用戶的消息通知,并通過websocket發(fā)送給用戶。而由于websocket一次只能發(fā)送一條消息,但是本系統(tǒng)的消息通知有4種,那么可以直接將這四種信息以字符串的形式拼接起來,同時(shí)每種消息之間以一個(gè)特殊符號(hào)間隔開,這樣直接拼接成一個(gè)字符串傳給前端,由前端頁面對(duì)這個(gè)字符串按照特殊符號(hào)進(jìn)行分解解析,這樣就能將這個(gè)字符串分解成4種不同的信息了,就能夠把這四種不同基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第28頁。的消息通知放在相對(duì)應(yīng)的頁面區(qū)域進(jìn)行顯示了。連接websocket成功后會(huì)執(zhí)行的代碼如下圖4-2.3.3所示:基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第28頁。圖4-2.3.3連接成功時(shí)執(zhí)行的代碼用戶之間私信流程及其實(shí)現(xiàn):用戶之間的進(jìn)行私信時(shí)所執(zhí)行的流程為:用戶通過點(diǎn)擊其他用戶的頭像進(jìn)入到他人的個(gè)人首頁,通過點(diǎn)擊私聊按鈕建立起會(huì)話連接,一旦建立起會(huì)話連接,那么雙方就會(huì)強(qiáng)行關(guān)聯(lián)起來,雙方都把對(duì)方加入到自己的聊天對(duì)象列表中。其中一方發(fā)送消息時(shí),如果對(duì)方在線,那么websocket能直接發(fā)送聊天消息和通知消息給對(duì)方,同時(shí)將消息記錄保持到數(shù)據(jù)庫(kù)中。而如果對(duì)方不在線,那么websocket發(fā)送聊天消息和通知消息失敗,但是會(huì)把數(shù)據(jù)存到數(shù)據(jù)庫(kù)中。對(duì)方上線后會(huì)立即加入到websocket中,那么websocket連接成功時(shí)會(huì)發(fā)送一條消息給用戶,那么此時(shí)可以將保存到數(shù)據(jù)庫(kù)中的消息發(fā)送給用戶,使用戶能夠一上線就能收到私信消息提醒,同時(shí)如果用戶點(diǎn)擊消息提示,能夠直接進(jìn)入聊天頁面,并查詢數(shù)據(jù)庫(kù)獲得之前別人給我發(fā)送的消息內(nèi)容。通過將消息保存到數(shù)據(jù)庫(kù),能使websocket發(fā)送失敗的消息保存起來,避免消息丟失,這樣就能解決對(duì)方不在線的情況下,消息發(fā)送出去而對(duì)方接收失敗的問題。如果不將消息存儲(chǔ)到數(shù)據(jù)庫(kù)的話,一旦用戶不在線,消息會(huì)發(fā)送失敗,這樣就非常影響用戶的使用體驗(yàn)。用戶只想發(fā)送一次消息,對(duì)方就一定能夠收到,不必要等到對(duì)方在線后才能發(fā)送信息。這樣的話,對(duì)于線上、線下都能夠保證消息的完整性了,不用再擔(dān)心因?yàn)椴辉诰€而造成發(fā)送不了消息或發(fā)送的消息丟失的問題?;赟pringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第29頁。而正是因?yàn)閣ebsocket能夠在線發(fā)送信息,所以很多在線聊天網(wǎng)頁都會(huì)使用此技術(shù)來實(shí)現(xiàn)在線聊天。在本系統(tǒng)中也正是因?yàn)槿绱硕肓诉@種優(yōu)秀的技術(shù)來實(shí)現(xiàn)私聊功能?;赟pringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第29頁。另外用戶與用戶一旦建立起會(huì)話連接,那么雙方之間的所有聊天內(nèi)容都會(huì)在這個(gè)會(huì)話中進(jìn)行記錄。而聊天對(duì)象之間之所以為強(qiáng)關(guān)聯(lián)是因?yàn)椋耗闩c對(duì)方建立起連接時(shí),對(duì)方也已和你建立起連接,所以一旦建立起會(huì)話連接,數(shù)據(jù)庫(kù)中就會(huì)保存兩條聊天對(duì)象記錄。建立會(huì)話連接的核心代碼如圖4-2.3.5所示:圖4-2.3.5建立會(huì)話連接的核心代碼當(dāng)用戶點(diǎn)擊發(fā)送按鈕發(fā)送消息時(shí),數(shù)據(jù)會(huì)傳到后臺(tái),后臺(tái)的處理邏輯為:將這條消息保存進(jìn)數(shù)據(jù)庫(kù),同時(shí)將這條消息通過websocket發(fā)送給接收者,同時(shí)也將通知提醒的消息也發(fā)送給對(duì)方。發(fā)送消息的部分核心代碼如圖4-2.3.6所示:圖4-2.3.6發(fā)送消息的核心代碼基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第30頁。基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第30頁。私信模塊的存在問題:私信內(nèi)容消息和通知消息都是通過websocket的方法來發(fā)送給用戶的,但是兩個(gè)消息的內(nèi)容不同,而websocket一次只能發(fā)送一條消息,如何解決一次發(fā)送兩條內(nèi)容不同的消息呢?通過仔細(xì)的思考和研究,想出了解決辦法:既然websocket一次只能發(fā)送一條消息,那么使用兩個(gè)不同的websocket就能完美解決,一個(gè)websocket負(fù)責(zé)發(fā)送聊天內(nèi)容,另一個(gè)websocket發(fā)送消息通知。通過這種方法,讓著兩個(gè)服務(wù)各司其職,不同的信息就用對(duì)應(yīng)的服務(wù)來發(fā)送,不必再擔(dān)心消息發(fā)生發(fā)錯(cuò),或者消息混亂等情況的發(fā)生了。具體代碼如圖4-2.3.8至4-2.3.9所示:圖4-2.3.8負(fù)責(zé)消息通知的websocket部分代碼通過在注解@ServerEndpoint上填寫不同的映射路徑,那么前端在發(fā)送websocket的信息時(shí)就會(huì)根據(jù)不同的路徑來選擇不同的websocket服務(wù)器了。圖4-2.3.9負(fù)責(zé)聊天消息的websocke的部分代碼基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第31頁。4.2.4“熱門博客”功能的實(shí)現(xiàn)基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第31頁。熱門博客生成的步驟為:當(dāng)用戶對(duì)某條博客進(jìn)行操作時(shí),會(huì)提升這條博客的熱度,同時(shí)將其存儲(chǔ)在Redis數(shù)據(jù)庫(kù)中。因Redis的Zset數(shù)據(jù)結(jié)構(gòu)極其適合于實(shí)現(xiàn)排行榜功能,Zset自帶一個(gè)分?jǐn)?shù)計(jì)數(shù)器scores,所以使用Redis存儲(chǔ)熱門博客。設(shè)計(jì)實(shí)現(xiàn)思路為:當(dāng)用戶操作某條微博(點(diǎn)贊、評(píng)論、轉(zhuǎn)發(fā))時(shí),會(huì)在后臺(tái)將這條微博存到Redis的Zset集合中,同時(shí)設(shè)置它的scores加1。而熱門微博的排行榜就是從Redis數(shù)據(jù)庫(kù)中取出分?jǐn)?shù)最高的前10條微博進(jìn)行顯示的,并由于Redis數(shù)據(jù)庫(kù)的Zset集合是按照分?jǐn)?shù)的高低進(jìn)行排序存放的,因此在取出數(shù)據(jù)時(shí),這些數(shù)據(jù)自然就會(huì)按照分?jǐn)?shù)(熱度)的高低進(jìn)行排序,不需再寫邏輯代碼對(duì)他們進(jìn)行排序了。熱門博客排行榜的核心代碼如圖4-2.4.2所示:圖4-2.4.2核心代碼保存后,可以使用Redis的可視化工具RedisDesktopManager連接上Redis服務(wù)器,并查看數(shù)據(jù)是否存入Redis中。這里我是將微博客記錄的唯一id存進(jìn)Redis中,而查詢排行榜時(shí)就能通過主鍵來獲取整條微博客記錄信息了。Redis數(shù)據(jù)記錄如圖4-2.4.3所示:圖4-2.4.3Redis保存的數(shù)據(jù)圖基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第32頁。4.2.5“搜索”功能的實(shí)現(xiàn)基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第32頁。搜索功能的實(shí)現(xiàn)思路是通過輸入關(guān)鍵字,后臺(tái)通過數(shù)據(jù)庫(kù)的模糊查詢將所有內(nèi)容中帶有這個(gè)關(guān)鍵字的所有微博或用戶查詢出來。因這個(gè)模塊技術(shù)難度不高,所以設(shè)計(jì)和實(shí)現(xiàn)主要是注重前端的交互性就行。當(dāng)時(shí)為了讓用戶能有更好的使用體驗(yàn),避免查詢一次后搜索框的內(nèi)容清空,出現(xiàn)頻繁輸入搜索內(nèi)容的情況,這里將搜索內(nèi)容也直接傳到下一次跳轉(zhuǎn)頁面,部分核心代碼如圖4-2.5.1所示:圖4-2.5.1搜索核心代碼本系統(tǒng)的主要的功能就介紹到這里,還有很多小功能主要體現(xiàn)在前端的頁面上,為了讓用戶的體驗(yàn)性更好,頁面的功能也是極其重要的,所以在前端頁面上也是花費(fèi)大量的時(shí)間進(jìn)行改造,使用了很多JavaScript插件,使前端有個(gè)美觀操作界面。4.3數(shù)據(jù)庫(kù)的實(shí)現(xiàn)根據(jù)上面的功能需求并結(jié)合每個(gè)實(shí)體之間的關(guān)系,本系統(tǒng)一共創(chuàng)建12張數(shù)據(jù)庫(kù)表來支持功能的實(shí)現(xiàn),滿足功能上的數(shù)據(jù)需求。每張表的實(shí)現(xiàn)都會(huì)對(duì)應(yīng)一個(gè)功能或者多個(gè)功能,而一個(gè)功能可能也會(huì)操作多張表的數(shù)據(jù)來實(shí)現(xiàn)其功能要求。以下表3-4.1至3-4.12分別介紹了每張表的字段、數(shù)據(jù)類型以及每個(gè)字段的使用含義。 聊天對(duì)象表(chatlist)主要是用于存儲(chǔ)用戶的聊天對(duì)象的,每個(gè)用戶都會(huì)有很多聊天對(duì)象,通過將這些對(duì)象放在一個(gè)專門的表中存放,便于后臺(tái)代碼基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第33頁。在執(zhí)行相應(yīng)功能時(shí),能夠快速查找到這些對(duì)象的信息,如表3-4.1。基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第33頁。表3-4.1chatlist聊天對(duì)象信息表鍵名數(shù)據(jù)類型長(zhǎng)度是否主鍵實(shí)體類字段名描述idint11是Id唯一字段meint255否me本人(我)的idyouint255否you聊天對(duì)象的idsessionIDvarchar255否sessionID會(huì)話id(這次談話的id)lastTimeTalkdatetime0否lastTimeTalk最后一次聊天的時(shí)間sxMessageint255否sxMessage未查看的新信息數(shù)聊天記錄表(chatrecord)主要用于存儲(chǔ)用戶的聊天消息的,在用戶再次聊天時(shí),能夠讓用戶查看到上次的聊天記錄,避免的聊天信息的丟失,在進(jìn)入聊天時(shí),后臺(tái)會(huì)根據(jù)雙方的用戶id,到這張記錄表去查找消息記錄返回給前端,如表3-4.2。表3-4.2chatrecord聊天記錄信息表鍵名數(shù)據(jù)類型長(zhǎng)度是否主鍵實(shí)體類字段名描述idint11是Id唯一字段基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第34頁。sessionId基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第34頁。varchar255否sessionId會(huì)話id(這次談話的id)sendManint255否sendMan發(fā)送消息者idreceiveManint255否receiveMan接收消息者idcontantvarchar255否contant消息內(nèi)容sendTimedatetime0否sendTime發(fā)送消息的時(shí)間收藏記錄表(collect)用于存放用戶收藏的博客記錄,用戶在收藏某條博客后,點(diǎn)擊個(gè)人收藏頁面時(shí),后代會(huì)聰哥這張表中查找出收藏的博客并返回給頁面顯示,如表3-4.3。表3-4.3collect收藏記錄信息表鍵名數(shù)據(jù)類型長(zhǎng)度是否主鍵實(shí)體類字段名描述collectIDvarchar255是collectID唯一字段userIDint255否userID收藏者idwbIDvarchar255否wbID被收藏的微博id關(guān)注記錄表(gz)用于記錄用戶與用戶之間的關(guān)注情況,如果用戶關(guān)注了對(duì)方,那么后臺(tái)會(huì)記錄這條數(shù)據(jù),在用戶再次查看某位用戶時(shí),將知道是否關(guān)注對(duì)方,如表3-4.4。基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第35頁。表3-4.4gz關(guān)注記錄信息表基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第35頁。鍵名數(shù)據(jù)類型長(zhǎng)度是否主鍵實(shí)體類字段名描述idint11是Id唯一字段gzUsernamevarchar255否gzUsername關(guān)注人的usernamegzedUsernamevarchar255否gzedUsername被關(guān)注人的username回復(fù)評(píng)論表(hfpllist)用于記錄用戶回復(fù)評(píng)論的內(nèi)容,當(dāng)用戶再次查看某條評(píng)論的回復(fù)時(shí),后臺(tái)將查詢這張表的數(shù)據(jù)并返回給頁面,如表3-4.5。表3-4.5hfpllist回復(fù)評(píng)論記錄信息表鍵名數(shù)據(jù)類型長(zhǎng)度是否主鍵實(shí)體類字段名描述idvarchar11是Id唯一字段plIDvarchar255否plID會(huì)話id(這次談話的id)plzIDint11否plzID發(fā)送消息者idusernamevarchar255否username接收消息者idhfContentvarchar255否hfContent回復(fù)內(nèi)容hfpltimedatetime0否hfpltime發(fā)送消息的時(shí)間基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第36頁?;赟pringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第36頁。點(diǎn)贊消息通知表(likemessage)用于保存用戶點(diǎn)贊后產(chǎn)生的消息通知記錄,如表3-4.6。表3-4.6likemessage點(diǎn)贊消息通知記錄信息表鍵名數(shù)據(jù)類型長(zhǎng)度是否主鍵實(shí)體類字段名描述idint80是Id唯一字段likeUserNamevarchar255否likeUserName點(diǎn)贊者用戶名likedUsernamevarchar255否likedUsername被點(diǎn)贊者的用戶名dzWeibovarchar255否dzWeibo被點(diǎn)贊的那條微博iddzTimedatetime0否dzTime點(diǎn)贊時(shí)間點(diǎn)贊記錄表(love)用于記錄用戶的點(diǎn)贊情況,如果對(duì)某條博客點(diǎn)贊后,會(huì)將記錄保存到這張表,下次查看時(shí)能知道是否會(huì)這條博客點(diǎn)過贊,如表3-4.7。表3-4.7love點(diǎn)贊記錄信息表鍵名數(shù)據(jù)類型長(zhǎng)度是否主鍵實(shí)體類字段名描述dzIDvarchar255是dzID唯一字段userIDvarchar255否userID點(diǎn)贊者idwbIDvarchar255否wbID點(diǎn)贊的那條微博id基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第37頁。評(píng)論記錄表(pllist)用于記錄用戶的評(píng)論消息,如果對(duì)某條博客評(píng)論后,會(huì)將記錄保存到這張表,下次查看評(píng)論時(shí)能后臺(tái)會(huì)查看這張表并返回評(píng)論記錄給頁面,如表3-4.8?;赟pringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第37頁。表3-4.8pllist評(píng)論信息記錄信息表鍵名數(shù)據(jù)類型長(zhǎng)度是否主鍵實(shí)體類字段名描述idvarchar80是Id唯一字段weiboidvarchar255否weiboid被評(píng)論的微博idusernamevarchar11否username評(píng)論者的用戶名useridint255否userid評(píng)論者的idplContentvarchar255否plContent評(píng)論的內(nèi)容plTimedatetime0否plTime評(píng)論的時(shí)間評(píng)論消息通知表(plmessage)用于記錄用戶的收到的評(píng)論通知,當(dāng)有人評(píng)論了用戶的某條博客時(shí),將這記錄存放在這張表,如表3-4.9。表3-4.9plmessage評(píng)論消息通知記錄信息表鍵名數(shù)據(jù)類型長(zhǎng)度是否主鍵實(shí)體類字段名描述idint11是Id唯一字段plUsernamevarchar255否plUsername評(píng)論者用戶名基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第38頁。pledUsername基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第38頁。varchar255否pledUsername被評(píng)論者的用戶名plWeibovarchar255否plWeibo被評(píng)論的那條微博idplTimedatetime0否plTime評(píng)論時(shí)間。plContentvarchar255否plContent評(píng)論內(nèi)容用戶信息表(user)用于存放用戶的個(gè)人信息,包括頭像、賬號(hào)密碼等,如表3-4.10。表3-4.10user用戶信息記錄信息表鍵名數(shù)據(jù)類型長(zhǎng)度是否主鍵實(shí)體類字段名描述idint11是Id唯一字段usernamevarchar255否username用戶名passwordvarchar255否password密碼saltvarchar255否salt加鹽headImgNamevarchar255否headImgName頭像圖片名personal_labelvarchar255否personalLabel個(gè)性簽名webNamevarchar255否webName網(wǎng)名基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第39頁。name基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第39頁。varchar255否name真實(shí)名字cityvarchar255否city城市g(shù)enderInt255否gender姓名(0:男,1:女)birthdaydate0否birthday生日likeCountint255否likeCount點(diǎn)贊消息提醒數(shù)量plCountint255否plCount評(píng)論消息提醒數(shù)量zfCountint255否zfCount轉(zhuǎn)發(fā)消息提醒數(shù)量chatMessageint255否 chatMessage私信消息提醒數(shù)量博客信息表(weibo)用于記錄用戶發(fā)送過的博客記錄,當(dāng)用戶發(fā)送一條博客后會(huì)將這條博客保存到此表,在頁面顯示時(shí)就會(huì)查詢這張表獲取博客記錄,如表3-4.11。表3-4.11weibo博客信息記錄信息表鍵名數(shù)據(jù)類型長(zhǎng)度是否主鍵實(shí)體類字段名描述weibo_idvarchar255是weiboId唯一字段user_idint11否userId該條微博的作者id。contentvarchar255否content微博文字內(nèi)容postTimedatetime0否postTime發(fā)送時(shí)間基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第40頁。pic1基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第40頁。varchar255否pic1發(fā)送的圖片名稱pic2varchar255否pic2發(fā)送的圖片名稱pic3varchar255否pic3發(fā)送的圖片名稱pic4varchar255否pic4發(fā)送的圖片名稱Pic5varchar255否Pic5發(fā)送的圖片名稱Pic6varchar255否Pic6發(fā)送的圖片名稱videovarchar255否video上傳的視頻文件名musicvarchar255否music上傳的音樂文件名zanint11否zan該條微博的點(diǎn)贊數(shù)zfwbidvarchar255否zfwbid轉(zhuǎn)發(fā)的微博id轉(zhuǎn)發(fā)消息通知表(zfmessage)用于記錄用戶的收到的轉(zhuǎn)發(fā)通知,當(dāng)有人轉(zhuǎn)發(fā)了用戶的某條博客時(shí),將這記錄存放在這張表,如表3-4.12。表3-4.12zfmessage轉(zhuǎn)發(fā)消息通知記錄信息表鍵名數(shù)據(jù)類型長(zhǎng)度是否主鍵實(shí)體類字段名描述idint11是Id唯一字段zfUsernamevarchar255否zfUsername轉(zhuǎn)發(fā)者用戶名基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第41頁。zfedUsername基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第41頁。varchar255否zfedUsername被轉(zhuǎn)發(fā)者的用戶名zfWeibovarchar255否zfWeibo轉(zhuǎn)發(fā)的那條微博idzfTimedatetime0否zfTime轉(zhuǎn)發(fā)時(shí)間4.4實(shí)現(xiàn)效果以上功能的實(shí)現(xiàn)效果全部在前端的頁面上得到了體驗(yàn),每個(gè)功能都會(huì)與某個(gè)頁面,某個(gè)按鈕或者某塊區(qū)域直接關(guān)聯(lián)起來。部分功能效果如圖4-3.1至4-3.5所示:注冊(cè)時(shí),如果輸入不規(guī)范,會(huì)以紅色字段提示用戶輸入錯(cuò)誤,如果輸入規(guī)范則不會(huì)提示。圖4-3.1注冊(cè)功能效果圖用戶點(diǎn)擊表情按鈕,可以選著一個(gè)表情發(fā)送出去,表情可以為動(dòng)態(tài)圖,也可以為靜態(tài)圖,選著表情后會(huì)以一個(gè)特殊的文字顯示在輸入框中,發(fā)送后經(jīng)前端表情插件解析后重新識(shí)別為表情圖片?;赟pringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第42頁?;赟pringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第42頁。圖4-3.2表情功能效果圖點(diǎn)贊后點(diǎn)贊按鈕里面數(shù)字加1,并且心形變?yōu)閷?shí)體,當(dāng)取消點(diǎn)贊時(shí)按鈕數(shù)字則減1,而心形會(huì)變?yōu)榭招?。圖4-3.3點(diǎn)贊功能效果圖用戶點(diǎn)擊評(píng)論按鈕后會(huì)彈出評(píng)論框,在評(píng)論框中輸入評(píng)論內(nèi)容,點(diǎn)擊綠色評(píng)論按鈕發(fā)送評(píng)論信息,評(píng)論消息會(huì)立即顯示在評(píng)論框下方。圖4-3.4評(píng)論功能效果圖基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第43頁。當(dāng)用戶收到消息通知時(shí),會(huì)在頁面的左上方通知區(qū)域出現(xiàn)紅色圓圈,圓圈內(nèi)的數(shù)字表示總消息數(shù)量,鼠標(biāo)放在通知區(qū)域會(huì)顯示詳細(xì)的通知消息,如贊、評(píng)論等,哪個(gè)區(qū)域有紅色圓圈,表示對(duì)應(yīng)哪個(gè)模塊有消息。基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第43頁。圖4-3.5消息通知功能效果圖用戶私聊頁面,在頁面的左側(cè)為用戶的聊天對(duì)象列表,右側(cè)為聊天框。圖4-3.6私信功能效果圖4.4本章總結(jié)本章主要詳細(xì)介紹各個(gè)功能的實(shí)現(xiàn)過程和實(shí)現(xiàn)思路,并且介紹了各功能的實(shí)現(xiàn)情況以及實(shí)現(xiàn)出來的效果。
基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第44頁?;赟pringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第44頁。第五章系統(tǒng)測(cè)試任何系統(tǒng)都要經(jīng)過反復(fù)的測(cè)試,多次測(cè)試后才算開發(fā)成功。本系統(tǒng)開發(fā)完成后對(duì)各個(gè)功能進(jìn)行了測(cè)試,并對(duì)測(cè)試出現(xiàn)的問題、bug等進(jìn)行改進(jìn),使系統(tǒng)更加強(qiáng)大牢固。5.1測(cè)試用例結(jié)果通過對(duì)本系統(tǒng)的各項(xiàng)功能進(jìn)行多次測(cè)試,得出了測(cè)試用例結(jié)果,下表為本系統(tǒng)的測(cè)試功能用例表,將會(huì)介紹各個(gè)功能的測(cè)試情況,如下所示:表5-1測(cè)試功能用例表需求功能名稱測(cè)試用例名稱執(zhí)行說明執(zhí)行情況是否通過登錄注冊(cè)登錄與注冊(cè)測(cè)試測(cè)試用戶是否可以使用正常注冊(cè)賬號(hào)和進(jìn)行登錄,輸入錯(cuò)誤時(shí)是否出現(xiàn)提示良好是發(fā)送表情功能表情功能測(cè)試測(cè)試用戶能否正常使用表情功能,點(diǎn)擊表情按鈕能否正常彈出表情框,發(fā)送表情后能否正常顯示良好是發(fā)送圖片,視頻、音樂發(fā)送多種不同形式的博客測(cè)試測(cè)試用戶能否正常發(fā)送圖片、視頻、音樂等格式的博客,能否正常查看圖片、視頻,能否聆聽到音樂良好是搜索博客和用戶搜索測(cè)試測(cè)試用戶能否通過輸入關(guān)鍵字搜索出博客、用戶,搜素出來的結(jié)果與搜索詞是否符合良好是個(gè)人中心個(gè)人中心模塊測(cè)試測(cè)試用戶點(diǎn)擊頭像圖標(biāo)能否進(jìn)入到個(gè)人主頁,能否在個(gè)人主頁查看自己發(fā)送過的博客,能否查看收藏的博客良好是熱門排行榜功能熱門排行榜測(cè)試測(cè)試多個(gè)用戶對(duì)同一條博客進(jìn)行點(diǎn)贊、評(píng)論等操作,能否讓此條博客進(jìn)入到熱門排行榜良好是基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第45頁。私聊基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第45頁。私聊功能測(cè)試測(cè)試用戶向另一個(gè)用戶進(jìn)行私聊時(shí),對(duì)方能否接收到消息,對(duì)方發(fā)送消息多來時(shí),自己是否也能收到良好是收藏功能收藏功能測(cè)試測(cè)試用戶點(diǎn)擊收藏按鈕后,能否在個(gè)人收藏中查看到本條收藏博客良好是轉(zhuǎn)發(fā)功能轉(zhuǎn)發(fā)功能測(cè)試測(cè)試用戶能否正常轉(zhuǎn)發(fā)某條博客,點(diǎn)擊轉(zhuǎn)發(fā)按鈕能否正常彈出轉(zhuǎn)發(fā)框,轉(zhuǎn)發(fā)后能否正常顯示轉(zhuǎn)發(fā)的內(nèi)容良好是回復(fù)功能回復(fù)功能測(cè)試測(cè)試用戶能否正常對(duì)某條評(píng)論進(jìn)行回復(fù),回復(fù)內(nèi)容能否正常顯示良好是評(píng)論功能評(píng)論功能測(cè)試測(cè)試用戶能否對(duì)某條博客進(jìn)行評(píng)論,評(píng)論的內(nèi)容能否正常顯示在博客下方良好是消息通知消息通知測(cè)試測(cè)試用戶對(duì)某條博客點(diǎn)贊、評(píng)論時(shí),該博客作者能否收到消息通知,別人私聊用戶時(shí),用戶能否收到私聊的通知提醒。良好是基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第46頁。5.2測(cè)試效果基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第46頁。對(duì)于功能測(cè)試方面,在微博功能測(cè)試中,測(cè)試內(nèi)容為發(fā)送50條微博客,發(fā)送的內(nèi)容包括文字、圖片、音樂、視頻等,查看發(fā)送的內(nèi)容是否可以正確、按時(shí)間順序進(jìn)行有序的排序,并且對(duì)于發(fā)送的圖片、視頻、音樂、表情等能否正常查看。測(cè)試效果如圖5-1所示。圖5-2微博客功能測(cè)試效果圖而私信功能和消息通知功能的測(cè)試,通過在兩個(gè)不同的瀏覽器或者在兩臺(tái)電腦上登錄兩個(gè)不同的賬號(hào),私信對(duì)方進(jìn)行聊天,查看能否接收到通知消息,點(diǎn)擊消息提示時(shí)能夠查看到消息記錄,測(cè)試效果如圖5-2所示:圖5-3私信與消息通知功能測(cè)試效果圖基于SpringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第47頁。對(duì)于搜索功能的測(cè)試,分別進(jìn)行50次搜索,對(duì)搜索得到的內(nèi)容,查看是否含有搜索的關(guān)鍵字,同時(shí)要查看結(jié)果展示是否正確,頁面排版是否美觀等,測(cè)試效果如圖5-3所示?;赟pringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第47頁。圖5-4搜索功能測(cè)試效果圖熱門微博客排行功能的測(cè)試,分別使用多個(gè)用戶對(duì)微博客進(jìn)行點(diǎn)贊、評(píng)論、轉(zhuǎn)發(fā)等,然后查看對(duì)于多人操作的微博客能否出現(xiàn)在排行榜中,測(cè)試效果如圖5-4所示。圖5-5搜索功能測(cè)試結(jié)果圖經(jīng)過對(duì)每個(gè)功能的多次測(cè)試,找出了這些功能出現(xiàn)的問題和bug并修改,經(jīng)過修改后,目前所有功能均能正常運(yùn)行使用,而頁面的跳轉(zhuǎn)、頁面上的樣式變化等業(yè)務(wù)異常,數(shù)據(jù)庫(kù)的讀寫操作也正常,基本能夠滿足用戶的目標(biāo)所需。不過由于本次測(cè)試其性能次數(shù)有限,可能存在局限性?;赟pringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第48頁?;赟pringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第48頁。第六章總結(jié)通過分析研究目前流行的社交博客平臺(tái),參考這些系統(tǒng)的優(yōu)秀、前沿的技術(shù)和功能,發(fā)揚(yáng)他們的優(yōu)點(diǎn)、改正他們的缺點(diǎn),并結(jié)合自身的實(shí)際情況開發(fā)了一個(gè)微博客系統(tǒng)。本微博客系統(tǒng)能夠讓用戶在上下班路上、周末休息等有限時(shí)間內(nèi)充分接收外界網(wǎng)絡(luò)的信息,不僅可以消遣時(shí)間,也能了解網(wǎng)絡(luò)咨詢等。本系統(tǒng)在設(shè)計(jì)上,把信息內(nèi)容設(shè)置得“精致玲瓏”,文字輸入限制在140個(gè)字以內(nèi),圖片上傳限制在6張以內(nèi),這樣的設(shè)計(jì)會(huì)讓在顯示的時(shí)候一條博客顯得精短,不會(huì)一整條就占用一個(gè)頁面的顯示。同時(shí)在用戶之間的交流互動(dòng),也不僅僅只是在評(píng)論中進(jìn)行,更應(yīng)該可以像聊天工具一樣自由地交流,所以私聊功能由此而出現(xiàn)。而為了讓用戶能夠第一時(shí)間了解當(dāng)前的熱點(diǎn)新聞,我們?yōu)榇硕龀鰺狳c(diǎn)排行榜功能,這些功能的主要目的都是為了讓用戶能夠在最短的時(shí)間內(nèi)清楚地知道外界的信息,查看自己想要的信息。本系統(tǒng)以SpringBoot作為核心框架,通過SpringBoot與其他框架的整合,構(gòu)建起了整個(gè)系統(tǒng)的架構(gòu)。首先引入Mybatis框架,能夠讓系統(tǒng)可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作和查看;另外引入ApacheShiro安全框架,能夠讓系統(tǒng)的安全性得到很大的提高;引入WebSocket技術(shù),能夠使用戶之間的通訊更加快速準(zhǔn)確,保證信息的正確傳遞,另外還能減少系統(tǒng)資源,提高系統(tǒng)性能。而為了實(shí)現(xiàn)排行榜功能,為此引入Redis數(shù)據(jù)庫(kù),由于Redis的基于鍵值對(duì)形式的非關(guān)系型數(shù)據(jù)庫(kù),所以在存儲(chǔ)數(shù)據(jù)時(shí)是極其快的,并且其擁有獨(dú)特的存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)Zset,非常適合用來存儲(chǔ)那些排行榜上的數(shù)據(jù)。本系統(tǒng)在頁面上進(jìn)行了的大量的優(yōu)化和調(diào)整,使頁面能夠以較為美觀地呈現(xiàn)給用戶,讓用戶能有良好的使用體驗(yàn),并且每個(gè)功能都會(huì)有一部分的頁面與之對(duì)應(yīng),用戶通過頁面來直接使用功能,使功能的特性更加直觀地呈現(xiàn)出來。在開發(fā)完成后,測(cè)試環(huán)節(jié)是最重要的一步,可以說一個(gè)系統(tǒng)的好壞與它有沒有經(jīng)過測(cè)試有必要聯(lián)系。所以本系統(tǒng)經(jīng)過大量反復(fù)的測(cè)試,對(duì)功能邏輯、對(duì)頁面等進(jìn)行測(cè)試,將發(fā)現(xiàn)的問題、bug、錯(cuò)誤等,全部加以修改優(yōu)化,為了能讓用戶更加順暢、更好地使用本博客系統(tǒng)所必須做的一步。總的來說,本微博客系統(tǒng)實(shí)現(xiàn)了目前社交平臺(tái)的大部分功能,能夠滿足用戶的日常使用需求,同時(shí)對(duì)于未實(shí)現(xiàn)的功能或者難以實(shí)現(xiàn)的功能,會(huì)在未來出現(xiàn)更好的技術(shù)或者擁有更多的資源支持時(shí),會(huì)考慮將這些功能都實(shí)現(xiàn)起來,使系統(tǒng)更加的完善和強(qiáng)大?;赟pringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第49頁?;赟pringBoot的社交網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文全文共51頁,當(dāng)前為第49頁。參考文獻(xiàn)[1]趙一凡、卞良、叢昕.《基于MD5的加鹽消息摘要Java實(shí)現(xiàn)》[J]2018年3月15日[2]CayS.Horstmann.《Java核心技術(shù)卷I:基礎(chǔ)知識(shí)》[M].\o"機(jī)械工業(yè)出版社"機(jī)械工業(yè)出版社2016年9月1日[3]CraigWalls.《SpringBoot實(shí)戰(zhàn)》[M].\o"人民郵電出版社"人民郵電出版社2016年9月1日[4]瘋狂軟件.《SpringBoot2企業(yè)應(yīng)用實(shí)戰(zhàn)》[M].\o"電子工業(yè)出版社"電子工業(yè)出版社2018年5月1日[5]黃健宏.《Redis設(shè)計(jì)與實(shí)現(xiàn)》[M].
\o"機(jī)械工業(yè)出版社"機(jī)械工業(yè)出版社2014年6月1日[6]明日科技.《MySQL從入門到精通》[M].\o"清華大學(xué)出版社"清華大學(xué)出版社2017年8月1日[7]劉增輝.《MyBatis從入門到精通》[M].HYPERLINK"/
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)校德育活動(dòng)主題方案與效果評(píng)估
- 2026年上海市金山公證處招聘?jìng)淇碱}庫(kù)及一套參考答案詳解
- 2026年中糧米業(yè)(巢湖)有限公司招聘?jìng)淇碱}庫(kù)及答案詳解一套
- 2026年中山市西區(qū)翠景東方小學(xué)教師招聘?jìng)淇碱}庫(kù)參考答案詳解
- 2026年北侖區(qū)港航管理中心公開招聘編外人員備考題庫(kù)附答案詳解
- 2026年中建安裝集團(tuán)有限公司華北分公司招聘?jìng)淇碱}庫(kù)及一套參考答案詳解
- 玻璃鋼材料施工防水技術(shù)方案
- 2026年廣西廣電網(wǎng)絡(luò)科技發(fā)展有限公司都安分公司招聘?jìng)淇碱}庫(kù)附答案詳解
- 2026年佛山市獅山鎮(zhèn)松崗中心小學(xué)招聘教師備考題庫(kù)及完整答案詳解一套
- 2026年北京青云店中學(xué)公開招聘教師備考題庫(kù)有答案詳解
- 抑郁病診斷證明書
- 歷史時(shí)空觀念的教學(xué)與評(píng)價(jià)
- 維克多高中英語3500詞匯
- 病理生理學(xué)復(fù)習(xí)重點(diǎn)縮印
- 第五屆全國(guó)輔導(dǎo)員職業(yè)能力大賽案例分析與談心談話試題(附答案)
- 《大數(shù)的認(rèn)識(shí)》復(fù)習(xí)教學(xué)設(shè)計(jì)
- GB/T 3513-2018硫化橡膠與單根鋼絲粘合力的測(cè)定抽出法
- GB/T 34590.3-2017道路車輛功能安全第3部分:概念階段
- 部編版新人教版一年級(jí)上冊(cè)生字表拼音田字格
- 統(tǒng)編教材部編人教版小學(xué)語文習(xí)作單元教材解讀培訓(xùn)課件:統(tǒng)編小語四-六年級(jí)習(xí)作梳理解讀及教學(xué)建議
- 國(guó)家開放大學(xué)電大《公共部門人力資源管理》期末考試題庫(kù)及答案
評(píng)論
0/150
提交評(píng)論