《基于Spring Boot的筆記平臺設(shè)計》10000字_第1頁
《基于Spring Boot的筆記平臺設(shè)計》10000字_第2頁
《基于Spring Boot的筆記平臺設(shè)計》10000字_第3頁
《基于Spring Boot的筆記平臺設(shè)計》10000字_第4頁
《基于Spring Boot的筆記平臺設(shè)計》10000字_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

基于SpringBoot的筆記平臺設(shè)計摘要基于springboot的筆記平臺設(shè)計和實現(xiàn)旨在通過web相關(guān)技術(shù)來實現(xiàn)云化記筆記、寫日記、查看待辦。實現(xiàn)手機和電腦等終端互聯(lián),擺脫單終端丟失導(dǎo)致內(nèi)容丟失的痛點,提高筆記、日記等信息的留存率。另通過圖表的形式統(tǒng)計筆記日記等情況,給用戶提供直觀的自身數(shù)據(jù)參考價值。平臺設(shè)計采納Javaweb為干流的開發(fā)框架,將springboot開發(fā)后端運用,vuejs前端框架開發(fā)前端應(yīng)用,運用主流ui框架AntDesign,提高頁面的開發(fā)效率,與此同時并有效的提高了界面的友好度;其中增加了rabbitMQ消息隊列和redis緩存數(shù)據(jù)庫相關(guān)技術(shù)這樣做就是來保證數(shù)據(jù)安全的統(tǒng)一,運用了redis緩存高速讀取的特點,提高響應(yīng)的時間,增強用戶體驗感。在設(shè)計中,平臺實現(xiàn)了記筆記、寫日記、個人待辦、天氣概覽、個人設(shè)置、個性簽名等功能,另外在筆記功能中,提供了標簽功能,可為筆記貼上筆記標簽,系統(tǒng)可自動在最熱的100個標簽隨機推薦三個標簽以供選擇。筆記平臺的設(shè)計實現(xiàn)除為用戶提供筆記功能外,還在筆記、日記和待辦等數(shù)據(jù)內(nèi)容的不斷增加,為后續(xù)創(chuàng)建數(shù)據(jù)倉庫和大數(shù)據(jù)的分析提供了有力的支持,在大數(shù)據(jù)時代,可以在用戶的使用數(shù)據(jù)中分析出對用戶更加有價值的參考數(shù)據(jù),例如:用戶在記錄學(xué)習(xí)筆記時,還可以為用戶推薦更有力的學(xué)習(xí)方向。關(guān)鍵詞:前后端分離;Java;vue.js目錄1.引言1.1課題研究的背景和意義 11.2課題設(shè)計主要內(nèi)容 12.相關(guān)技術(shù)與開發(fā)2.1相關(guān)開發(fā)技術(shù)簡介 22.2.1前端相關(guān)技術(shù)簡介 22.2.2后端相關(guān)技術(shù)簡介 32.2開發(fā)過程使用開發(fā)的工具簡介 43.系統(tǒng)可行性需求分析3.1系統(tǒng)可行性以及優(yōu)缺點 53.2需求分析 54.系統(tǒng)設(shè)計4.1MYSQL數(shù)據(jù)庫設(shè)計 64.2REDIS緩存的引用 114.3系統(tǒng)設(shè)計 114.3.1系統(tǒng)設(shè)計結(jié)構(gòu)圖 114.3.2系統(tǒng)詳細設(shè)計解析 115.系統(tǒng)實現(xiàn)5.1登錄攔截器實現(xiàn) 125.2攔截不安全的請求方式 145.3NGINX代理的實現(xiàn) 155.4獲取當前最熱標簽 165.5健康指數(shù) 175.6應(yīng)用部署到云服務(wù)器上 206.系統(tǒng)功能測試6.1賬戶登錄測試 216.2個人資料修改測試 226.3各項功能測試 237.結(jié)束語 29附錄一:參考文獻 30附錄二:參考程序 31引言1.1課題研究背景和意義在這個經(jīng)濟快速發(fā)展的年代網(wǎng)絡(luò)科學(xué)技術(shù)日益提高,在每日高強度的三點一線工作制度中,身體上壓力越來越大的同時心理與大腦的壓力也在逐步提高面對每天的工作的工作量而產(chǎn)生的壓力,在處理中總是顯得心有余而力不足。在課堂學(xué)習(xí)中幾乎都都需要將筆和紙隨時帶在身邊并將重點需要記錄的東西記錄下來甚至有的時候,筆記本和日記本總是容易被遺忘在不起眼的角落。在數(shù)據(jù)高速交互的信息時代,是否可以通過另一種形式來取代傳統(tǒng)紙質(zhì)的筆記本和日記本,這正是我此次課題研究的目的,相對于紙質(zhì)筆記本的缺點不僅浪費了過多的樹木還不環(huán)保而且容量還是有限的從而設(shè)計一款應(yīng)用型網(wǎng)站日記本就有實際意義,其具備以下優(yōu)點:安全性。若單純?yōu)榱吮4婧陀涗浀脑挘谶@個信息化時代已經(jīng)有很多app是可以做到的,就像朋友圈可以記錄生活,微博可以分享新鮮事。但是現(xiàn)在我個人認為保密和安全性才是最重要的。這個平臺首先操作不是很復(fù)雜,界面作風(fēng)簡約。寫東西的時候心情和靈感很重要,用手機和電腦來代替筆記本節(jié)省時間的同時也提高了工作效率。而且操作起來簡單上手,給予用戶直觀體驗,還設(shè)置了平臺密碼,既提供了方便又保證了安全性。永久保存。記載的內(nèi)容能夠永恒保留,不必擔(dān)心丟失,并且日記列表是時間軸樣式的,方便瀏覽和查閱。近幾年已步入信息時代,我們已經(jīng)逐漸把線下的活動轉(zhuǎn)到線上可是即便這樣,隨時隨地的不管是用手機還是用電腦都可以查找到我們之前所記錄的東西。分類。分為待辦,日記和學(xué)習(xí)筆記。各記所需,可以把不同的想記錄的事情做到分類其次也方便了每次記錄點不同。另外還設(shè)有天氣預(yù)報這一欄記錄當天心情如何的時候也可以同時查看天氣,還提供了標簽功能,可為筆記貼上筆記標簽,系統(tǒng)可自動在最熱的100個標簽隨機推薦三個標簽以供選擇。1.2課題設(shè)計主要內(nèi)容本次課題設(shè)計的主要內(nèi)容分為五個部分分別為控制臺,待辦事件,日記,學(xué)習(xí)中心,個人設(shè)置??刂婆_基本功能:控制臺即為工作臺,工作臺中有你的賬戶名稱個性職位及個性簽名,工作臺可以展示的內(nèi)容為登陸的天數(shù)筆記的數(shù)目和日記的數(shù)目分別采用柱形圖清晰地展現(xiàn)在眼前,在下方還有近幾天的天氣概況。待辦事件基本功能:增加待辦和刪除都可以展示在控制臺,但是待辦唯一的缺點就是需要手動開始和結(jié)束,并且增加一次都需要刷新一下頁面才可以展現(xiàn)出來。日記基本功能:每日記錄日記以后均可在控制臺看到柱狀圖的改變,日記中心也設(shè)有個性簽名,而且一開始看到的就是標題和主題點擊查看內(nèi)容就可以看到日記的主要內(nèi)容學(xué)習(xí)中心基本功能:學(xué)習(xí)中心可以記錄學(xué)習(xí)筆記,學(xué)習(xí)筆記設(shè)有標簽功能可為筆記貼上筆記標簽,系統(tǒng)可自動在最熱的100個標簽隨機推薦三個提供選擇。個人設(shè)置基本功能:用戶可以通過手機號注冊來創(chuàng)建賬號登錄平臺,基本設(shè)置里可以更改昵稱身份和個性簽名完善個人信息,安全設(shè)置可以更改密碼。相關(guān)技術(shù)與開發(fā)工具2.1相關(guān)開發(fā)技術(shù)簡介2.1.1前端相關(guān)技術(shù)簡介HTML和CSS:可以創(chuàng)建WEB的最主要的技術(shù)就是HTML和CSS。HTML為各種設(shè)施提供頁面的構(gòu)造,為CSS提供(視覺和聽覺的)規(guī)劃。將圖形和腳本一同,HTML和CSS是構(gòu)建網(wǎng)頁和

Web應(yīng)用程序的根基。HTML是網(wǎng)頁的本質(zhì),網(wǎng)頁的本質(zhì)是文本文件,它可以告訴瀏覽器應(yīng)該怎樣去現(xiàn)實文本的內(nèi)容,并且它包含了一系列標簽。HTML的編寫唯一能夠判斷代碼錯誤的位置和原因就是通過頁面展示出來的效果和期望中的差距。通過CSS對頁面排版和樣式的控制,可以展現(xiàn)出更精美和炫彩的頁面。是Web網(wǎng)站建設(shè)不可或缺的一部分。vue+axios:vue.js是一個用于創(chuàng)建用戶界面的一種漸進式框架。這個框架與其他框架大有不同。旨在更好地組織與簡化Web開發(fā),Vue設(shè)計的最初理念是從最低端向上增量開發(fā)。它核心庫里只需關(guān)注視圖層,會與其它庫亦或者和其他已有項目整合。Vue.js的目的就是將最簡單化的API實現(xiàn)響應(yīng)的數(shù)據(jù)綁定和組合的視圖組件。這是vue和JavaScript的組別,vue可以當作是一個JavaScript庫來使用,在vue中可以更快速簡單的開發(fā)頁面。并且在編譯完成后會自動生成html+JavaScript內(nèi)容。AntDesign前端ui框架:AntDesignforvue是當下比較流行的一款ui框架,由阿里巴巴團隊維護。使用AntDesign框架可以快速開發(fā)出友好的界面,大大提高開發(fā)的效率,另外它豐富的ui組件有很好的交互效果,例如圖表的展示和按鈕的點擊以及對話框的彈出和淡入。2.1.2后端相關(guān)技術(shù)簡介Java-計算機編程語言:Java是對于對象的編程語言,吸取很多c++的優(yōu)點,拋棄了c++中不容易吸收的一些概念,去之糟泊系之精華,比如多繼承、指針的概念。因此強大的功能和容易操作就是Java獨有的特征。同時,Java也是如今用于最廣泛的開發(fā)語言,Java程序不但能夠在Linux中運作起來,而且可以在window系統(tǒng)中運行。Java程序可以在Java的虛擬機中運行就是其可以橫跨系統(tǒng)的因素。所以只要安置好Java運行所需要的環(huán)境就可以將寫好的程序運行起來。Springboot開發(fā)框架:如今最主流的Javaweb開發(fā)框架就是SpringBoot了,運用SpringBoot框架能夠不需要安裝tomact(中間件),在它內(nèi)部的tomcat以及servlet容器是可以單獨完成運行。其中在使用springboot時遵循默認大于配置??梢元毩?chuàng)建Spring的應(yīng)用程序還可以快速的搭建開發(fā)環(huán)境,是快速開發(fā)的首選框架。Springboot框架中其實還有兩個很重要的策略一是開箱即用和約定優(yōu)于配置。另一個就是約定優(yōu)于配置。Redis緩存數(shù)據(jù)庫:數(shù)據(jù)庫在一般情況下是將數(shù)據(jù)儲存在硬盤當中,內(nèi)存的運行速度遠大于讀取。所以在高度運行的情況下,傳統(tǒng)數(shù)據(jù)庫往往就會顯得非常脆弱,卡頓與此同時就會導(dǎo)致系統(tǒng)崩盤。能解決這個問題的根本就是——用c語言編寫的,可以支持網(wǎng)絡(luò)的Redis。Redis單線程形式的緩存數(shù)據(jù)庫。Redis將數(shù)據(jù)存儲在內(nèi)存中,性能超高。將redis用作存放高熱點查詢的數(shù)據(jù),很明顯的將MySQL地壓力得以降低。以便于提升訪問效率。Nginx負載均衡:在一般單體結(jié)構(gòu)中存在許多缺點。舉個例子:沒有負載均衡,就沒有沒有nginx假如有一個人你要做100件事,你1秒只能做完10件事,這樣你就要10秒才能做完,有nginx他就可以把這100件事分成10份給10個你去做1秒就做完,相當于節(jié)省時間只是增加人力成本。傳統(tǒng)的系統(tǒng)就有弊端例如:系統(tǒng)承載量肯定是一個固定的數(shù)值,沒辦法承載過多的訪問量,當用戶并發(fā)數(shù)量達到極限,將沒有辦法正常的提供服務(wù)導(dǎo)致了系統(tǒng)崩潰[10]。因此,需要多個服務(wù)器主機可以來共同提供服務(wù)。2.2開發(fā)過程使用開發(fā)的工具簡介IntelliJIDEA:IntelliJIDEA簡稱IDEA,在行業(yè)內(nèi)一度任其為是最好的java開發(fā)工具之一,之所以有著最強的稱號是因為它具有智能代碼助手、代碼自動提示、重構(gòu)、javaEE支持、Ant、JUnit、CVS整合、代碼審查、創(chuàng)新的GUI設(shè)計等優(yōu)點。通過這個編輯器能夠以最快的速度來開發(fā)代碼并且代碼在提示功能這一塊是比較優(yōu)于其他工具的。在編寫代碼的過程中,無需將所有的代碼下下來,每次只需要將化簡后的拼寫甚至單單一個開頭字母,系統(tǒng)就會提供出完整的代碼。Xshell:Xshell是在開發(fā)過程中,不用近程到主機就可以連接Linux,可以通過Xshell登錄到遠程開發(fā)機,將代碼解壓到開發(fā)機上,從而達到目的,連接成功后,putty提供了Linux主機的終端界面,可以在終端中控制Linux主機。同時,安裝redis以及jdk、MySQL和nginx都需要通過Xshell來控制終端完成。Nginx:Nginx是一款超級輕量級的Web服務(wù)器/反向代理服務(wù)器及,在BSD-like協(xié)議下發(fā)行。有著占用空間小,并發(fā)能力好的優(yōu)點。事實上nginx的并發(fā)能力在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好。在前后端分離的項目中,Nginx起著極其重要的作用,Nginx可以讓前端項目單獨部署,并且更加簡單易用。同時它也可以作為代理轉(zhuǎn)發(fā)、負載均衡等等的中間件。Linux:Linux是一個操作系統(tǒng)版本,他可以用來部署我們的web應(yīng)用,將做好的web程序部署到阿里云服務(wù)器中。即可通過ip或者域名來正常訪問應(yīng)用,在本次課題中,主要用的時CentOS7版本的Linux系統(tǒng)。Linux內(nèi)核由LinusTorvalds創(chuàng)建,不需要收費提供給全球使用。在使用量提高之際這個操作系統(tǒng)迅猛發(fā)展,快速的得到了程序員們的大力支持。它能運行主要的Unix工具軟件,應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。他支持32位和64位硬件。Linux繼承了Unix是以網(wǎng)絡(luò)為核心的設(shè)計理念,是一個性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。Xftp:Xftp有著可以同步文件和文件夾的同步功能,提供文件閱讀的窗口,提供ftp和sftp的連接方式,用戶能夠放心的在unix和linux之間傳輸文件。在本次課題中,需要用它來向服務(wù)器發(fā)送web程序jar包和一些軟件的安裝包。Naavicat:Navicat是一個強大的MySQL數(shù)據(jù)庫管理和開發(fā)工具,可以查看數(shù)據(jù)庫中的數(shù)據(jù)。以及創(chuàng)建表、數(shù)據(jù)庫、數(shù)據(jù)庫等。使用數(shù)據(jù)庫管理工具相比在終端控制數(shù)據(jù)庫的優(yōu)勢非常明顯,呈下降趨勢的成本展現(xiàn)在人們眼前,可以使數(shù)據(jù)庫環(huán)境準確并快速的搭建成功。系統(tǒng)可行性和需求分析3.1系統(tǒng)可行性以及優(yōu)缺點為了讓用戶有更好的體驗感,并且避免了現(xiàn)有記事類軟件存在問題,現(xiàn)在此軟件主要具備這幾項功能功能:待辦事件的添加、刪除功能;日記的查看、修改功能;學(xué)習(xí)筆記可以按照標簽分類功能;每一項任務(wù)以柱狀圖展示功能。所以該軟件極大的提高了工作效率,有效的降低了突如其來的想法在繁雜的工作過程中流失的幾率,使得體驗者可以快速的在第一時間記錄腦海中閃過得有效想法,將想法從頭腦中轉(zhuǎn)移到設(shè)備上,借由托付給設(shè)備使頭腦得到解放。但是也存在有缺點,例如:功能不夠完善;單一設(shè)備訪問;增加筆記,待辦需要刷新后才可以在該頁面看到記錄。3.2需求分析用戶體驗需求:用戶的體驗需求主要從三個角度分析,分別為:交互效果、響應(yīng)時長、便捷程度。交互效果:一套賞心悅目的交互效果能讓用戶眼前一亮,交互界面是和用戶直接溝通的窗口,是提高用戶對應(yīng)用認知的最直接手段,可以說用戶界面就是系統(tǒng)的門面,本平臺的設(shè)計采用了antdesign的組件庫,按鈕的點擊效果、界面的布局包括各個表單元素都在當下比較流行,因此通過這些組件庫的引入,能讓本平臺應(yīng)用在交互效果上有不錯的體驗。響應(yīng)時長:響應(yīng)時長是系統(tǒng)性能的體現(xiàn),如果響應(yīng)時間過長不僅會讓用戶失去耐心,并且在后續(xù)的使用中,失去好感。因此,在平臺的設(shè)計中,應(yīng)該從性能的角度進行編碼。便捷程度:如果應(yīng)用只能在單一的設(shè)備上訪問,這大大降低了應(yīng)用的便捷性,可能會失去大量用戶,除了在瀏覽器訪問之外,后續(xù)可以與公眾號進行結(jié)合,通過微信公眾號帶來的便利,提高平臺應(yīng)用的便捷程度。業(yè)務(wù)需求:業(yè)務(wù)需求根據(jù)簡化操作的要求,軟件的功能應(yīng)實現(xiàn)如下細節(jié):功能模塊功能要點功能點控制臺待辦事件日記學(xué)習(xí)筆記輸入框能夠提示輸入輸入刷新后可以查看增加成功后可以查看詳細內(nèi)容也設(shè)有修改和刪除功能學(xué)習(xí)筆記標簽?zāi)軌蚋鶕?jù)關(guān)鍵字查詢筆記待辦快速查看能夠繞過主界面直接進入看到代辦完成和未完成數(shù)量天氣概況能夠主界面就可以查看到性能需求:Web網(wǎng)絡(luò)信息安全在保護用戶隱私中扮演重要的角色,所有用戶在本應(yīng)用中創(chuàng)建的內(nèi)容,均為用戶的隱私。因此,開發(fā)中需要從安全的角度開發(fā),并且做到不泄露、安全、快速和高效的特點。而在web安全中最容易引起的安全問題即是sql注入漏洞和跨站腳本攻擊,在開發(fā)過程應(yīng)著重主要這兩類安全問題,才能確保用戶信息的安全。Sql注入漏洞的預(yù)防需要在查詢數(shù)據(jù)庫的時候使用預(yù)編譯的方式,而跨站腳本攻擊(XSS)需要注意的地方就多了,開發(fā)時需要在每處回顯的位置進行判斷回顯的內(nèi)容的安全性。如果回顯時碰見腳本相關(guān)的符號,如:<script></script>等等,則應(yīng)采取應(yīng)對措施,不可直接回顯,否則腳本將被執(zhí)行。系統(tǒng)的易操作性主要是使用者在操作方面輕松易懂,既做到操作界面不會隨意跳轉(zhuǎn),在操作做發(fā)生錯誤會出現(xiàn)提示,搜索所需要的日記,學(xué)習(xí)筆記搜索關(guān)鍵字即可。還有系統(tǒng)的安全保密性,只有被授權(quán)注冊過的用戶,通過賬號和密碼才可以登錄進入,非公共場所的網(wǎng)絡(luò)電腦才可以設(shè)置自動登錄。系統(tǒng)設(shè)計4.1MySQL數(shù)據(jù)庫設(shè)計圖4-1E-R圖用戶表:是記錄所有用戶的登錄信息,同時包括個人信息,其中id為用戶表主鍵,username為用戶用作登錄的登錄名,并且唯一不可以重復(fù)themConfig為用戶的個性簽名,在首頁中展示。表4-1-1用戶表屬性名數(shù)據(jù)類型長度注釋idint11主鍵,用戶idusernamevarchar30用戶名,不可重復(fù)passwordvarchar30密碼namevarchar50昵稱telephonevarchar50電話號碼lastLoginTimevarchar50最后登錄時間roleIdvarchar300地址langVarchar200職業(yè)themeConfigvarchar300首頁個性簽名deletedvarchar300賬號狀態(tài):10A正常,10X刪除用戶配置:該表可以當作是配置和用戶個人有關(guān)的偏好設(shè)置的總表。當前配置了用戶筆記的抬頭簽名,另外可作為其他愛好配置。該表的結(jié)構(gòu)設(shè)計靈活,并不作為某一配置的結(jié)構(gòu)。表4-1-2用戶配置表屬性名數(shù)據(jù)類型長度注釋idint11主鍵cfgTypevarchar30用戶配置類型useridint30用戶idvaluevarchar50配置的值remarkvarchar50備注statevarchar50狀態(tài)標簽表:標簽表代表著標簽庫,所有用到的標簽都將在這個地方取,同時通過linkCount字段的值判斷,可以取出當下熱門的標簽,提供給用戶參考。若是用戶新增加的標簽,也會被存儲到標簽庫里。表4-1-3標簽表屬性名數(shù)據(jù)類型長度注釋tabIdint11主鍵tabNamevarchar30標簽名字linkCountvarchar30標簽被引用的次數(shù)角色表:角色表定義了用戶的所有角色,每個用戶都有一個角色。通過角色可以定義不同用戶之間的權(quán)限。便實現(xiàn)了對一些管理員才觸及的功能界面不被普通用戶所操作。表4-1-4角色表屬性名數(shù)據(jù)類型長度注釋idint11主鍵,角色idnamevarchar30角色的名稱describevarchar30角色描述statusvarchar50角色狀態(tài)creatorIdvarchar50角色的創(chuàng)建人createTimevarchar50角色的創(chuàng)建時間deletedvarchar300角色是否刪除權(quán)限表:權(quán)限表中定義了各類權(quán)限,包括菜單權(quán)限,特殊操作權(quán)限等等。表4-1-5權(quán)限表屬性名數(shù)據(jù)類型長度注釋permissionIdint11主鍵,權(quán)限idpermissionNamevarchar30權(quán)限的名稱actionsvarchar30權(quán)限描述actionListvarchar50擁有的功能權(quán)限集合,數(shù)據(jù)格式為json字符串,可選配置,可與數(shù)據(jù)權(quán)限配合使用dataAccessvarchar50擁有的數(shù)據(jù)權(quán)限集合,數(shù)據(jù)格式為json字符串,可選配置,可與功能權(quán)限配合使用角色權(quán)限表:角色權(quán)限表中存放了角色喝權(quán)限對應(yīng)關(guān)系的表。在該表中可以給角色配置多個不同的權(quán)限,同時每個用戶都對應(yīng)一個角色,以此便達到了控制用戶權(quán)限的功能。表4-1-6角色權(quán)限表屬性名數(shù)據(jù)類型長度注釋idint11主鍵permissionIdvarchar30權(quán)限idroleIdvarchar30角色id筆記表:筆記表的內(nèi)容主要是實現(xiàn)了用戶寫筆記的功能,所有筆記都記錄到該表中,筆記中狀態(tài)的字段用作邏輯刪除,用戶刪除筆記的時候,不真正刪除筆記,修改筆記的狀態(tài)來達到刪除的目的,方便在用戶后悔的情況下找回筆記。表4-1-7筆記表屬性名數(shù)據(jù)類型長度注釋noteIdint11主鍵,筆記idnoteTitlevarchar30筆記的標題noteContentvarchar30筆記的內(nèi)容,存儲富文本內(nèi)容noteTextvarchar50筆記的純文本內(nèi)容userIdvarchar50用戶idtabIdvarchar50標簽idstatevarchar300狀態(tài):10A正常,10X已刪除createDateVarchar200創(chuàng)建時間updateDatevarchar300更新時間otherLinkvarchar300外部鏈接日記表:日記表存儲用戶的日記信息,同樣也有狀態(tài)的字段用來做邏輯刪除,以防用戶誤刪操作。同時,isImportant字段可以提供用戶增加重要筆記的功能。表4-1-8日記表屬性名數(shù)據(jù)類型長度注釋diaryIdint11主鍵,日記iddiaryTitlevarchar30日記的標題diaryContentvarchar30日記的內(nèi)容,存儲富文本內(nèi)容diaryTextvarchar50日記的純文本內(nèi)容diaryDatevarchar50日記的日期userIdvarchar50用戶的idtabIdvarchar300標簽的idstateVarchar200狀態(tài):10A正常,10X已刪除createDatevarchar300創(chuàng)建時間updateDatevarchar300更新時間remarkvarchar300備注otherLinkvarchar300外部鏈接isImportantint2是否重要筆記:1:是,2:否待辦表:待辦功能給用戶提供類似便簽的功能,另外,待辦的狀態(tài)主要分為三種(未開始,正在執(zhí)行,已完成),不同的狀態(tài)會影響到用戶待辦完成的效率和數(shù)量的統(tǒng)計和展示,另外會將超時任務(wù)進行記錄。表4-1-9待辦表屬性名數(shù)據(jù)類型長度注釋eventIdint11主鍵,待辦ideventTitlevarchar30待辦標題eventContentvarchar30待辦內(nèi)容beginTimevarchar50計劃開始時間endTimevarchar50計劃結(jié)束時間,作用與計劃完成時間相同planTimevarchar50計劃完成時間statevarchar300狀態(tài):10A未開始,10B正在執(zhí)行,10C已完成,10X已刪除createTimeVarchar200待辦創(chuàng)建時間completeTimevarchar300待辦完成時間userIdint用戶id歷史登錄記錄表:該表只用作記錄用戶每天的登錄次數(shù),沒有其他使用價值,用作統(tǒng)計用戶訪問系統(tǒng)的次數(shù)變化。以此提供給用戶使用本系統(tǒng)頻率的參考價值。表4-1-10歷史登記記錄表屬性名數(shù)據(jù)類型長度注釋userIdint11用戶idloginDayvarchar30登錄的日期countvarchar30登錄的次數(shù)4.2Redis緩存的引用Redis用于存儲最近登陸的用戶,key為curLoginUser。數(shù)據(jù)類型為List,該數(shù)據(jù)內(nèi)容每周清空一次,每當有用戶登錄,都在最近登錄用戶中添加一條記錄,并且每次在頭部添加,這樣數(shù)據(jù)的順序既是根據(jù)登錄時間排序。4.3系統(tǒng)設(shè)計4.3.1系統(tǒng)設(shè)計結(jié)構(gòu)圖圖4-3-1系統(tǒng)設(shè)計結(jié)構(gòu)圖4.3.2系統(tǒng)詳細設(shè)計解析個人頁分為用戶信息設(shè)置和賬戶密碼修改。用戶信息設(shè)置:用戶想要完成首次登錄,需要設(shè)置用戶名,賬戶昵稱,以及密碼,并且要輸入正確的手機號,即可完成注冊,注冊成功后即可登陸,登錄后可以修改自己的個人信息個性簽名可以展示在控制臺上,控制臺可以查看登陸人的個人昵稱個性簽名及各類功能的柱狀統(tǒng)計圖和天氣概況。賬戶密碼修改:在個人頁中的個人設(shè)置可以進行密碼修改,當前密碼的安全程度均有顯示,修改密碼時要知道當先密碼,修改后的密碼要保證兩次輸入完全相同,才可修改密碼,修改成功后可以設(shè)置為自動登錄狀態(tài)控制臺即為工作臺,工作臺中有使用人賬戶的個人昵稱,職稱,個性簽名和頭像設(shè)置這些均可在個人中心里面進行修改。登錄數(shù)筆記數(shù)和日記數(shù)的柱狀圖記錄的均為近十天內(nèi)的數(shù)據(jù)以及標記有今日登陸,筆記日記數(shù)量還設(shè)有未完成代辦及總數(shù)待辦。天氣概況記錄的是最近六天的天氣以及天氣情況提醒例如“感冒低發(fā)期,天氣舒適,多吃蔬菜多喝水”。健康指數(shù)通過線行統(tǒng)計圖表述了本月和上月與訪問量待辦超時數(shù)和日記數(shù)之間的關(guān)系,本月和上月分別采用不同顏色的線來區(qū)分。待辦事件為事件中心,表示出剩余待辦,本月處理待辦平均時間,本月超時數(shù)和本月完成任務(wù)數(shù)。點擊添加即可增加待辦可設(shè)置標題,起始和終止日期和內(nèi)容點擊ok增加待辦,刷新一下即可在頁面看到待辦,唯一的缺點就是每一個待辦需要手動開始以及手動結(jié)束,待辦數(shù)也可展示在工作臺頁面。日記中心屬于我的日記,可以查看到個性簽名以及每個日記的主題,點擊查看內(nèi)容即可查看日記內(nèi)容,點擊修改內(nèi)容才可以修改內(nèi)容,刪除即可刪除日記。新建日記是跟待辦一樣可以設(shè)置日記標題,記錄日期及內(nèi)容。學(xué)習(xí)中心設(shè)有學(xué)習(xí)筆記,可以根據(jù)標題來快速查找筆記,同樣增加學(xué)習(xí)筆記的時候可以設(shè)置標題,但是學(xué)習(xí)筆記可以增添標簽,系統(tǒng)自動在最熱的100個標簽隨機推薦三個提供選擇,但是也可以手動添加自己喜歡的標簽,每個筆記下方也設(shè)有查看內(nèi)容,編輯和刪除。系統(tǒng)實現(xiàn)登陸攔截器實現(xiàn)登錄攔截系統(tǒng)的作用是攔截器可以攔截未登錄的用戶進入系統(tǒng),所有請求在經(jīng)過后端時,都會先進入攔截器,在攔截器中判斷登錄狀態(tài)。攔截頁面:個人頁面、筆記頁面、日記頁面、待辦頁面、首頁。publicbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler)throwsException{HttpSessionsession=request.getSession();UserVouserBean=(UserVo)session.getAttribute(Contants.Attribute_User_KEY);RetMsgresult=newRetMsg();if(userBean==null||userBean.getUsername().equals("")){//session中沒有登陸信息,從token中取Stringtoken=request.getHeader("Access-Token")==null?"":request.getHeader("Access-Token");UserVouserVo=null;try{userVo=JSON.parseObject(JasyptUtil.decrypt(token,salt),UserVo.class);}catch(Exceptione){}if(userVo!=null){Calendarcalendar=Calendar.getInstance();calendar.setTime(userVo.getLastLoginTime());calendar.add(Calendar.DATE,7);//token有效期為七天CalendarcalendarNow=Calendar.getInstance();calendarNow.setTime(newDate());if(calendar.after(calendarNow)){session.setAttribute(Contants.Attribute_User_KEY,userVo);LoginHistoryhistory=loginHistoryService.getOne(newQueryWrapper<LoginHistory>().eq("userId",userVo.getId()).eq("loginDay",LocalDate.now()));if(history!=null){history.setCount(history.getCount()+1);loginHistoryService.update(history,newUpdateWrapper<LoginHistory>().eq("userId",userVo.getId()).eq("loginDay",LocalDate.now()));}else{history=newLoginHistory();history.setUserId(userVo.getId());history.setLoginDay(newDate());history.setCount(1);loginHistoryService.save(history);}returntrue;}}5.2攔截不安全的請求方式攔截不安全請求方式的作用:在http請求中,有許多請求的方式,被web應(yīng)用劃分為不安全的請求式;可能給應(yīng)用帶來安全漏洞。因此只需要開啟需要用到的請求方式即可。攔截的請求方式:HEAD、PUT、DELETE、OPTIONS、TRACE、COPY、SEARCH、PROPFIND。放行的請求:GET、POST請求方式是web應(yīng)用中最常用的請求方式,幾乎所有的請求都可通過這兩種方式實現(xiàn)。/*springboot2.0攔截不安全請求*/@BeanpublicConfigurableServletWebServerFactoryconfigurableServletWebServerFactory(){TomcatServletWebServerFactoryfactory=newTomcatServletWebServerFactory();factory.addContextCustomizers(context->{SecurityConstraintsecurityConstraint=newSecurityConstraint();securityConstraint.setUserConstraint("CONFIDENTIAL");SecurityCollectioncollection=newSecurityCollection();collection.addPattern("/*");collection.addMethod("HEAD");collection.addMethod("PUT");collection.addMethod("DELETE");collection.addMethod("OPTIONS");//collection.addMethod("POST");//collection.addMethod("GET");collection.addMethod("TRACE");collection.addMethod("COPY");collection.addMethod("SEARCH");collection.addMethod("PROPFIND");securityConstraint.addCollection(collection);context.addConstraint(securityConstraint);});returnfactory;}}5.3Nginx代理的實現(xiàn)作用:利用Nginx部署前端項目,在前端中的后端請求通過Nginx代理轉(zhuǎn)發(fā)至后端應(yīng)用的地址,其中,所有請求路徑中包含”/api/”的請求均轉(zhuǎn)發(fā)到后端應(yīng)用的地址中。圖5-3Nginx配置信息5.4獲取當前最熱標簽作用:從引用次數(shù)最多的100個標簽里隨機抽取出三個,作為推薦標簽推給用戶在編輯筆記時選用,每個筆記都可以加上標簽。@GetMapping("hotTabs")publicRetDataMsghotTabs(@RequestParamStringcount){count=count.trim();RetDataMsgresult=newRetDataMsg();QueryWrapper<MTab>wrapper=newQueryWrapper<MTab>().orderByDesc("linkCount").eq("1","1limit100");List<MTab>tempList=tabMapper.selectList(wrapper);intallCount=tabMapper.selectCount(wrapper);///查詢標簽總數(shù)List<MTab>returntList=newArrayList<>();List<Integer>ids=newArrayList<>();for(inti=0;i<Integer.parseInt(count);i++){if(i>allCount)break;Doubletemp;while(true){if(allCount>100){temp=Math.random()*(101);}else{temp=Math.random()*(allCount);}if(!ids.contains(Value())){ids.add(Value());break;}}returntList.add(tempList.get(Value()));}result.setResult(returntList);result.setCode(200);returnresult;}5.5健康指數(shù)作用:對本月和上月各類指數(shù)進行統(tǒng)計和計算。統(tǒng)計包括日記數(shù)量、筆記數(shù)量、待辦超時率和訪問次數(shù)。@GetMapping("healthIndex")publicRetDataMsghealthIndex(HttpSessionsession){RetDataMsgresult=newRetDataMsg();UserVouserBean=(UserVo)session.getAttribute(Contants.Attribute_User_KEY);LocalDatenow=LocalDate.now();now=now.withDayOfMonth(1);longtoday=now.atStartOfDay().toInstant(ZoneOffset.of("+8")).toEpochMilli();longlastMonth=now.minusMonths(1).atStartOfDay().toInstant(ZoneOffset.of("+8")).toEpochMilli();JSONObjectmonthObject=userService.calculateEvent(userBean,today,0);JSONObjectlastMonthObject=userService.calculateEvent(userBean,lastMonth,today);inteventCount=eventService.count(newQueryWrapper<MEvent>().eq("userId",userBean.getId()).ne("state","10X").gt("beginTime",today));intlastEventCount=eventService.count(newQueryWrapper<MEvent>().eq("userId",userBean.getId()).ne("state","10X").between("beginTime",lastMonth,today));intlonginCount=loginHistoryService.list(newQueryWrapper<LoginHistory>().eq("userId",userBean.getId()).gt("loginDay",now)).stream().mapToInt(item->item.getCount()).sum();intlasthLonginCount=loginHistoryService.list(newQueryWrapper<LoginHistory>().eq("userId",userBean.getId()).between("loginDay",now.minusMonths(1),now)).stream().mapToInt(item->item.getCount()).sum();intdiaryCount=diaryService.count(newQueryWrapper<MDiary>().eq("userId",userBean.getId()).ne("state","10X").gt("createDate",today));intlastdiaryCount=diaryService.count(newQueryWrapper<MDiary>().eq("userId",userBean.getId()).ne("state","10X").between("createDate",lastMonth,today));intnoteCount=noteService.count(newQueryWrapper<MNote>().eq("userId",userBean.getId()).ne("state","10X").gt("createDate",LocalDate.now()));intlastNoteCount=noteService.count(newQueryWrapper<MNote>().eq("userId",userBean.getId()).ne("state","10X").between("createDate",lastMonth,today));JSONArrayresultArray=newJSONArray();JSONObjectobject1=newJSONObject();object1.put("item","待辦超時數(shù)");object1.put("上月",lastMonthObject.get("countTimeout").toString().equals("0")?0:Double.parseDouble(lastMonthObject.get("countTimeout").toString())/lastEventCount*100);object1.put("本月",monthObject.get("countTimeout").toString().equals("0")?0:Double.parseDouble(monthObject.get("countTimeout").toString())/eventCount*100);JSONObjectobject3=newJSONObject();object3.put("item","日記");object3.put("上月",lastdiaryCount);object3.put("本月",diaryCount);JSONObjectobject4=newJSONObject();object4.put("item","筆記");object4.put("上月",lastNoteCount);object4.put("本月",noteCount);JSONObjectobject5=newJSONObject();object5.put("item","訪問量");object5.put("上月",lasthLonginCount);object5.put("本月",longinCount);resultArray.add(object1);resultArray.add(object3);resultArray.add(object4);resultArray.add(object5);result.setResult(resultArray);result.setCode(200);returnresult;}}5.6應(yīng)用部署到云服務(wù)器上部署方式:通過容器的方式部署,前端使用Nginx為基礎(chǔ)鏡像,后端使用Java作為基礎(chǔ)鏡像。容器部署是當下非常流行的部署方式,并且相較于傳統(tǒng)的虛擬機有著很大的飛躍。使用容器的方式原比虛擬機的方式強大許多,在虛擬機中,需要占用大量系統(tǒng)資源,虛擬機安裝的系統(tǒng)也需要占用大量的內(nèi)存和磁盤。而容器的出現(xiàn),就解決了虛擬機的痛點,使得隔離部署的方式非常輕松,通過容器的方式有以下幾個優(yōu)點:跨平臺可移植性:按統(tǒng)一標準打包(鏡像的方式),傳播性極強。面向應(yīng)用:優(yōu)化部署應(yīng)用(設(shè)計哲學(xué))→API,接口及文檔(體現(xiàn))。版本控制:追蹤、查詢、記錄版本信息(應(yīng)用程序更改史)和回滾版本等組件復(fù)用:可在基礎(chǔ)鏡像的條件下使用其他鏡像。共享性:公共的注冊服務(wù)器(可拉取公共的鏡像服務(wù))#基礎(chǔ)鏡像FROMjava:8VOLUME/tmp#把可執(zhí)行jar包復(fù)制到基礎(chǔ)鏡像的目錄下COPYinfocoord-0.0.1-SNAPSHOT.jarinfocoord.jarRUNln-sf/usr/share/zoneinfo/Asia/Shanghai/etc/localtimeRUNecho'Asia/Shanghai'>/etc/timezoneRUNbash-c"touch/infocoord.jar"#鏡像要暴露的端口,如要使用端口,在執(zhí)行dockerrun命令時使用-p生效EXPOSE8081#在鏡像運行為容器后執(zhí)行的命令ENTRYPOINT["java","-jar","infocoord.jar","--files.active=prod","--server.port=8081",">/log/app.log"]圖5-6-1前端項目容器部署配置系統(tǒng)功能測試6.1賬戶登錄測試步驟:1.前后端運行,運行后得到域名http://localhost:8000/(不可用IE瀏覽器) 2.輸入賬戶名和密碼,密碼可以設(shè)置成可見或者不可見 3.輸入成功后按確定即可登錄,登陸密碼或者賬戶名輸入有誤時,系統(tǒng)會彈窗提示,輸入框為空也給予提示。圖6-1-1登陸操作圖示6.2個人資料修改測試步驟:首頁點擊個人頁當前頁點擊修改個人資料,或者修改首頁簽名,修改基本信息和個性簽名后點擊提交安全設(shè)置可以看到密碼的安全性也可以修改密碼最右邊修改,修改后點擊提交測試結(jié)果:可用修改過的密碼登錄,登陸成功則功能正常圖6-2-1檢測如圖所示6.3各項功能測試添加待辦測試步驟:1.點擊事件中心2.點擊添加3.增加待辦后點擊確定4.待辦增加成功后手動點擊開始測試結(jié)果:增加功能正常圖6-3-1檢測如圖所示日記中心測試步驟:1.點擊日記中心2.點擊新增日記 3.日記添加完成后刷新就可以在頁面上看到剛添加過得日記測試結(jié)果:日記功能正常圖6-3-2檢測如圖所示學(xué)習(xí)中心測試步驟:點擊學(xué)習(xí)筆記點擊添加筆記筆記添加完成后按f5刷新檢測是否添加成功測試結(jié)果:學(xué)習(xí)筆記功能正常圖6-3-3檢測如圖所示

結(jié)束語雖然這次畢設(shè)沒有經(jīng)歷很漫長的過程,但是我已經(jīng)在這方,面學(xué)到了很多東西,已經(jīng)為今后的工作中奠定了有效的基礎(chǔ)。作為一名計算機工作者,最首要的任務(wù)就是清楚的知道每位用戶的需求,才可以根據(jù)需求來確定軟件開發(fā)的功能要點;其次就需要設(shè)計者來親身體會,學(xué)會換位思考,我們本身就是體驗者,我們學(xué)要什么樣的軟件,只有這樣,才能為開發(fā)工作明確了方向,并使所開發(fā)的軟件能夠真正讓用戶所面臨的問題得到改善。經(jīng)過幾個月的設(shè)計與開發(fā),這個應(yīng)用型網(wǎng)站日記本的功能基本符合設(shè)想的要求:能夠?qū)崿F(xiàn)從登錄到添加等各項,實現(xiàn)對之前筆記日記的查看、編輯、刪除,還可以根據(jù)關(guān)鍵字對筆記進行搜索等。由于設(shè)計時間有限,自身技能和所掌握的知識和能力有限,系統(tǒng)存在的一些弱點,像修增加了待辦日記學(xué)習(xí)筆記需要刷新一次頁面才能出來這個問題,還是沒有能夠想到解決的辦法。之后經(jīng)過我的知識面逐漸擴展,還會有更多的問題被發(fā)現(xiàn)。這次的畢業(yè)設(shè)計使我收獲頗多,不但學(xué)到了新的知識,積累了處理問題的方法,也提高了自己的眼界,當今社會人類已經(jīng)入了信息時代,社會瞬息萬變只有不斷提高自己才能不會被社會淘汰總之借用這次畢業(yè)設(shè)計我接觸了許多沒學(xué)過的以及很多的課外知識,更新了自己原有的知識層面,挖掘出來新的開發(fā)思路,相信之后會更深入的學(xué)習(xí)這方面的知識

附錄一:參考文獻[1]ShiXiang-dong,QianSheng-bang,LiLin-jia,ZhaoEr-gang.CSSJ213934.3-050020:ANewDouble-modeHigh-amplitudeScuti-typePulsatingStar[J].PublicationsoftheAstronomicalSocietyofthePacific,2021,133(1023).[2]BatalasNikolaos,KhanVassilis-Javed,MarkopoulosPanos.ExecutableHTML[J].SoftwareX,2021,14.[3]AlexScaria,RajkumarTDhiliphan.2SpiderBirdSwarmAlgorithmwithDeepBeliefNetworkforMaliciousJavaScriptDetection[J].Computers&Security,2021(prepublish).[4]馬小陸,王磊,方英歌.一種基于嵌入式Linux信息處理的開放性教學(xué)平臺設(shè)計[J].湖北理工學(xué)院學(xué)報,2021,37(02):23-26.[5]趙凱.新形態(tài)教材建設(shè)研究——以Linux網(wǎng)絡(luò)服務(wù)構(gòu)建與管理課程為例[J].中國現(xiàn)代教育裝備,2021(07):137-139.[6]朱佑滔,何志琴,施文燁.多種群蟻群算法在機械手臂路徑規(guī)劃中的設(shè)計與應(yīng)用[J].機械傳動,2021,45(04):160-165.[7]趙慧周.面向文科生的程序調(diào)試方法線上教學(xué)實踐與思考——以JavaScript程序設(shè)計為例[J].計算機教育,2021(04):7-10+23.[8]ZeroualiAhmed,MensTom,DeRooverCoen.OntheUsageofJavaScript,PythonandRubyPackagesinDocker

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論