基于SSM框架的BS微博系统的设计与实现
第一章 緒 論
時至今日,網絡對于現代人來說,早已成為人類科技發展進步的橋梁,而通過網絡衍生出的一系列產品也不斷的沖擊著人們的日常生活,截至2016年年底,我國網名數量達到7億,有超多一半多人在使用網絡,而它天涯咫尺的作用,不但消除了人與人地域上的距離,更是拉近了心靈的距離,溝通與互動變的異常頻繁與重要。
隨著互聯網新時代的來臨,微博借著互聯網的橋梁,逐漸進入網名的視野中,沒有博客的長篇大論,也不需要嚴謹的邏輯層次,這使得網絡中一大批的原創文章被生產發掘,短短幾句話便可以在網絡中激起千層浪,普通人也可能在一夜之間成為擁有數千萬粉絲的“網紅”。微博的便捷、原創、和草根性使它成為中國網民茶余飯后的網上生活。
早在2006年3月,Obvious推出了Twitter服務,這個世界上最早同時也是最著名的微博系統,而在那是,微博也僅僅只是為了給好友發送手機短信,在中國,飯否網的上線標志中國微博的開端,之后騰訊滔滔、嘰歪、嘀咕等微博的開荒者終究也都沒能站在最后。
2010年,我國的微博得到迅速發展,這一年,無論微博的用戶還是影響力都達到前所未有的高度,以新浪門戶為首的騰訊、新浪、搜狐等微博展現出全新的活力。到了2013年6月,中國微博用戶規模高達3.31億人,在微博中流動的信息有超過2億多條。
2010年11月,新浪微博推出群組功能,這個功能不但可以與好友實時聯系,又可以隨時發布最新信息,2012年添加新功能“悄悄關注”,在用戶關注后不通知被關注用戶,也不顯示給被關注用戶,2013年,微博推出包括iPhone和Android的移動客戶端,新增“密友”功能,同年10月份新浪微博“粉絲服務平臺”上線,粉絲服務平臺幫助認證用戶為訂閱自己的用戶提供精彩內容和互動服務,自此微博由“營銷”向“營銷+服務”轉型!而新浪微博依舊延續這自己的名人效應,一個普通賬號,在沒有粉絲關注的情況下,發布的微博卻很難被他人看到,如果需要在微博中求助,沒有“名人大V”的幫助,很難被別人所注意到。想要在微博中尋求幫助,就需要微博提供更多的服務。而本系統通過使用積分懸賞功能使得用戶可以通過積分懸賞自己的問題,來讓更多的用戶回答自己的問題,得到更多人的幫助。
第二章 相關技術介紹
2.1 架構概述
B/S架構(Browser/Server,瀏覽器/服務器模式):是一種通過將瀏覽器作為客戶端的網絡結構模式,利用已經逐步成熟的web瀏覽器技術,結合瀏覽器的多種功能,使用瀏覽器來作為早先C/S(Client/Serve)架構下復雜的客戶端,使用C/S架構使得用戶的客戶端得到統一,將軟件系統的核心功能集中在服務器端,系統的升級和維護更加簡單,開發人員只需要管理服務器就可以做到對如軟件系統的更新和維護,B/S架構所帶來的眾多優點使得它成為將來信息化發展的主流方向。
**MVC模式:**即模型(Model),視圖(View),控制器(Controller)是一種軟件開發的設計模式,Model主要負責分離出來的業務邏輯的數據交互,View主要負責數據的提交和展示,Controller主要負責獲取請求和請求的轉發。
**SSM框架(SpringMVC+Spring+Mybatis):**由這三個開源框架組成的web項目的框架,是標準的MVC模式,spring MVC負責請求的轉發和視圖管理,spring實現業務對象管理和事務控制,mybatis作為持久化引擎,相對于早先流行的SSH(Struts+Spring+Hibernate)框架來說,SSM作為輕量級框架更適合開發中小型項目。
2.2 關鍵技術簡介
前端技術
- **JSP(Java Server Pages):**嵌入了java代碼的html頁面,本質是一個servlet,它實現了在htmld的語法中擴展java代碼,使用<% %>格式。
- **JavaScript:**是一種弱類型的腳本語言,由ECMAScript描述JavaScript的基本對象和語法,文檔對象模型(DOM),瀏覽器對象模型(BOM)三部分組成。
- **Ajax(Asynchronous Javascript And XML):**異步的JavaScript和XML,實現前后臺之間的異步交互,在不需要重新加載整個頁面的前提下對頁面上的部分內容做局部刷新。
后臺技術
**java:**一種面向對象的編程語言,主要特性包括有
- 簡單性:拋棄了C++中復雜的語法和指針多繼承等特征,開發人員不需要關注底層優化,只需要關注業務邏輯就行
- 面向對象性,對程序員而言,只需要注意對應的數據和處理數據的方法,不用嚴格按照過程的方式來編寫代碼,因為java語言是面對對象的,因此也擁有面向對象的三大特征,繼承、封裝和多態
- 跨平臺性,java語言的跨平臺性也就是JVM(java虛擬機)的跨平臺性。Java文件編譯后不會直接生成機器直接運行的二進制文件,而是編譯成class文件,JVM會將編譯的class文件根據不同操作系統下的JVM來生成對應系統的二進制文件,只需要編譯一次,就可以在不同的平臺上運行
**SpringMVC:**是Spring框架提供的一個模塊,通過實現MVC模式來地將數據、業務與展示進行分離,簡化了Web開發。和其他MVC框架一樣都是請求驅動,控制轉發,它的核心Servlet是DispatcherServlet,即前端控制器,用來分發請求到控制器,它和Spring框架完全整合。這也使得SpringMVC成為目前非常流行的MVC框架。
**Spring:**一款輕量級java開發框架,Spring框架有著分層的體系結構,因此可以使用Spring中 獨立的任意部分。而它的架構依舊是內在穩定的,Spring提供了J2EE應用各層解決方案,貫穿于三層架構的每一層,但Spring依舊可以很好的兼容其他框架,本項目主要用到了Spring中IOC(控制反轉)和AOP(面向切面編程)模塊。
**Mybatis:**是一個簡化Java持久化層的輕量級開源框架。并且支持注解的Mapper,Mybatis消除了絕大部分的JDBC代碼,使得java對象持久化到數據庫的過程變的更加容易,相對于其他的java持久化框架,Mybatis的優點在于,消除了大量的JDBC冗余代碼、簡單易學、可見的Sql語句、提供了于Spring的整合,引入更好的性能。
2.3 開發工具
**Tomcat服務器:**是一個Web應用服務器,它是輕量且開源的,是中小型Web項目和開發調試和學習的首選。
**Oracle數據庫(Oracle Database):**是由Oracle公司開發的一款關系型數據庫,是商業運用第一的關系型數據庫,系統使用方便,功能強大,可移植性強。適用于各種大中小環境,在大數據時代,作為分布式數據庫,它實現了分布式處理的功能,具有完整的數據管理功能、完備的關系型數據庫、分布式處理功能。
**Eclipse開發工具:**一個基于java開源的可擴展開發平臺,它不但包括java集成開發環境,還包括插件開發環境,如SVN、CVS等團隊開發插件。
2.4 本章小結
本章主要介紹了開發項目用到的一些主要技術,項目所使用的架構和設計模式,項目中所使用到的主要框架技術,項目在瀏覽器端展示用到的前端技術和展示方式,后臺代碼使用的開發語言,使用的服務器技術,數據持久層所使用的數據庫等,在本章最后又介紹了開發使用到的開發工具。
第三章 系統需求分析
3.1 可行性分析
3.1.1技術可行性
在已有技術方面,為了統一客戶端,消除因版本升級和維護帶來的復雜性,因此采用成熟的B/S架構在項目的實現上完全可行,在開發語言和框架方面,java和j2ee體系的強大,可以讓開發人員精心的構建web項目,以及一系列的開源框架,都為項目的可行性提供了強大的依據,在服務器方面,使用開源服務器Tomcat,足以支持該小型項目的正常使用,而不斷發展的前端技術和前端框架可以制作精美的前臺頁面,提高用戶的體驗和交互,這在項目的頁面展示技術上完全可行,強大的關系型數據庫為項目數據的持久化提供強有力的后援。綜上所述,日趨成熟化的java和j2ee體系、完全開源的java框架和服務器、功能強大的關系型數據庫、運用Web前端技術提供用戶交互頁面,所以該項目在技術方面完全可行。
3.1.2 經濟可行性
在互聯網發展到信息時代的今天,單一獲取信息的方式已經不能滿足人們,人們每天接觸的信息越來越多,而獲取信息的形式也越來越多,但大多數獲取信息的方式,留給用戶交互的方式并不多,大都數情況下,人們只能被動獲取,而很難找到自己的喜好和需求來獲取信息,而本微博項目可以讓人們獲取實時熱點信息和他們所關注的信息,實時與微博信息交互。而使用大量成熟技術與開源框架下,也使得小項目的開發更加簡單,經濟,高效,因微博而興起的微博效應也能帶來一定的經濟效益。
3.1.3 操作可行性
微博系統使用B/S架構,用戶不需要下載客戶端,只需要用戶有瀏覽器,就可以在瀏覽器上登陸微博系統,微博系統的界面顏值高,用戶交互性高,用戶操作簡單方便,只需要了解基本的計算機操作就能使用,用戶體驗性高。因此在系統操作上完全可行。
3.2 需求分析
3.2.1 系統總體需求
該微博系統主要由前臺用戶模塊和后臺管理模塊組成,當用戶進入首頁時可以選擇登陸或不登陸,登陸時可以使用已有賬號登陸或注冊新賬號。用戶未登陸時,在首頁顯示最近更新的熱門微博,而登陸后的用戶可以在首頁看到 自己關注用戶最近更新的微博。
未登陸用戶只能搜索查看微博信息和訪問用戶主頁,登陸用戶可以登陸系統后修改自己的基本信息例如簽名、性別等,在驗證用戶信息后還可以修改密碼和密保信息。以及修改用戶頭像和密碼,編輯自己的個人主頁,對微博進行點贊、評論、收藏等功能,還可以關注/取消關注用戶,拉黑用戶、私聊用戶等操作。
后臺管理員可以查看系統所有的數據,包括用戶、微博、評論、海螺、回答的總量,最近一個的數據庫,最近一周的數據量。具體所具有的功能包括管理不良微博信息與不良賬號,對微博、微博評論、海螺、回答等信息的刪除和恢復功能,對不良賬號的封禁等操作。
**微博查找模塊:**用戶可以輸入關鍵字來查找相對應的微博或查找用戶。
**微博發布模塊:**用戶點擊發布,在內容中添加自己想要發送的內容,可以選擇表情,也可以插入圖片,但對輸入字符數有著限制,同時還可以插入一張圖片。
**微博評論模塊:**用戶可以查看微博的評論,發布微博評論等。
**神奇海螺模塊:**用戶可以發布一個神奇海螺,海螺主要用來記載用戶提出的各種問題,由其他用戶來查看并回答問題,當回復者的答案被提問者采納后,回答者可以增加自己的海螺積分,不同的海螺積分有著不同的海螺稱號。
**積分模塊:**用戶每天登陸,發微博,做任務等方式可以增加自己的積分,不同的積分擁有不同的稱號,神奇海螺模塊的積分有著不同的稱號,稱號顯示在用戶名稱的后面。
**好友模塊:**用戶可以查看系統中其他的用戶,找到自己喜愛的用戶然后關注他們,關注后可以在好友模塊中查看自己關注的用戶,以及好友最近發布的微博等信息,也可以私信好友,發送私信信息給好友。
3.2.2 用例圖需求
1. 當用戶進入系統時候,可以選擇登陸或注冊用戶,如果忘記了密碼還可以通過密保問題來重置密碼。
2. 當用戶登陸后,可以管理用戶的個人基本信息,修改用戶基礎信息,修改用戶密保信息。修改用戶頭像等功能。
3. 用戶微博管理系統,當用戶登陸進去系統時,可以在首頁發布微博,通過關鍵字搜索微博內容中關鍵字的微博信息。產看微博,包括查看個人微博、好友微博、推薦微博。
4. 評論管理,評論管理依賴于微博模塊,用戶可以查看微博的評論,對微博信息發布評論,以及刪除自己的評論。
5. 海螺管理,用戶登陸后可以在海螺模塊發布海螺問題,發布問題時可以選擇懸賞的積分數目,同時減少自己的積分數,用戶可以參加回答他人的海螺問題,當回答的答案被采納時,就可以獲得用戶懸賞的積分數。
6. 好友管理,當用戶登陸時可以關注系統推薦好友,也可以自己搜索用戶,查看用戶的主頁面,添加關注或取消關注用戶,還可以給用戶發送私人信息,或者拉黑用戶。
7. 消息通知,當用戶的關注,微博評論,點贊,收藏時調用消息通知。
8. 管理員:管理員登陸系統,可以管理微博用戶,對不良用戶進行封禁和注銷賬戶的操作,也可以恢復用戶的狀態,同時也可以對微博信息進行管理,如刪除微博,恢復被管理員刪除的微博信息等,對微博評論的刪除和恢復等操作。
第四章 系統功能設計
4.1 系統類分析
4.1.1 實體類
實體類主要用來傳遞數據,主要包括User、Friend、PointAction、PointRecord、Weibo、WeiboCollect、WeiboComm、WeiboLike、WeiboTrans等,用戶類中包括用戶的基本信息,微博類中包括微博的基本信息同時包含實體用戶類,好友類包括好友編號,好友創建時間與關注雙方的用戶類等,私信類包含私信雙方的用戶類與私信的基本屬性,微博收藏類包含收藏的微博類與用戶id等收藏屬性,微博評論類包含微博類和用戶類以及評論內容等屬性,微博轉發類包含用戶類和微博類以及轉發時間等屬性,微博點贊類包含微博類和用戶類以及點贊時間等屬性。實體類之間的類關聯關系如圖所示。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-nPY3hm8e-1612609849775)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5Ce43bee119326f13b8f48889550633ac0.png)]
4.1.2 控制器類
在controller層包含MainController、WeiboController、FrendController、AdminController四個JAVA類,在SpringMVC框架中主要用來接收瀏覽發送給服務器的請求和數據處理并控制請求的轉發,將從Service層中獲取的數據響應給瀏覽器端。MainController主要用發來接收來自用戶相關頁面中提交的表單或鏈接請求,并將請求的參數傳遞到Controller中對應的方法中,攜帶數據響應給瀏覽器,在瀏覽器端顯示數據,具體屬性和方法如圖所示。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-pHxEJV4U-1612609849779)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5C42830ce033c50721bb707753439780d6.png)]
WeiboController主要用發來接收來自微博相關頁面中提交的表單或鏈接請求,并將請求的參數傳遞到Controller中對應的方法中,并獲取到業務處理層中返回的數據,攜帶數據響應給瀏覽器,在瀏覽器端顯示數據,具體屬性和方法如圖4所示。
FriendController主要用發來接收來自好友相關頁面中提交的表單或鏈接請求,并將請求的參數傳遞到Controller中對應的方法中,并獲取到業務處理層層中返回的數據,攜帶數據響應給瀏覽器,在瀏覽器端顯示數據,具體屬性和方法如圖所示。
AdminController主要用發來接收來自管理員相關頁面中提交的表單或鏈接請求,并將請求的參數傳遞到Controller中對應的方法中,并獲取到業務處理層層中返回的數據,攜帶數據響應給瀏覽器,在瀏覽器端顯示數據,具體屬性和方法如圖所示。
4.1.3 業務邏輯類
在Service層中主要包含四個Service接口和他們的實現類,包括IUserService用來處理用戶業務例如用戶注冊、登陸、修改個人信息等,如圖4.6所示。IWeiboService用來處理微博相關的業務例如查找微博,發布微博,刪除微博以及對微博的相關操作例如點贊、評論等功能的業務實現,如圖4.7所示。IFriendService用來處理和用戶好友相關的業務例如點贊、取消點贊、私信、拉黑等功能的業務實現,如圖4.8所示。IAdmoinService用來處理和管理員相關的業務例如管理員登陸、圖表展示、用戶管理、微博管理、海螺管理功能的業務實現,如圖4.8所示。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-pw1AXwVk-1612609849792)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5C704a6a3d67d35fd625557518f55b2f16.png)]
圖4.6用戶業務處理類圖
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-y78p1VNb-1612609849794)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5C85b29da71ad0f4b22e30855bc596b0db.png)]
圖4.7微博業務處理類圖
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-7iZGtak2-1612609849799)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5C19977a5b1384fe7d180d242be7f66346.png)]
圖4.8微博控制器類圖
4.1.4 數據庫交互類
由于系統采用了MyBatis持久化框架,開發人員不需要關注和數據庫之間具體的JDBC代碼,而只需要處理業務邏輯,因此只需要在Dao層接口中聲明方法而不需要寫接口的實現類來實現方法,則是通過配置對應的配置文件,在配置文件中編寫對應接口方法中的SQL語句和數據庫交互。
4.2 關鍵業務設計
4.2.1 登陸系統
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ZB7k0d6m-1612609849801)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5C87419f8e59c7bf29568cf25cd3e7860c.jpg)]
圖4.9系統登錄順序圖
用戶進入主頁后,可以在左邊選擇注冊用戶,或者在右邊登陸系統,在注冊模塊,用戶輸入用戶郵箱,密碼,昵稱等信息,當用戶輸入郵箱后會通過Ajax將用戶輸入的郵箱傳到后臺,查找用戶郵箱是否已經被注冊,如果被注冊則在頁面提示用戶該郵箱已被注冊,在輸入基本信息點擊注冊后,保存用戶注冊信息。
**登陸功能:**當用戶輸入郵箱地址和密碼后,如果點擊下次自動登陸密碼在點擊登陸后,判斷用戶的當前登陸時間和上次登陸時間是否為同一天,如果不是同一天則為用戶增加登陸的 積分,然后跳轉至微博首頁。
4.2.1 用戶信息系統
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-yFAdrHEE-1612609849803)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5Ce791fe0e70d39475446a79dd88e628c4.jpg)]
圖4.10用戶修改信息順序圖
**用戶基本信息:**在系統的首頁中點擊個人賬號設置后,跳轉到修改用戶基本信息頁面,用戶可以修改這些基本信息,并將修改后的信息保存在數據庫中。
**修改密碼:**在用戶個人資料頁面點擊修改密碼,跳轉修改密碼頁面,用戶可以輸入用戶的當前密碼,系統判斷密碼是否正確,如果密碼不正確,顯示當面密碼錯誤,如果輸入密碼正確,用戶則可以輸入新密碼,點擊修改后將修改后的密碼更新到數據庫中。
**修改用戶頭像:**點擊用戶個人資料中修改頭像,跳轉至修改頭像頁面,用戶選擇頭像文件,點擊上傳,將用戶頭像保存在服務器上,判斷用戶之前頭像是為系統默認頭像,如果不是就刪除用戶之前的頭像圖片,點擊修改后將修改后的頭像地址保存在數據庫中。
**修改密保:**用戶先要根據之前設置的密保問題來填寫答案,如果密保答案錯誤,提示用戶密保答案錯誤,如果密保答案正確,用戶可以輸入新的密保問題和密保答案,點擊修改保存用戶新的密保問題和答案。
4.2.2微博模塊
圖4.11系統登錄順序圖
**發布微博:**用戶可以在首頁發布微博,在微博信息中可以插入表情,也可以選擇插入一張圖片,當用戶點擊發布后,瀏覽器發送請求將前臺頁面表單中微博信息和圖片信息傳入后臺控制器,將圖片信息保存在服務器中,在數據庫中只保存圖片路徑,最后將微博信息保存在數據庫中。
**搜索微博:**用戶可以在首頁的搜索框中輸入微博中提到的內容來搜索,系統在數據庫中通過迷糊查詢查詢相關的微博信息。在頁面中將搜索到的頁面展示出來,并且將關鍵字標紅顯示。
**微博操作:**用戶可以查看個人微博、好友微博、收藏微博等信息,對微博的操作有點贊,轉發,收藏,評論,刪除等。
4.2.3 好友模塊
**關注功能:**當用戶登陸系統后可以在頁面右側的推薦用戶中選擇需要關注的用戶,或者是通過頁面中的搜索功能來搜索用戶,對搜索到的用戶進行關注。關注用戶后個人關注+1,同時被關注用戶粉絲數+1。
**取消關注:**和關注功能類型,在導航欄中點擊我的好友,在我的好友首頁中查看我的關注好友,就能查看到我所關注的所有好友和好友數以及他們的個人信息,通過點擊對應的取消關注就可以取消關注該用戶,取消關注用戶后個人關注數-1,同時被關注用戶粉絲數-1。
**拉黑用戶:**即修改好友表中對應的記錄狀態,被拉黑用戶所發布的私信和微博信息不會被拉黑用戶所看到。
**私信:**可以在頁面的推薦用戶上面查看當前登陸用戶的未查看私信數,未讀私信的數目通過數據庫中對所有接收者為當前登陸用戶的所有私信信息,且信息狀態為未閱讀的私信,將得到的數值展示在前臺頁面中顯示。
**發送私信:**用戶先選擇要發送的用戶,輸入需要發送的私信信息,可以在私信中插入表情,點擊發送后會將私信信息發送給對應用戶。同時增加提示該用戶的未讀私信數。
**搜索用戶:**在搜索用戶頁面中,用戶可以輸入用戶昵稱的關鍵字來模糊查詢相關用戶,并將查詢到的用戶展示在頁面中,同時將用戶輸入的關鍵字標紅顯示。
**用戶主頁面:**在頁面中,點擊任意一個用戶的名稱或頭像都會跳轉至對應用戶的個人主頁,用戶的個人主頁顯示用戶的個人信息和用戶最近發布的微博,按照時間倒序排列,用戶也可以對微博的點贊、轉發、評論、收藏做操作。
4.2.4 海螺模塊
**發布:**用戶通過點擊導航欄中的神奇海螺進入海螺主頁,在海螺頁面的上面是發布海螺的問題框,下面的可以插入的表情按鈕和問題的懸賞積分數,中間的導航欄可以選擇查看最新發布、已解決、待解決、我的海螺不同的篩選條件。
**查看海螺問題:**用戶點擊任意海螺問題,系統跳轉到展示海螺的具體信息的頁面,上方展示發布用戶的用戶名、用戶稱號、發布日期、海螺問題、懸賞積分、問題的狀態等,在中間顯示問題的所有回復信息,回復人的用戶名、稱號、回答內容、回復日期,是否被采納等。
**回答海螺問題:**在海螺問題詳細詳細信息頁面的底部可以回答海螺問題,在輸入框中輸入回復的答案,插入表情信息等,點擊回復后將回復信息保存在數據庫中。
**采納問題答案:**在海螺問題首頁,用戶通過點擊我的海螺問題可以跳轉至用戶自己所發布的海螺問題頁面,在自己所發布的海螺問題頁面中可以選擇自己認為最正確的答案,點擊采納后修改海螺狀態,被采納的答案變為采納答案,增加采納者的海螺積分。
4.2.5 后臺管理員模塊
**管理員登陸:**管理員可以通過在登陸頁面中點擊管理員登陸,跳轉至管理員登陸頁面。當管理員輸入賬號信息和密碼信息后,如果用戶名和密碼正確就跳轉到管理員首頁。如果錯誤則給出提示。
**管理員首頁:**在管理員首頁中上方顯示導航欄,在頁面內容方面,通過四張圖表來顯示微博、用戶、評、海螺、評論、回答等的總數以及當月數,在下方的柱狀圖中則顯示距離今天最近的7天的數目。
**用戶管理首頁:**在頁面上方顯示導航欄,頁面內容中顯示所有用戶的編號、郵箱、昵稱、注冊日期、上次登陸日期以及用戶的狀態,由于考慮到用戶數量多以以及為了方便查找,因此在頁面中一次顯示10條用戶數據,同時添加用戶搜索功能,用戶能夠在輸入用戶昵稱的關鍵字后來搜索用戶,并且支持迷糊查詢。 搜索用戶:在用戶管理頁面輸入用戶昵稱中的關鍵字來搜索用戶,系統會將獲取到的用戶信息中昵 稱為輸入關鍵字的那部分顯示為紅色。
**用戶封禁:**管理員可以通過點擊用戶管理頁面操作一欄中的封禁按鈕來對違規用戶的封禁,管理員可以輸入封禁的天數,那么在這個日期之前,用戶是不能正常登陸的,管理員也可以通過點擊解封來提前解除封禁用戶的操作。
**微博管理首頁:**管理員點擊導航欄中的微博管理,系統會跳轉至用戶微博管理頁面,顯示系統中所用是微博信息,管理員也可以通過輸入微博內容中的關鍵字來搜索微博,同時可以刪除有不良信息的微博,或是恢復以被刪除的微博。
**微博搜索:**管理員可以通過輸入微博內容中的關鍵字來搜索在微博中存在該關鍵字的微博,搜索到的微博內容中的關鍵字會使用紅色標注出來。
**微博刪除:**在微博管理頁面中,管理員可以根據微博的內容來判斷微博是否違法等信息,如果微博信息中包含不良信息,管理員可以通過操作欄中的刪除按鈕來刪除微博或者可以對已經刪除的為微博做恢復操作。
**海螺管理首頁:**管理員點擊導航欄中的海螺管理可以跳轉至海螺管理頁面,在頁面的上方為導航欄,頁面內容則顯示所有的海螺信息、海螺搜索框、以及下方的分頁框,海螺信息包括編號、發布人名稱、海螺的內容、發布日期、海螺狀態以及可以執行的操作。
**海螺搜索:**在海螺管理首頁中,考慮到海螺數量多不好查找的問題,因此設置了搜索功能,管理員可以能夠在海螺搜索框中輸入海螺內容中的關鍵字來搜索海螺問題,在展示搜索到的結果時會將搜索關鍵字使用紅色標注出來,方便查看。
4.3 數據庫設計
4.3.1 概述
微博系統數據庫表主要包括:
- **1. 用戶表:**用來保存用戶的個人信息,例如編號、昵稱、姓名、密碼。郵箱等信息,以用戶編號作為主鍵,如表4-1
- **2. 微博關注表:**用來保存用戶的關注用戶信息,以關注ID作為主鍵,如表4-2所示
- **3. 微博表:**用來保存微博信息,例如微博發布時間,微博內容,微博點贊,轉發,收藏數等,以微博編號作為主鍵,如表4-3所示
- **4. 微博收藏表:**用來保存用戶收藏的微博信息,如微博編號,收藏時間等,以收藏編號作為主鍵,如表4-4所示
- **5. 評論表:**保存微博的評論消息,例如評論人編號、評論日期、評論內容等,以評論編號作為主鍵,如表4-5所示
- **6. 積分表:**用來保存用戶獲取積分的方式,例如通過每天的登陸發布微博等獲取積分,以積分編號作為主鍵, 如表4-6所示
- **7. 點贊表:**用來保存微博的點贊信息,主要包括點贊人編號,點贊編號,點贊微博編號等信息。以點贊編號作為主鍵,如表4-7所示
- **8. 積分流水表:**用來保存用戶獲取積分的信息,主要包括積分編號、用戶編號、獲取日期等信息,以積分編號作為主鍵,如表4-8所示
- **9. 轉發表:**用來保存用戶轉發的信息,主要有轉發編號、轉發人、微博編號等信息,以轉發編號作為主鍵,如表4-9所示
4.3.2 概念設計
一個用戶可以發布多條微博,因此用戶表和微博表之間存在一對多的關系如圖4.12所示。
一條微博可以對應多個點贊、轉發、收藏和評論,因此微博表和收藏、點贊、轉發、收藏表之間存在一對多的對應關系,如圖4.13所示。
一個用戶可以發布多個海螺,每個海螺問題可以對應多條評論。如圖4.14所示。
4.3.3 數據庫表
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-f1AUL8M2-1612609849820)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5C7542e1611edea5f15b0b4a9b89107903.jpg)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-1btDDO46-1612609849825)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5C68df0663c3fb5a3aa28fde3a10fbbf32.jpg)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-76JvZKuY-1612609849827)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5C9ac425515c71cfe10f5ff0083a6cbd4d.jpg)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-P39xadG1-1612609849829)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5Cd108464d1ed1b96b3ffedcbd0c563b53.jpg)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-B0K3w3Cg-1612609849832)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5C926ac9066cf1a4240a32d5cdf5a5b3f4.jpg)]
第五章 系統功能實現
5.1 登陸系統
在系統登陸注冊頁面當用戶輸入郵箱后會通過Ajax將用戶輸入的郵箱傳到后臺控制器,調用Service層中對應的方法,是Service方法中調用Dao層接口查找用戶郵箱是否已經被注冊,如果被注冊則通過前臺javaScript顯示在頁面提示用戶該郵箱已被注冊,在輸入基本信息點擊注冊后,將會把用戶輸入的注冊信息通過瀏覽器發送請求到后臺控制器中,控制器控制請求的轉發頁面和將用戶注冊信息傳給Service,在Service中初始化用戶的一些基本信息,例如默認頭像、默認狀態、初始化用戶積分等操作,組裝用戶數據源,調用Dao層方法保存用戶注冊信息如圖5.1所示。核心代碼如下:
**登陸功能:**如果點擊下次自動登陸密碼在點擊登陸后,先將用戶名和密碼信息傳遞到Service層做業務處理,再調用Dao層接口判斷郵箱地址和密碼信息是否正確,如果正確并且點擊了下次登陸,就將郵箱名和密碼保存在瀏覽器Cookie中,將登陸用戶保存在Session中,在處理用戶登陸的Service中判斷用戶的當前登陸時間和上次登陸時間是否為同一天,如果不是同一天則為用戶增加登陸的積分,修改用戶數據庫中的積分數,然后跳轉至微博首頁,如圖5.2所示。核心代碼如下:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Wo4HTrH3-1612609849841)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5C3caf2153fe408ca66a4c71ad30ec1fc6.jpg)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-NOXWmWIV-1612609849842)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5C7698f61251a6a0194a223ad022a9daaf.jpg)]
5.2 用戶信息系統
**用戶基本信息:**如圖5.3所示當用戶點擊修改后瀏覽器會提交form表單,發送請求攜帶用戶基本信息到SpringMVC的控制器中接收請求,并把form表單中的數據組裝成User對象,作為參數傳入Service層中對應的方法進行處理,調用Dao層接口修改用戶的基本信息,并修改當前服務器中Session中的User對象信息。核心代碼如下:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-V6OZXzTG-1612609849846)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5C3f0b6d213fb915a2f86869ff22cad558.jpg)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-VpcF3Veu-1612609849849)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5C5b54107969ac081b904c6e6f8bbf697d.jpg)]
**修改密碼:**在用戶個人資料頁面點擊修改密碼,將會跳轉至如圖5-4所示的修改密碼頁面,用戶可以輸入用戶的當前密碼,前臺頁面通過Ajax發送異步請求,后臺控制器接收請求,從數據庫中獲取用戶當前密碼是否正確,如果密碼不正確,在前臺頁面中通過javaScript動態提示給用戶當面密碼錯誤,如果輸入密碼正確,用戶則可以輸入新密碼,確認新密碼,點擊確認修改后瀏覽器提交form表單,將用戶新密碼傳給后臺Service層中對應的方法,在Service的方法中調用Dao層接口更改數據庫中的用戶密碼,更改服務器Session中的用戶信息。核心代碼如下:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-I1gTHbcm-1612609849850)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5C0dec3a8a84c45688860dd59aa63e5965.jpg)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-oLJ9CBem-1612609849853)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5Cd0dd77d8b83362554fdc8c3ea6585e80.jpg)]
**修改用戶頭像:**點擊用戶個人資料中修改頭像,將會跳轉至如圖5.5所示的修改頭像頁面,用戶選擇頭像文件,點擊上傳,form表單將圖片傳到后臺控制器中,將用戶頭像保存在服務器上,判斷用戶之前頭像是為系統默認頭像,如果不是就刪除用戶之前的頭像圖片,并將用戶新的頭像地址保存在用戶信息中,傳入Service中調用Dao層接口修改數據庫中用戶的頭像信息。核心代碼如下:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-YNvkc7nE-1612609849855)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5C793202a82ae20851ff4ae940e43b85a0.jpg)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-PcV6KfPO-1612609849858)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5Cfec3f3655965e9d9a64e50380bb1c380.jpg)]
**修改密保:**當用戶點擊修改密保頁面時瀏覽器跳轉至修改密保頁面如圖5-6所示,用戶先要根據之前設置的密保問題來填寫答案,前臺頁面通過Ajax將用戶輸入的密保答案傳入后臺控制器,與數據庫中用戶的密保問題答案做判斷,如果密保答案錯誤,在頁面上通過javaScript展示用戶密保答案錯誤,如果密保答案正確,用戶可以輸入新的密保問題和密保答案,點擊修改提交form表單后,瀏覽器發送請求在后臺數據庫中修改用戶的密保問題和答案。核心代碼如下:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-BPXB1dBv-1612609849861)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5Cfc568edbca71f458789375f54ad0052e.jpg)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-bY9JLtGj-1612609849863)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5Cfa6f203a0c2eb6d5e4fcaec6b846a8d6.jpg)]
5.3 微博模塊
**發布微博:**在用戶主頁如圖5.7所示,用戶可以發布微博,在微博信息中可以插入表情,也可以選擇插入一張圖片,在前臺頁面中,表情使用javaScript動態生成div標簽并顯示在頁面上,當用戶點擊發布后,瀏覽器發送請求將前臺頁面表單中微博信息和圖片信息傳入后臺控制器,將圖片信息保存在服務器中,在數據庫中只保存圖片路徑,從Session中獲取當前登陸用戶,組裝微博數據源,將數據源傳入Service中,調用Dao層接口將微博信息保存在數據庫中。核心代碼如下:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-o42wLfGW-1612609849865)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5C8032b1a56c145293643bd399c8217083.jpg)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Qf2oZuKO-1612609849867)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5C2e548aa4ab74bd685a3e750d0e4e8aad.jpg)]
**搜索微博:**如圖5.8所示,在微博首頁搜索框輸入關鍵字點擊搜索提交form表單,瀏覽器發送請求將關鍵字傳到后臺控制器中,在數據庫中通過迷糊查詢查詢相關的微博信息。在Service層中具體方法中調用Dao層接口獲得相關的微博信息,遍歷集合,組裝微博的基本信息和發布人對象,將微博中表情轉換成對應的gif圖片,調整微博時間格式為對應格式,修改微博內容中搜索關鍵字為紅色顯示,將修改好的數據返回到前臺頁面展示,如圖5.9所示。核心代碼如下:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Xt3yUCl4-1612609849869)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5C1660ab1fd078e3a1afc22f528cd12d9a.jpg)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-aRuzMAEi-1612609849871)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5C28a33dbce2f736d907c29365a2543ad9.jpg)]
**微博操作:**點擊微博的點贊,轉發和收藏功能類型,通過Ajax將微博id提交請求到后臺控制器,從Session中獲取登陸用戶的信息,傳遞參數到Service對應的方法中通過對微博不同的操作調用對應的Dao層接口將微博的點贊,轉發和收藏信息保存在數據庫中。點擊評論后通過前臺頁面的點擊事件跳轉至JavaScript中通過Ajax發送異步請求到后臺控制器中,將微博id傳遞到Service層中對應的方法中嗲用Dao層接口查找數據庫中對應微博編號的評論信息,微博評論的分頁通過對應的PageBean類控制,在數據庫層通過SQL語句來控制分頁要顯示的條數,在控制器中傳遞json數據到前臺頁面展示。在評論信息的最后面可以發布用戶自己的評論,可以添加表情,點擊發表將form表單提交到后臺控制器中,在后臺代碼中調用Dao層接口保存用戶的評論信息。如圖5.10所示。核心代碼如下:
**個人微博:**如圖5.11所示:在頁面上方導航欄可以點擊進入用戶個人主頁查看我的微博,在頁面中頁面上方展示導航欄,下面顯示用戶的基本信息,中間顯示用戶所發布過的微博,點擊微博插入的圖片還可以通過JavaScript將圖片放大,在頁面的右側展示系統為用戶推薦的好友。點擊我的微博按鈕后發送的請求會被后臺控制器接收,從服務器Session中獲取當前登陸用戶的用戶id,傳入Service層,在Service層中調用Dao層接口從數據庫中獲取當前登陸用戶的微博信息組裝成List集合,遍歷List集合,更改微博數據源的日期格式,調用工具類將微博正文中的表情替換成對應的圖片信息,在微博的分頁中,使用了Oralce數據庫中的偽列來獲取對應區間的微博信息,實現數據庫層的分頁,將所有需要在頁面上展示的數據傳遞給控制器,控制器再將數據封裝在Response響應中傳遞到前臺頁面。核心代碼如下:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-7lVxh8Pt-1612609849880)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5C0c236502b25c3b35ee58429cd4e57524.jpg)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ehIfIQqy-1612609849882)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5Cbd5263668e0e9b3eb965bdc4ebee6650.jpg)]
5.4 好友模塊
**查看好友微博:**通過點擊頁面導航欄中我的好友來跳轉至好友微博頁面,在后臺控制器中先從Session中獲得當前登陸用戶的id值,傳遞給Service,在Service中調用Dao層方法先在數據庫的好友表中查找對應用戶的所有好友信息,然后再在數據庫微博表中查看這些好友對應的微博信息按照微博發布時間倒序排列,將所有查找到的微博信息和發布用戶信息封裝成List集合,遍歷List集合修改微博日期各式,微博表情字符轉換為對應圖片名稱,將加工過后的集合傳遞給控制器,控制器將所有的組裝好的數據響應到前臺頁面中,在前臺頁面中通過C標簽遍歷List展示微博數據如圖5.12所示。核心代碼如下:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-cZuzVutt-1612609849885)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5C3a0936a034628035e660493eb51a31ac.jpg)]
**關注功能:**當用戶登陸系統后可以在頁面右側的推薦用戶中選擇需要關注的用戶,點擊關注后前臺頁面通過Ajax技術發送異步請求將被關注用戶的用戶id發送到后臺控制器中,在控制器中獲取Session中的登陸用戶信息,將登陸用戶的id和被關注用戶的id傳給Service層中對應的方法,在Service層對應的方法中做處理,組裝好友信息數據源,調用Dao層接口保存用戶的關注信息,同時更新用戶的關注數,更新被關注用戶的粉絲數,然后在前臺頁面中通過javaScript將頁面文本信息關注修改為已關注。核心代碼如下:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-hHgKk2Ty-1612609849886)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5C1c0708de7ede9089d073b545298b8726.jpg)]
**取消關注:**和關注功能類型,在導航欄中點擊我的好友,在中間點擊關注,就能查看到我所關注的所有好友和好友數以及他們的個人信息,如圖5.13所示,點擊取消關注,通過Ajax將好友id傳遞到后臺控制器中,在控制器中獲取請求中的用戶信息,將好友id和用戶id傳入Service層中對應的方法,調用Dao層接口將對應用戶id和好友id的好友信息刪除掉,同時更改用戶的關注數和被關注用戶的粉絲數。然后返回響應在前臺頁面刷新好友列表。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-vtHEZLrW-1612609849889)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5Ce16042a79952c220749eb10f2eeeb4df.jpg)]
**拉黑用戶:**和取消關注用戶類似,只是在Dao層接口中,不是刪除已有的用戶記錄而是邏輯刪除,即修改好友表中對應的記錄狀態,被拉黑用戶所發布的私信和微博信息不會被拉黑用戶所看到。核心代碼如下:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Way8VrKJ-1612609849892)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5Cf1c415864eadda4c5031ec615213648a.jpg)]
**私信:**可以在頁面的推薦用戶上面查看當前登陸用戶的未查看私信數,如圖5.14所示,未讀私信的數目通過數據庫中對所有接收者為當前登陸用戶的所有私信信息,且信息狀態為未閱讀的私信,將得到的數值傳遞給前臺頁面,前臺頁面中所有展示的數值通過EL表達式從服務器發送回來的響應中獲取。點擊未讀私信或者通過圖5.13中顯示的好友列表中的私信按鈕,跳轉至用戶私信頁面。核心代碼如下:
**查看私信:**如圖5.15所示,用戶通過點擊私信關注好友時,通過后臺控制器跳轉至我的私信用戶頁面,頁面左側顯示和該用戶最近的私信信息,頁面右側顯示所有有過私信的用戶列表,點擊列表中的用戶就可以直接私信這個用戶,在私信中允許插入表情。在后臺代碼中,將要發送私信的用戶id和從Session中獲取的登陸用戶id傳遞到Service層中對應的方法,調用Dao層接口在數據庫中查找與該用戶相關的所有私信記錄同時修改和該用戶的所有私信狀態為以閱讀,將獲取的記錄組裝到集合中,遍歷集合調用工具類修改私信的日期格式和文本中的表情格式,同時從數據庫中獲取和當前登陸用戶有過私信記錄的所有用戶,將組裝好的集合返回給控制器,控制器將數據響應給前臺頁面中,遍歷集合中的數據,展示在前臺JSP頁面中。核心代碼如下:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-L43uCuZV-1612609849901)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5C6da574893625474090a85acab33eb0c1.jpg)]
**發送私信:**用戶先選擇要發送的用戶,輸入需要發送的私信信息,可以在私信中插入表情,點擊發送后會提交form表單,瀏覽器發送請求到后臺控制器中,控制器獲取發送用戶的id和接收用戶的id,調用Service層中的方法,組裝數據源為私信信息,設置私信信息為未閱讀狀態,在Service層中對應的方法中調用Dao層接口將私信信息保存在數據庫中。核心代碼如下:
**搜索用戶:**在搜索用戶頁面中,用戶可以輸入用戶昵稱的關鍵字來模糊查詢相關用戶,當用戶輸入要查詢的用戶昵稱,瀏覽器發送請求攜帶關鍵字等信息跳轉至控制器中特定的方法,在控制器方法內部調用Service中的方法處理邏輯,業務層調用Dao層接口中的查找方法查找用戶昵稱中包含有關鍵字的用戶,將從數據庫獲得的對應用戶組裝成一個集合,遍歷集合將用戶昵稱中包含的關鍵字改成紅色,控制器返回響應跳轉到搜索結果頁面,遍歷集合展示所有查找到的用戶信息。如圖5.16所示。核心代碼如下:
**用戶主頁面:**在頁面中,點擊任意一個用戶的名稱或頭像都會跳轉至對應用戶的個人主頁,用戶的個人主頁顯示用戶的個人信息和用戶最近發布的微博,按照時間倒序排列,用戶也可以對微博的點贊、轉發、評論、收藏做操作。在后天代碼中,當用戶點擊其他用戶的頭像或名稱時,瀏覽器發送攜帶用戶id的請求到后臺控制器中。控制器調用Service中對應的方法,在Service方法中調用Dao層接口從數據庫中查看用戶的基本信息和用戶的微博信息,將所有的數據存放在集合中。返回到控制器中,控制器攜帶數據返回到前臺頁面中做展示,如圖5.17所示。核心代碼如下:
5.5 海螺模塊
**發布:**當用戶進入海螺主頁時,瀏覽器頁面發送請求到后臺控制器中,調用業務層中特定的方法,Service中調用Dao層接口在數據庫中查找有關不同篩選條件的海螺問題,并將查找到的問題封裝在集合中,通過控制器發送服務器響應,跳轉到海螺首頁,并循環展示所有的海螺問題。如果用戶需要發布問題,在填寫了問題描述和所要懸賞的積分數后,點擊發布,瀏覽器提交表單數據到后臺控制器中,在Service層中首先判斷用戶的海螺積分是否大于懸賞積分,如果小于懸賞積分就返回瀏覽器頁面提示用戶積分不足。如果積分足夠就調用Dao層接口把用戶的海螺問題保存在數據庫中,同時減少用戶的海螺積分修改用戶基本信息。核心代碼如下:
**查看海螺問題:**用戶點擊海螺首頁具體的問題時,瀏覽器發送請求給后臺控制器中調用Service層對應的方法,在Service層中調用Dao層接口通過海螺問題的編號來查看海螺的具體信息,通過發布問題的用戶id在數據庫中查找對應的發布人信息,服務器返回響應到瀏覽器中,展示海螺的具體信息,上方展示發布用戶的用戶名、用戶稱號、發布日期、海螺問題、懸賞積分、問題的狀態等,在中間顯示問題的所有回復信息,回復人的用戶名、稱號、回答內容、回復日期,是否被采納等,如圖5.19所示。核心代碼如下:
**回答海螺問題:**在海螺問題詳細詳細信息頁面的底部可以回答海螺問題,在輸入框中輸入回復的答案,插入表情信息,點擊回復提交表單,瀏覽器請求攜帶表單數據到后臺控制器中,被控制器中具體的方法接收,獲取Session中的用戶編號,組裝回復信息的數據源,傳遞參數到Service中,在Service中調用Dao層接口保存海螺的回復信息,如圖5.20所示。核心代碼如下:
**采納問題答案:**在海螺問題首頁,用戶通過點擊我的海螺問題可以跳轉至用戶自己所發布的海螺問題頁面,在自己所發布的海螺問題頁面中可以選擇自己認為最正確的答案,被采納的答案變為采納答案,增加采納者的海螺積分,如圖5.21所示,在后臺代碼中,當用戶點擊采納后,瀏覽器請求攜帶海螺問題id和問題回復信息被后臺控制器中具體的方法接收,在控制器中調用Service層,業務層中調用Dao層接口修改數據庫中海螺問題的狀態為已解決,修改評論表中被采納用戶的評論狀態為被采納,刷新前臺海螺問題頁面。核心代碼如下:
5.6 后臺管理員模塊
**管理員登陸:**管理員可以通過在登陸頁面中點擊管理員登陸,跳轉至管理員登陸頁面如圖5.22所示,管理員登陸后,頁面發送請求到后臺控制器中,后臺Controller層接收請求,將用戶名和密碼作為參數調用業務層中的方法,在Service層中調用Dao層接口和數據庫中管理員賬號表中查詢,如果存在就返回管理員類,如果不存在,則拋出異常,異常層層上拋,在控制器層中接收,并將錯誤信息保存在方法的返回值中,在頁面提示,如果用戶名和密碼正確,就跳轉到Controller中管理員首頁的處理方法中,在管理員首頁的處理方法中獲取需要顯示的數據并展示。核心代碼如下:
**管理員首頁:**登陸后,系統會跳轉到管理員首頁,在首頁中上方顯示導航欄,在頁面內容方面,通過四張圖表來顯示微博、用戶、評、海螺、評論、回答等的總數以及當月數,在下方的柱狀圖中則顯示距離今天最近的7天的數目。后臺首先在Controller層中跳轉至管理員首頁對應的處理方法中,調用Service層中對應的方法獲取首頁展示數據,并將獲取到的數據組裝到Map集合中,在服務層中調用Dao層中的方法來獲取首頁需要展示的用戶、微博、評論、回答等數據保存在Map集合中,在控制層中獲取到返回值數據并保存在服務器響應中,返回給前臺頁面使用EL表達式展示數據,如圖5.23所示。核心代碼如下:
**用戶管理首頁:**后臺代碼通過調用Service層中對應的方法,Service方法里面則調用Dao層接口和數據庫交互,獲取數據庫中所有的用戶信息封裝成List集合,返回給Controller層將用戶List集合響應給瀏覽器,在頁面中通過c標簽遍歷循環顯示用戶信息,頁面的分頁使用自定義分頁類PageBean來保存分頁信息,在數據庫層做分頁一次獲取10條數據。核心代碼如下:
**搜索用戶:**在用戶管理頁面輸入用戶昵稱中的關鍵字來搜索用戶,系統會將獲取到的用戶信息中昵稱為輸入關鍵字的那部分顯示為紅色。在后臺代碼中,點擊搜索會將管理員輸入的用戶昵稱關鍵字傳給后臺控制器中,在控制器中調用Service層中對應的搜索用戶的方法,在Service層中調用Dao層接口在數據庫中通過迷糊查詢來獲取用戶。并將獲取到的數據層層返回,在Controller中響應給前臺頁面,然后在頁面中做展示,如圖5.25所示。核心代碼如下:
**用戶封禁:**管理員可以通過點擊用戶管理頁面操作一欄中的封禁按鈕來對違規用戶的封禁,管理員可以輸入封禁的天數,那么在這個日期之前,用戶是不能正常登陸的,管理員也可以通過點擊解封來提前解除封禁用戶的操作,具體頁面如圖5.26所示。在后臺代碼中則是在Service層中調用Dao層接口,更改用戶狀態和封禁日期,解除封禁和封禁用戶類似,因此不做具體說明。核心代碼如下:
**微博管理首頁:**管理員點擊導航欄中的微博管理,系統會跳轉至用戶微博管理頁面,顯示系統中所用是微博信息,管理員也可以通過輸入微博內容中的關鍵字來搜索微博,同時可以刪除有不良信息的微博,或是恢復以被刪除的微博,微博管理頁面如圖5.27所示,在后臺代碼中,當用戶點擊導航欄中微博管理時,瀏覽器會發送相應的請求到SpringMVC框架的Controller中對用的更能處理方法中,在控制器中調用Service層中顯示所有微博的方法中,在Service層中再調用Dao層方法獲取所有的微博信息,在分頁方面沒有采用在前端頁面中做分頁的方法,而是在數據庫中通過Oracle的偽列來做分頁,一次獲取10條數據,最后在Controller中將獲取到的微博信息響應給瀏覽器,瀏覽器中通過c標簽遍歷顯示微博信息。核心代碼如下:
**微博搜索:**管理員可以通過輸入微博內容中的關鍵字來搜索在微博中存在該關鍵字的微博,搜索到的微博內容中的關鍵字會使用紅色標注出來,具體頁面如圖5.28所示,在后臺代碼中,控制器中特定的方法接收瀏覽發送的搜索微博請求,調用Service層中對應的方法,將關鍵字作為參數傳給Dao層接口中,在Dao層接口中查找數據庫微博表中微博內容包含該關鍵字的微博信息,在數據庫中則是通過模糊查詢來查找對應微博。然后將查找到微博信息封裝到List集合中,層層返回到Controller層中對應的方法,在方法中將數據響應給瀏覽器,瀏覽器接收響應在頁面中通過c標簽展示數據。核心代碼如下:
**微博刪除:**在微博管理頁面中,管理員可以根據微博的內容來判斷微博是否違法等信息,如果微博信息中包含不良信息,管理員可以通過操作欄中的刪除按鈕來刪除微博或者可以對已經刪除的為微博做恢復操作,當用戶點擊刪除時,頁面會攜帶著微博編號等參數發送請求給服務器,請求會被控制器中對應的方法所接收,將微博編號作為參數嗲用Service中對應的方法,在方法中調用Dao層接口在修改數據庫中對應微博編號的微博狀態為已刪除,恢復微博和刪除類似,只是修改數據庫中對應微博信息狀態為正常即可。核心代碼如下:
**海螺管理首頁:**管理員點擊導航欄中的海螺管理可以跳轉至海螺管理頁面,如圖5.29所示,在頁面的上方為導航欄,頁面內容則顯示所有的海螺信息、海螺搜索框、以及下方的分頁框,海螺信息包括編號、發布人名稱、海螺的內容、發布日期、海螺狀態以及可以執行的操作,在后臺代碼方面,當用戶點擊導航欄中的海螺管理時,瀏覽器發送請求,請求在控制器中被對應的方法接收,Service中調用Dao層接口在數據庫海螺表中查找所有的海螺信息,保存在List集合中,遍歷List集合組裝發布人用戶信息,修改日期格式等,最后將組裝號的List集合返回到Controller中,響應給瀏覽器跳轉海螺管理首頁,通過使用c標簽遍歷顯示查找到的海螺信息,因為系統中使用的分頁方法一致,因此在這里不再贅述。核心代碼如下:
**海螺搜索:**在海螺管理首頁中,考慮到海螺數量多不好查找的問題,因此設置了搜索功能,管理員可以通過在海螺搜索框中輸入海螺內容中的關鍵字來搜索海螺問題,在展示搜索到的結果時會將搜索關鍵字使用紅色標注出來,方便查看。具體頁面如圖5.30所示。在后臺代碼中,當用戶輸入關鍵字點擊搜索時,瀏覽器發送請求到控制器中指定方法接收,在Controller中調用Service層中對應的方法處理業務邏輯,然后在Service層中調用Dao層接口通過模糊查詢在數據庫海螺表中查找對應的海螺信息,最后在Controller中將查找到的海螺信息響應給瀏覽器,在頁面中通過c標簽遍歷展示數據。因為系統使用一樣的分頁方法,因此不做贅述。核心代碼如下:
第六章 總 結
時光荏苒,歲月如梭,轉眼之間為期半年的畢業設計以及論文的編寫終于落下帷幕,回顧畢業設計的每一個階段都使我受益匪淺,在畢設初期,經過了長達一周的深思熟慮之后我決定將B/S微博系統作為我這次畢業設計和論文的選題,因為平時對微博的接觸以及近幾年微博的火熱程度,使我對微博系統的具體功能和優缺點都有了一個全體的把控,這也使得在之后系統功能設計時能夠更加的得心應手,在畢業設計中期時進入代碼編寫階段時,我選擇了J2EE體系開發Web項目的B/S微博,使用面向對象語言JAVA作為開發語言,使用個人熟練掌握的SSM框架來搭建系統,SSM框架強大的功能減少了大量的冗余代碼,使得系統代碼的編寫更加輕松,提高了系統的開發效率,然而開發一個系統并不是那么簡單就能完成,在代碼的編寫階段,問題接連出現,但在指導老師的指導下以及自己通過網上查閱資料,最終解決了這些問題,提高了自己代碼的編寫能力,同時也提高了自我學習能力,這對以后的生活學習和工作中都有著非同尋常的意義,在項目編寫完成后的測試階段,之前在編寫階段沒有被發現的系統缺陷逐漸躍出水面,在每一次修復這些問題的時候,我都能感覺到自己的能力在慢慢提高,一個沒有缺陷的系統是不存在的,經過對測試用例中的測試方案一一測試,然后修復掉一個又一個的缺陷后,微博系統中大多數可見性高的BUG都被修復了,但是在之后的使用中還會不斷的完善系統讓它變的更加成熟,而不單單只是作為一份畢設設計而存在。
在這次畢業設計系統的開發中也讓我看到了自身的一些問題,例如前端技術的不熟練導致在前臺頁面的修改和開發中浪費了大量的時間,微博系統中關鍵性的用戶交互不夠美觀,用戶體驗性差,以及在系統類設計時沒能正確的把控全局,設計出合理的接口,只能在后期代碼編寫階段中不斷的去完善。
總而言之,在對微博系統的開發中,我學習到了很多以前沒有注意到和忽略到的東西,也使我認識到了自身的一些缺陷,讓我在以后的生活和工作中都能更好的認識自己,提高自己的能力,然后服務于社會,做一個對社會發展有幫助的人。
參考文獻
[1] 賈文瀟,鄧俊杰. 基于Java的Web開發技術淺析[J]. 電子測試,2016
[2] 李傳揚. 微博分析系統的設計與實現[D]. 北京郵電大學 2015
[3] 劉運臣. 網站設計與建設[M]. 清華大學出版社, 2008
[4] 秦雅華. 基于WEB2.0的微博網站的設計與實現[D]. 北京工業大學 2012
[5] 陳玲,夏汛. 利用Mybatis的動態SQL實現物理分頁[J]. 數字技術與應用. 2011(11)
[6] 薩師煊,王珊. 數據庫系統概論(第三版)[M].北京:高等教育出版社,1998
[7] 基于Java的數據庫訪問技術研究[J]. 科技資訊. 2009(04)
[8] 張峰. 基于Ajax技術與J2EE框架的Web應用研究與實現[D]. 中國地質大學 2008
[9] 基于Java多線程技術的網絡編程[J]. 電腦編程技巧與維護. 2009(22)
[10] 李威. 一種小型實用即時網絡聊天通訊系統的設計[J]. 長江大學學報(自然科學版). 2011(12)
[11] 鐘睿祺. 基于微博嵌入小伙伴閱讀網的分析與設計[D]. 華南理工大學 2011
[12] 王少鋒編著.面向對象技術UML教程[M]. 清華大學出版社, 2004
[13] 徐春綿. 關于網站開發相關問題的探究[J]. 通訊世界. 2015(09)
[14] 張宇,王映輝,張翔南. 基于Spring的MVC框架設計與實現[J]. 計算機工程. 2010(04)
[15] 胡以讕,張立平. J2EE開發模式的選擇[J]. 計算機系統應用. 2002(08)
[16] 王麗愛. 《Java程序設計》課程網站的設計與實現[J]. 電腦知識與技術. 2016(27)
[17] 榮艷冬. 關于Mybatis持久層框架的應用研究[J]. 信息安全與技術. 2015(12)
總結
以上是生活随笔為你收集整理的基于SSM框架的BS微博系统的设计与实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: xtrabackup安装使用
- 下一篇: SqlServer图形数据库初体验