文末可參與投票喲
訂閱專欄下載原始碼
前言
博客,又譯為網路日志、 部落格或部落閣等,是一種通常由個人管理、不定期張貼新的文章的網站, 博客上的文章通常根據張貼時間, 以倒序方式由新到舊排列, 許多博客專注在特定的課題上提供評論或新聞, 其他則被作為比較個人的日記, 一個典型的博客結合了文字、影像、 其他博客或網站的鏈接、 及其它與主題相關的媒體, 能夠讓讀者以互動的方式留下意見,是許多博客的重要要素,大部分的博客內容以文字為主, 仍有一些博客專注在藝術、攝影、視頻、音樂、播客等各種主題,博客是社會媒體網路的一部分,博客秉承了個人網站的自由精神, 但是綜合了激發創造的新模式, 使其更具開放和建設性,它作為一種新表達的方式,它的傳播不僅情緒,包括大量的智慧、意見和思想,某種意義上說,它也是一種新的文化現象, 博客的出現和繁榮, 真正凸現網路的知識價值,標志著互聯網發展開始步入更高的階段,

需求分析
本系統主要針對博客論壇的管理員對論壇資訊進行有效的管理,對用戶數量,鏈接數量,文章數量進行增刪改查,能通過資料統計分析近來論壇的發展情況,還能通過類別更改管理論壇的界面,游客則通過發布文章,管理文章對論壇做出貢獻,發布自己的想法,
用戶管理,
該模塊是由管理員進行操作的,將所有用戶的用戶名,郵箱,創建時間,用戶狀態,列在一張表上,方便管理員增加、洗掉、修改,查詢用戶的資訊,還可以批量洗掉,
文章管理,
這個模塊是管理員和用戶都可以操作的,他們都可以對現有文章進行洗掉、修改,查詢的操作,他們還可以在文章添加板塊,進行文章創作,
鏈接管理,
該模塊是在論壇頁面的右邊添加友情網站的鏈接,起到互幫互助的作用,它也由兩個小板塊組成,鏈接添加和鏈接串列,這是只有管理員才能查看且增刪查改的板塊,
日志管理,
日志模塊是所有用戶包括管理員論壇對后臺管理系統的訪問記錄,由管理員查看,能夠進行查詢,洗掉和批量洗掉的操作,
資料管理,
資料模塊是以月為單位,對論壇的發帖量和訪問量進行資料統計,并轉換成柱狀圖的形式呈現,是只能由管理員查看的用于網站現狀的分析的工具,分為文章發表資料和文章瀏覽資料,
系統管理,
這個模塊下面有一個前臺欄目串列,是前臺論壇上方展示的分類類別,有由管理員增加、洗掉、修改,查詢的功能,
功能分析
用戶登錄注冊:
輸入賬號密碼進行登錄、后臺判斷賬號權限是普通用戶還是管理員、沒有注冊的可以進入注冊頁面注冊

博客主頁:
用戶進入主頁后查看分類查看博客內容、點擊查看詳情、右側可以跳轉超鏈接、以及登錄注冊

文章詳情:

評論互動:
博客詳情評論互動

后臺用戶管理:

添加用戶:

后臺文章管理:


后臺鏈接管理:

后臺日志管理:

后臺資料管理:
文章資料《發表資料和流量資料》按月統計顯示

后臺選單管理:

部分表設計
使用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" alt="logo">
</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="${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">回傳首頁</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;
}
}
}
訂閱專欄下載原始碼
其他springboot系統精彩推薦
基于java ssm springboot+VUE疫情防疫系統系統前后端分離設計和實作
基于java springboot+mybatis電影售票網站管理系統前臺+后臺設計和實作
基于java ssm springboot+mybatis酒莊內部管理系統設計和實作
基于JAVA springboot+mybatis智慧生活分享平臺設計和實作
基于Java springboot+vue+redis前后端分離家具商城平臺系統設計和實作
基于JAVA SSM springboot實作的抗疫物質資訊管理系統設計和實作
基于java ssm springboot實作選課推薦交流平臺系統設計和實作
基于JAVA springboot+mybatis 電商書城平臺系統設計和實作
基于java springboot+mybatis愛游旅行平臺前臺+后臺設計實作
基于java SSM springboot景區行李寄存管理系統設計和實作
總體來說這個專案功能相對還是比較簡單優秀的、適合初學者作為課程設計和畢業設計參考
另外需要白嫖java學習資料包括《JVM、Netty、Mysql、Mybatis、Redis、Dubbo、Nginx、設計模式》等10G資料禮包、可以看我主頁或私信博主都行
打卡Java專案更新 11 / 100天
大家可以點贊、收藏、關注、評論我啦 、下面的投票也可以積極互動起來喲
參與投票
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/295396.html
標籤:java
上一篇:JAVA方法
下一篇:SpringBoot發送郵件
