劉子凡 郭昱君
DOI:10.19850/j.cnki.2096-4706.2021.08.029
摘? 要:隨著計算機技術的更新發(fā)展,信息技術也產生了革命性的變化,信息的傳播方式開始向網絡化轉變,博客網站在此形勢下應運而生。然而,現(xiàn)有的第三方博客網站存在各種問題,例如網站的廣告多、惡意彈窗等。鑒于此,該文設計了一個小型的個人博客網站,使用的開發(fā)語言為Java,采用后端框架SpringBoot、持久層框架Mybatis、前端框架SemanticUI以及模板引擎Thymeleaf。該博客系統(tǒng)具有簡潔、輕量化的特點,使人們免去了各種廣告、惡意彈窗等煩擾,提供更加方便的博客平臺。
關鍵詞:個人博客;SpringBoot;Mybatis;Thymeleaf
中圖分類號:TP393.092 ? ? ?文獻標識碼:A 文章編號:2096-4706(2021)08-0104-05
Design and Implementation of Personal Blog System Based on SpringBoot+Mybatis
LIU Zifan,GUO Yujun
(School of Computer and Software,Jincheng College of Sichuan University,Chengdu? 611731,China)
Abstract:With the update and development of computer technology,information technology also has a revolutionary change,the way of information dissemination came to the network,blog website came into being in this situation. However,the existing third-party blog websites have various problems,such as more advertisements,malicious pop ups and so on. In view of this,this paper designs a small personal blog website,using Java as the development language,using the back-end framework SpringBoot,persistence layer framework Mybatis,front-end framework SemanticUI and template engine Thymeleaf. The blog system has the characteristics of simplicity and lightweight,so that people can avoid all kinds of advertisements,malicious pop ups and other annoyances,and provide a more convenient blog platform.
Keywords:personal blog;SpringBoot;Mybatis;Thymeleaf
0? 引? 言
隨著互聯(lián)網的快速發(fā)展,信息傳遞的方式也逐漸網絡化,博客網站就是一種用來公布個人消息與實現(xiàn)溝通的專業(yè)網站,提供基本的溝通和個性化設計[1]功能。然而,過于追求商業(yè)化的博客網站卻給用戶帶來了廣告、彈窗的煩擾;另外,過于豐富的功能也使網站變得臃腫,操作起來更加煩瑣,這無形中為那些追求簡潔便利的用戶帶來莫大的困擾。
1? 主要技術介紹
1.1? SpringBoot
SpringBoot是由Pivotal團隊設計開發(fā)的框架結構,通過簡化配置來優(yōu)化Spring應用的搭建和開發(fā)過程。另外,SpringBoot通過集成大量的框架使得依賴包的版本沖突,以及應用的不穩(wěn)定性問題得到很好的解決[2]。
1.2? Mybatis
Mybatis與Hibernate是Java中最常用的兩種ORM框架,其中Hibernate在處理多表關聯(lián)時可能會出現(xiàn)N+1問題,性能會受到很大影響。若要解決性能受影響的問題,需要使用者具備深厚的Hibernate知識基礎和豐富的項目經驗[3]。所以本系統(tǒng)中采用了Mybatis,自己編寫SQL語句,以便具有一定的可控性,并通過簡單的XML或特定注解將Java中的普通對象映射為數(shù)據庫里的記錄。
1.3? Thymeleaf
Thymeleaf是服務于Java的一個模板引擎,能夠處理HTML、JS、XML等,并且不會影響Java原本的表現(xiàn),利用Thymeleaf可極大地提高開發(fā)速度,同時還能完美地實現(xiàn)頁面渲染[4]。
2? 總體設計
本個人博客系統(tǒng)采用B/S架構進行設計,分為游客端和管理員端兩個子系統(tǒng),通過SpringBoot下的MVC分層結構來完成整個項目。游客端子系統(tǒng)主要是針對游客在博客網站的操作,游客通過訪問博客網站來瀏覽博客文章,如果訪客有特殊需求,則可以通過分類、添加標簽等操作進行文章篩選,如果訪客對自己所閱讀的文章有所感悟或者想予評價,那么可以在文章的底部給出留言和評價。管理員端子系統(tǒng)是針對管理員操作,管理員通過登錄自己的賬號進入博客的管理系統(tǒng),在系統(tǒng)里面可以對文章進行增加、刪除、修改、更新操作,同時更新數(shù)據庫里的數(shù)據。
2.1? 前臺功能設計
2.1.1? 首頁文章的分頁功能
游客能夠在網站首頁中瀏覽各式各樣的博客文章,然而由于文章數(shù)量龐大,因此需要有一個分頁的功能,游客通過點擊按鈕的操作可以實現(xiàn)翻頁。通過Thymeleaf技術,給標簽href賦值來接收后臺已經編寫好的數(shù)據。實現(xiàn)代碼為:
;2.1.2? 文章分類查詢功能
游客可以通過點擊分類按鈕,根據需要查找篩選自己感興趣的文章。給type.name賦值為數(shù)據庫里存放的文章類別名的數(shù)據,type.id為文章類別的對應編號,通過文章類別名以及編號來確定該文章的類別,如果點擊某個類別,主界面會顯示該類別的相關文章信息。實現(xiàn)代碼為: th:classappend="${type.id==activeTypeId} ? 'teal'" th:text="${type.name}">java
th:text="${#arrays.length(type.blogs)}">24
2.2? 后臺功能設計
2.2.1? 管理員賬號登錄功能
管理員輸入自己的賬號和密碼登錄后臺管理系統(tǒng),這一功能是通過以Post方式提交from表單來實現(xiàn)的。如果登錄失敗,會顯示賬戶名稱錯誤或密碼錯誤。通過if條件語句判斷管理員的賬號user和密碼password是否為空、是否對應數(shù)據庫的信息等。實現(xiàn)代碼為:
@PostMapping("/login")
public String login(@RequestParam String username, @RequestParam String password,
HttpSession session, RedirectAttributes attributes){
User user = userService.checkUser(username,password);
if (user != null){
user.setPassword(null);
session.setAttribute("user",user);
return "/admin/index";
}else {
attributes.addFlashAttribute("message","用戶名或密碼錯誤");
return "redirect:/admin";
}
};
2.2.2? 文章的管理功能
管理員登錄后臺后,可以對文章進行一系列的操作。對博客文章的新增操作,在前臺提交數(shù)據后,后臺會依次獲取文章名字、文章的類型等,再通過blogService.saveBlog()方法去保存博客。實現(xiàn)代碼為:
blog.setUser((User) session.getAttribute("user"));
blog.setType(typeService.getType(blog.getType().getId()));
blog.setTypeId(blog.getType().getId());
blog.setUserId(blog.getUser().getId());
int b = blogService.saveBlog(blog);
文章刪除功能的實現(xiàn)是通過調用blogService.deleteBlog()方法,查找文章的編號來刪除文章。實現(xiàn)代碼為:
blogService.deleteBlog(id);
attributes.addFlashAttribute("message", "刪除成功");
管理員上傳了文章后想對文章進行更新、修改,以下代碼則為文章的修改功能,調用blogService.updateBlog()方法,重新傳輸修改的數(shù)據。
int b = blogService.updateBlog(showBlog);
if(b ==0){
attributes.addFlashAttribute("message", "修改失敗");
}else {
attributes.addFlashAttribute("message", "修改成功");
};
2.2.3? 文章的分類功能
管理員登錄后臺后,可以對文章內容進行分類操作。例如添加文章類型功能的實現(xiàn)是通過type1獲取類型名字,添加類型的同時增加數(shù)據庫里的信息,并判斷所添加的類型是否有重復。實現(xiàn)代碼為:
Type type1 = typeService.getTypeByName(type.getName());
if (type1 != null) {
attributes.addFlashAttribute("message", "不能添加重復的分類");
return "redirect:/admin/types/input";
}
int t = typeService.updateType(type);
if (t == 0 ) {
attributes.addFlashAttribute("message", "編輯失敗");
} else {
attributes.addFlashAttribute("message", "編輯成功");
};
2.3? 數(shù)據庫設計
為保證網站中的數(shù)據可以正確顯示,需要將不同的數(shù)據類型進行分類。對于不同字段值的設計要夠精準,以免在填寫信息的時候出現(xiàn)數(shù)據添加不正確的情況[5]。這時數(shù)據庫的設計就顯得非常重要。本系統(tǒng)設計了多張表格,各個表之間相互關聯(lián),數(shù)據庫按照三范式進行設計。各個表之間相互關聯(lián),每張表都存儲著用戶的數(shù)據等,以下為表的具體說明:
(1)管理員表。管理員表主要設計的內容包括管理員賬號、管理員密碼、賬號創(chuàng)建時間等字段,其中id為主鍵,管理員表如表1所示。
(2)文章信息表。文章信息表主要設計的內容包括上傳文章的相關信息,例如文章標題、文章上傳時間、文章簡介、文章標簽等字段,其中字段名文章類型為外鍵,文章信息表如表2所示。
(3)文章類型表。文章類型表主要設計的內容包括相關文章的類型名、相關文章所對應的類型編號等字段,文章類型表如表3所示。
3? 系統(tǒng)的具體功能實現(xiàn)
3.1? 博客系統(tǒng)的登錄注銷功能實現(xiàn)
管理員進行登錄操作時,是通過以post方式提交from表單來實現(xiàn)的,提交的數(shù)據在LoginController類進行判斷。首先針對用戶提交的數(shù)據通過if語句進行合法性判斷,判斷其中是否含有非法字符。其次把傳入的用戶名當作參數(shù)調用UserService類的checkUser()方法,如果返回的值為null,就給前端頁面返回“賬號或密碼錯誤!”;如果用戶提交的數(shù)據沒有問題,系統(tǒng)就將用戶的數(shù)據通過Dao層的類存儲到數(shù)據庫中。關于賬號的注銷功能,通過使用session.removeAttribute("user"),對session進行移除就能實現(xiàn)將賬號退出登錄。當管理員成功登錄至后臺后,如果想要退出登錄,只需點擊“注銷”按鈕即可退出賬號并跳轉至登錄頁面。
3.2? 文章的增刪查改功能實現(xiàn)
對于本后臺管理系統(tǒng),雖然可以在數(shù)據庫中進行增刪查改操作,但是不夠方便快捷,所以如何能夠快速簡便地對文章進行增刪查改操作,是本系統(tǒng)的關鍵所在。本系統(tǒng)將利用Mybatis框架對映射文件進行編寫,在根元素
3.3? 文章分類功能的實現(xiàn)
文章分類的功能和文章的管理功能類似,都有增加、刪除、查找、修改等功能,然而兩種功能的不同之處在于,當管理員進行文章的編輯操作時,前端頁面會有單獨的“添加分類”按鈕用于文章分類。點擊分類按鈕時頁面會有彈窗提示分類的名稱,且名稱是通過數(shù)據庫本來的數(shù)據顯示在頁面上,在文章上傳成功后,頁面會有彈窗顯示“上傳成功!”,游客就可以在該分類欄里找到該文章。在前端通過Thymeleaf的標簽 4? 測試及結果 項目完成之后,對本個人博客系統(tǒng)進行了功能性測試。 從網址http://localhost:8080/login進入網站,顯示登錄界面,在界面中輸入賬號密碼,點擊登錄按鈕,登錄成功并跳轉至后臺管理頁面,如圖1、圖2所示。 在搜索框中輸入文章標題或分類,點擊“搜索”按鈕,主界面會顯示文章內容相關信息,再點擊“編輯”按鈕,跳轉至相關文章內容,如圖3所示。 在頁面中點擊“新增”按鈕,跳轉至文章編輯頁面,如圖4所示,進行一系列編輯后,再點擊“發(fā)布”按鈕,頁面會顯示“發(fā)布成功”。 在頁面中點擊“刪除”按鈕,頁面彈出彈窗“確定要刪除嗎?”,點擊按鈕“是”,頁面自動刷新,將不再顯示該文章的信息,如圖5所示。 在頁面中點擊“分類”按鈕,跳轉至文章分類編輯頁面,并通過文本框實現(xiàn)對文章類別的添加操作,再點擊“新增”按鈕,在輸入框中輸入新增的類別,并點擊“提交”按鈕,頁面會顯示“新增成功”,如圖6、圖7所示。 游客訪問前臺時,網頁上會顯示所有文章的信息,并顯示“首頁”“分類”“關于我”等按鈕,點擊文章信息,跳轉至相關文章內容頁面,如圖8所示。 5? 結? 論 綜上所述,本文敘述了基于SpringBoot+Mybatis技術的個人博客系統(tǒng),該系統(tǒng)具有對博客文章的上傳、增加、修改、刪除等功能。SpringBoot框架的“開箱即用”、無須配置等特點為整個項目的快速開發(fā)節(jié)省了大量時間,通過一些美化界面的插件以及前端框架Semantic UI對整個頁面進行進一步的美化,從而達到個人博客系統(tǒng)的簡潔、美觀。 雖然本系統(tǒng)能夠正常運行操作,但是站在更高的角度來看還可以做出相應的完善,由于SpringBoot框架的集成度很高,因此開發(fā)人員對一些底層代碼是不熟悉的,其中比較復雜的函數(shù)方法還需要大量、全面地搜集資料,還有其版本更新迭代快,更新后整個模塊還需要重新學習。對于本系統(tǒng)而言,需要完善的地方是尚未實現(xiàn)將系統(tǒng)部署在服務器上,游客的訪問只能從本地IP登錄,具體功能方面就是游客對博客進行評論、打賞的功能并未實現(xiàn),在以后的學習中,還需要積累知識,融會貫通,不斷地改進和完善項目。 參考文獻: [1] 余思源,張偉.基于JAVA的個人博客系統(tǒng)的設計與實現(xiàn) [J].電腦知識與技術,2018,14(17):135-137. [2] 鄧笑.基于Spring Boot的校園輕博客系統(tǒng)的設計與實現(xiàn) [D].武漢:華中科技大學,2018. [3] 陳玲,夏汛.利用Mybatis的動態(tài)SQL實現(xiàn)物理分頁 [J].數(shù)字技術與應用,2011(11):227. [4] 唐煒.Spring Data、MongoDB、Thymeleaf的數(shù)據持久化方案及分頁技術實現(xiàn) [J].隴東學院學報,2017,28(5):9-13. [5] 陳秋玲.基于JavaWeb的圖書購物網站的設計與實現(xiàn) [J].電腦知識與技術,2019,15(16):36-38. 作者簡介:劉子凡(1999—),男,漢族,四川綿陽人,本科在讀,研究方向:軟件工程;郭昱君(1994—),女,漢族,山西太原人,碩士研究生,研究方向:管理學。 收稿日期:2021-03-14