前言
博客,又譯為網絡日志、 部落格或部落閣等,是一種通常由個人管理、不定期張貼新的文章的網站。 博客上的文章通常根據張貼時間, 以倒序方式由新到舊排列。 許多博客專注在特定的課題上提供評論或新聞, 其他則被作為比較個人的日記。 一個典型的博客結合了文字、圖像、 其他博客或網站的鏈接、 及其它與主題相關的媒體。 能夠讓讀者以互動的方式留下意見,是許多博客的重要要素。大部分的博客內容以文字為主, 仍有一些博客專注在藝術、攝影、視頻、音樂、播客等各種主題。博客是社會媒體網絡的一部分。博客秉承了個人網站的自由精神, 但是綜合了激發創造的新模式, 使其更具開放和建設性。它作為一種新表達的方式,它的傳播不僅情緒,包括大量的智慧、意見和思想。某種意義上說,它也是一種新的文化現象, 博客的出現和繁榮, 真正凸現網絡的知識價值,標志著互聯網發展開始步入更高的階段。
需求分析
本系統主要針對博客論壇的管理員對論壇信息進行有效的管理,對用戶數量,鏈接數量,文章數量進行增刪改查,能通過數據統計分析近來論壇的發展情況,還能通過類別更改管理論壇的界面。游客則通過發布文章,管理文章對論壇做出貢獻,發布自己的想法。
用戶管理。
該模塊是由管理員進行操作的,將所有用戶的用戶名,郵箱,創建時間,用戶狀態,列在一張表上,方便管理員增加、刪除、修改,查詢用戶的信息,還可以批量刪除。
文章管理。
這個模塊是管理員和用戶都可以操作的,他們都可以對現有文章進行刪除、修改,查詢的操作。他們還可以在文章添加板塊,進行文章創作。
鏈接管理。
該模塊是在論壇頁面的右邊添加友情網站的鏈接,起到互幫互助的作用,它也由兩個小板塊組成,鏈接添加和鏈接列表,這是只有管理員才能查看且增刪查改的板塊,
日志管理。
日志模塊是所有用戶包括管理員論壇對后臺管理系統的訪問記錄,由管理員查看,能夠進行查詢,刪除和批量刪除的操作。
數據管理。
數據模塊是以月為單位,對論壇的發帖量和訪問量進行數據統計,并轉換成柱狀圖的形式呈現,是只能由管理員查看的用于網站現狀的分析的工具。分為文章發表數據和文章瀏覽數據。
系統管理。
這個模塊下面有一個前臺欄目列表,是前臺論壇上方展示的分類類別,有由管理員增加、刪除、修改,查詢的功能。
功能分析
用戶登錄注冊:
輸入賬號密碼進行登錄、后臺判斷賬號權限是普通用戶還是管理員、沒有注冊的可以進入注冊頁面注冊
博客主頁:
用戶進入主頁后查看分類查看博客內容、點擊查看詳情、右側可以跳轉超鏈接、以及登錄注冊
文章詳情:
評論互動:
博客詳情評論互動
后臺用戶管理:
添加用戶:
后臺文章管理:
后臺鏈接管理:
后臺日志管理:
后臺數據管理:
文章數據《發表數據和流量數據》按月統計顯示
后臺菜單管理:
部分表設計
使用Mysql數據庫、 INNODB 存儲引擎和 UTF8 編碼格式。
用戶表
CREATE TABLE `NewTable` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT "主鍵" , `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT "用戶登錄名" , `email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT "郵箱" , `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT "密碼" , `status` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT "2" COMMENT "狀態 0:正常 1:刪除 2:未激活或者未啟用" , `avatar` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT "頭像" , `code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT "激活碼" , `create_date` datetime NULL DEFAULT NULL COMMENT "添加時間" , `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT "添加用戶id" , `update_date` datetime NULL DEFAULT NULL COMMENT "更新時間" , `update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT "更新用戶id" , `remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT "備注" , PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci AUTO_INCREMENT=21 ROW_FORMAT=DYNAMIC ;
文章表
CREATE TABLE `NewTable` ( `id` int(64) NOT NULL AUTO_INCREMENT , `type_id` int(64) NOT NULL , `title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `content` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `create_date` datetime NULL DEFAULT NULL , `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL , `update_date` datetime NULL DEFAULT NULL , `update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL , `status` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL , `read` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT "0" , PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci AUTO_INCREMENT=24 ROW_FORMAT=DYNAMIC ;
評論互動表
CREATE TABLE `NewTable` ( `id` int(11) NULL DEFAULT NULL , `news_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL , `content` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL , `create_date` date NULL DEFAULT NULL , `create_by` int(11) NULL DEFAULT NULL , `update_time` date NULL DEFAULT NULL , `update_by` int(11) NULL DEFAULT NULL , `status` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC ;
部分代碼實現
這個項目功能比較簡單、用的技術也是大家非常熟悉的技術、主要是springboot、springmvc、mybatis以前端的jquery、layui、html和css等基本樣式。就拿登錄來舉一個完整例子吧、首先是前端靜態頁面的編寫以及發送登錄請求
<div class="wrapper"> <div class="froyo-frame login-body"> <div class="admin-face"> <div class="face-img"> <img src="${ctxStatic}/images/editor.png" </div> </div> <h1 class="admin-login-tittle">「從現在開始,為每一天寫下一篇記錄」</h1> <div class="admin-login-form"> <form class="form" action="${ctx}/login" method="post" autocomplete="off"> <div class="admin-name"><input name="username" type="text" placeholder="用戶名"></div> <div class="admin-password"><input name="password" type="password" placeholder="密碼"></div> <div class="admin-button"><button type="submit" id="login-button">登錄</button></div> </form> <!-- 其他賬號登錄: <a href=""><img src=" rel="external nofollow" ${ctxStatic}/images/qqLogin.png" style="width: 50px;margin: 10px" onclick="loginQQ()"></a> <img src="${ctxStatic}/images/weChatLogin.png" style="width: 50px;margin: 10px"> <img src="${ctxStatic}/images/weboLogin.png" style="width: 50px;margin: 10px"> --> <div class="admin-button"><a id="login-button" href="${ctx}/index" rel="external nofollow" >返回首頁</a></div> </div> <script type="text/javascript" src="${ctxStatic}/plugins/layui/layui.js"></script> <script type="text/javascript"> layui.use("layer", function() { var $ = layui.jquery, layer = layui.layer; //login-button的點擊事件.. $("#login-button").click(function (event) { event.preventDefault(); if (!$("input[name=username]").val()) { layer.msg("用戶名不能為空"); return false; } else if (!$("input[name=password]").val()) { layer.msg("密碼不能為空"); return false; } else { $("form").fadeOut(500); $(".wrapper").addClass("form-success"); $(".form").submit(); } }); </script> </body> </html>
后臺Controller接收到前端的登錄請求之后執行參數校驗、將前端傳遞過來的用戶名密碼以及用戶角色進行判斷驗證、調用LoginController.login方法執行用戶登錄驗證、查詢數據庫當前賬號密碼是否正確、返回狀態碼給前端、前端根據狀態碼進行相對的頁面跳轉以及數據效應。
/** * 登錄驗證 * * @param user * @param map * @return */ @PostMapping("/login") public String login(User user, ModelMap map) { if (user != null) { if (StringUtils.isBlank(user.getUsername()) || StringUtils.isBlank(user.getPassword())) { return Views.LOGIN; } AuthenticationToken token = new UsernamePasswordToken(user.getUsername(), user.getPassword(), true); if (token == null) { map.put("message", "用戶名或密碼錯誤"); return Views.LOGIN; } //記住我 ((UsernamePasswordToken) token).setRememberMe(true); try { SecurityUtils.getSubject().login(token); return Views.REDIRECT_ADMIN; } catch (AuthenticationException e) { if (e instanceof UnknownAccountException) { map.put("message", "用戶不存在"); } else if (e instanceof LockedAccountException) { map.put("message", "賬戶未激活"); map.put("status", 2); map.put("user", user); } else if (e instanceof DisabledAccountException) { map.put("message", "賬戶未啟用"); } e.printStackTrace(); map.put("message", "用戶認證失敗"); } return Views.LOGIN; } else { map.put("message", "未知異常"); return Views.LOGIN; } } }
以上就是使用java springboot制作博客系統的詳細內容,更多關于java springboot制作系統的資料請關注服務器之家其它相關文章!
原文鏈接:https://blog.csdn.net/weixin_39709134/article/details/119797033?utm_medium=distribute.pc_feed.none-task-blog-yuanlijihua_sort_v1-3.nonecase&depth_1-utm_source=distribute.pc_feed.none-task-blog-yuanlijihua_sort_v1-3.nonecase