亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于SpringBoot+Mybatis的個人博客系統(tǒng)設計與實現(xiàn)

        2021-11-03 13:08:59劉子凡郭昱君
        現(xiàn)代信息科技 2021年8期

        劉子凡 郭昱君

        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框架對映射文件進行編寫,在根元素下創(chuàng)建各種子元素。對于增加、刪除、查找、修改文章的功能,分別使用、、