• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

      劉子凡 郭昱君

      DOI:10.19850/j.cnki.2096-4706.2021.08.029

      摘? 要:隨著計(jì)算機(jī)技術(shù)的更新發(fā)展,信息技術(shù)也產(chǎn)生了革命性的變化,信息的傳播方式開始向網(wǎng)絡(luò)化轉(zhuǎn)變,博客網(wǎng)站在此形勢(shì)下應(yīng)運(yùn)而生。然而,現(xiàn)有的第三方博客網(wǎng)站存在各種問題,例如網(wǎng)站的廣告多、惡意彈窗等。鑒于此,該文設(shè)計(jì)了一個(gè)小型的個(gè)人博客網(wǎng)站,使用的開發(fā)語言為Java,采用后端框架SpringBoot、持久層框架Mybatis、前端框架SemanticUI以及模板引擎Thymeleaf。該博客系統(tǒng)具有簡潔、輕量化的特點(diǎn),使人們免去了各種廣告、惡意彈窗等煩擾,提供更加方便的博客平臺(tái)。

      關(guān)鍵詞:個(gè)人博客;SpringBoot;Mybatis;Thymeleaf

      中圖分類號(hào):TP393.092 ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):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)網(wǎng)的快速發(fā)展,信息傳遞的方式也逐漸網(wǎng)絡(luò)化,博客網(wǎng)站就是一種用來公布個(gè)人消息與實(shí)現(xiàn)溝通的專業(yè)網(wǎng)站,提供基本的溝通和個(gè)性化設(shè)計(jì)[1]功能。然而,過于追求商業(yè)化的博客網(wǎng)站卻給用戶帶來了廣告、彈窗的煩擾;另外,過于豐富的功能也使網(wǎng)站變得臃腫,操作起來更加煩瑣,這無形中為那些追求簡潔便利的用戶帶來莫大的困擾。

      1? 主要技術(shù)介紹

      1.1? SpringBoot

      SpringBoot是由Pivotal團(tuán)隊(duì)設(shè)計(jì)開發(fā)的框架結(jié)構(gòu),通過簡化配置來優(yōu)化Spring應(yīng)用的搭建和開發(fā)過程。另外,SpringBoot通過集成大量的框架使得依賴包的版本沖突,以及應(yīng)用的不穩(wěn)定性問題得到很好的解決[2]。

      1.2? Mybatis

      Mybatis與Hibernate是Java中最常用的兩種ORM框架,其中Hibernate在處理多表關(guān)聯(lián)時(shí)可能會(huì)出現(xiàn)N+1問題,性能會(huì)受到很大影響。若要解決性能受影響的問題,需要使用者具備深厚的Hibernate知識(shí)基礎(chǔ)和豐富的項(xiàng)目經(jīng)驗(yàn)[3]。所以本系統(tǒng)中采用了Mybatis,自己編寫SQL語句,以便具有一定的可控性,并通過簡單的XML或特定注解將Java中的普通對(duì)象映射為數(shù)據(jù)庫里的記錄。

      1.3? Thymeleaf

      Thymeleaf是服務(wù)于Java的一個(gè)模板引擎,能夠處理HTML、JS、XML等,并且不會(huì)影響Java原本的表現(xiàn),利用Thymeleaf可極大地提高開發(fā)速度,同時(shí)還能完美地實(shí)現(xiàn)頁面渲染[4]。

      2? 總體設(shè)計(jì)

      本個(gè)人博客系統(tǒng)采用B/S架構(gòu)進(jìn)行設(shè)計(jì),分為游客端和管理員端兩個(gè)子系統(tǒng),通過SpringBoot下的MVC分層結(jié)構(gòu)來完成整個(gè)項(xiàng)目。游客端子系統(tǒng)主要是針對(duì)游客在博客網(wǎng)站的操作,游客通過訪問博客網(wǎng)站來瀏覽博客文章,如果訪客有特殊需求,則可以通過分類、添加標(biāo)簽等操作進(jìn)行文章篩選,如果訪客對(duì)自己所閱讀的文章有所感悟或者想予評(píng)價(jià),那么可以在文章的底部給出留言和評(píng)價(jià)。管理員端子系統(tǒng)是針對(duì)管理員操作,管理員通過登錄自己的賬號(hào)進(jìn)入博客的管理系統(tǒng),在系統(tǒng)里面可以對(duì)文章進(jìn)行增加、刪除、修改、更新操作,同時(shí)更新數(shù)據(jù)庫里的數(shù)據(jù)。

      2.1? 前臺(tái)功能設(shè)計(jì)

      2.1.1? 首頁文章的分頁功能

      游客能夠在網(wǎng)站首頁中瀏覽各式各樣的博客文章,然而由于文章數(shù)量龐大,因此需要有一個(gè)分頁的功能,游客通過點(diǎn)擊按鈕的操作可以實(shí)現(xiàn)翻頁。通過Thymeleaf技術(shù),給標(biāo)簽href賦值來接收后臺(tái)已經(jīng)編寫好的數(shù)據(jù)。實(shí)現(xiàn)代碼為:

      ;

      2.1.2? 文章分類查詢功能

      游客可以通過點(diǎn)擊分類按鈕,根據(jù)需要查找篩選自己感興趣的文章。給type.name賦值為數(shù)據(jù)庫里存放的文章類別名的數(shù)據(jù),type.id為文章類別的對(duì)應(yīng)編號(hào),通過文章類別名以及編號(hào)來確定該文章的類別,如果點(diǎn)擊某個(gè)類別,主界面會(huì)顯示該類別的相關(guān)文章信息。實(shí)現(xiàn)代碼為:

      th:classappend="${type.id==activeTypeId} ? 'teal'" th:text="${type.name}">java

      th:text="${#arrays.length(type.blogs)}">24

      ;

      2.2? 后臺(tái)功能設(shè)計(jì)

      2.2.1? 管理員賬號(hào)登錄功能

      管理員輸入自己的賬號(hào)和密碼登錄后臺(tái)管理系統(tǒng),這一功能是通過以Post方式提交from表單來實(shí)現(xiàn)的。如果登錄失敗,會(huì)顯示賬戶名稱錯(cuò)誤或密碼錯(cuò)誤。通過if條件語句判斷管理員的賬號(hào)user和密碼password是否為空、是否對(duì)應(yīng)數(shù)據(jù)庫的信息等。實(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","用戶名或密碼錯(cuò)誤");

      return "redirect:/admin";

      }

      };

      2.2.2? 文章的管理功能

      管理員登錄后臺(tái)后,可以對(duì)文章進(jìn)行一系列的操作。對(duì)博客文章的新增操作,在前臺(tái)提交數(shù)據(jù)后,后臺(tái)會(huì)依次獲取文章名字、文章的類型等,再通過blogService.saveBlog()方法去保存博客。實(shí)現(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);

      文章刪除功能的實(shí)現(xiàn)是通過調(diào)用blogService.deleteBlog()方法,查找文章的編號(hào)來刪除文章。實(shí)現(xiàn)代碼為:

      blogService.deleteBlog(id);

      attributes.addFlashAttribute("message", "刪除成功");

      管理員上傳了文章后想對(duì)文章進(jìn)行更新、修改,以下代碼則為文章的修改功能,調(diào)用blogService.updateBlog()方法,重新傳輸修改的數(shù)據(jù)。

      int b = blogService.updateBlog(showBlog);

      if(b ==0){

      attributes.addFlashAttribute("message", "修改失敗");

      }else {

      attributes.addFlashAttribute("message", "修改成功");

      };

      2.2.3? 文章的分類功能

      管理員登錄后臺(tái)后,可以對(duì)文章內(nèi)容進(jìn)行分類操作。例如添加文章類型功能的實(shí)現(xiàn)是通過type1獲取類型名字,添加類型的同時(shí)增加數(shù)據(jù)庫里的信息,并判斷所添加的類型是否有重復(fù)。實(shí)現(xiàn)代碼為:

      Type type1 = typeService.getTypeByName(type.getName());

      if (type1 != null) {

      attributes.addFlashAttribute("message", "不能添加重復(fù)的分類");

      return "redirect:/admin/types/input";

      }

      int t = typeService.updateType(type);

      if (t == 0 ) {

      attributes.addFlashAttribute("message", "編輯失敗");

      } else {

      attributes.addFlashAttribute("message", "編輯成功");

      };

      2.3? 數(shù)據(jù)庫設(shè)計(jì)

      為保證網(wǎng)站中的數(shù)據(jù)可以正確顯示,需要將不同的數(shù)據(jù)類型進(jìn)行分類。對(duì)于不同字段值的設(shè)計(jì)要夠精準(zhǔn),以免在填寫信息的時(shí)候出現(xiàn)數(shù)據(jù)添加不正確的情況[5]。這時(shí)數(shù)據(jù)庫的設(shè)計(jì)就顯得非常重要。本系統(tǒng)設(shè)計(jì)了多張表格,各個(gè)表之間相互關(guān)聯(lián),數(shù)據(jù)庫按照三范式進(jìn)行設(shè)計(jì)。各個(gè)表之間相互關(guān)聯(lián),每張表都存儲(chǔ)著用戶的數(shù)據(jù)等,以下為表的具體說明:

      (1)管理員表。管理員表主要設(shè)計(jì)的內(nèi)容包括管理員賬號(hào)、管理員密碼、賬號(hào)創(chuàng)建時(shí)間等字段,其中id為主鍵,管理員表如表1所示。

      (2)文章信息表。文章信息表主要設(shè)計(jì)的內(nèi)容包括上傳文章的相關(guān)信息,例如文章標(biāo)題、文章上傳時(shí)間、文章簡介、文章標(biāo)簽等字段,其中字段名文章類型為外鍵,文章信息表如表2所示。

      (3)文章類型表。文章類型表主要設(shè)計(jì)的內(nèi)容包括相關(guān)文章的類型名、相關(guān)文章所對(duì)應(yīng)的類型編號(hào)等字段,文章類型表如表3所示。

      3? 系統(tǒng)的具體功能實(shí)現(xiàn)

      3.1? 博客系統(tǒng)的登錄注銷功能實(shí)現(xiàn)

      管理員進(jìn)行登錄操作時(shí),是通過以post方式提交from表單來實(shí)現(xiàn)的,提交的數(shù)據(jù)在LoginController類進(jìn)行判斷。首先針對(duì)用戶提交的數(shù)據(jù)通過if語句進(jìn)行合法性判斷,判斷其中是否含有非法字符。其次把傳入的用戶名當(dāng)作參數(shù)調(diào)用UserService類的checkUser()方法,如果返回的值為null,就給前端頁面返回“賬號(hào)或密碼錯(cuò)誤!”;如果用戶提交的數(shù)據(jù)沒有問題,系統(tǒng)就將用戶的數(shù)據(jù)通過Dao層的類存儲(chǔ)到數(shù)據(jù)庫中。關(guān)于賬號(hào)的注銷功能,通過使用session.removeAttribute("user"),對(duì)session進(jìn)行移除就能實(shí)現(xiàn)將賬號(hào)退出登錄。當(dāng)管理員成功登錄至后臺(tái)后,如果想要退出登錄,只需點(diǎn)擊“注銷”按鈕即可退出賬號(hào)并跳轉(zhuǎn)至登錄頁面。

      3.2? 文章的增刪查改功能實(shí)現(xiàn)

      對(duì)于本后臺(tái)管理系統(tǒng),雖然可以在數(shù)據(jù)庫中進(jìn)行增刪查改操作,但是不夠方便快捷,所以如何能夠快速簡便地對(duì)文章進(jìn)行增刪查改操作,是本系統(tǒng)的關(guān)鍵所在。本系統(tǒng)將利用Mybatis框架對(duì)映射文件進(jìn)行編寫,在根元素下創(chuàng)建各種子元素。對(duì)于增加、刪除、查找、修改文章的功能,分別使用、、

          株洲市| 进贤县| 壶关县| 宁强县| 新闻| 景东| 尼木县| 德庆县| 当涂县| 汝城县| 漠河县| 泗洪县| 景洪市| 博野县| 镇江市| 兴安盟| 普兰店市| 城口县| 茂名市| 循化| 常山县| 榕江县| 绥阳县| 弥渡县| 柳河县| 乌兰浩特市| 资阳市| 谢通门县| 丰宁| 鲜城| 方城县| 天津市| 浦江县| 大英县| 平山县| 比如县| 松江区| 呼玛县| 灵武市| 襄樊市| 云和县|