Java Web课设——个人博客(双端系统)

发布时间:2024年01月13日

项目演示

先看看演示视频吧

演示图
演示图

简单介绍

????????个人博客管理系统采用Springboot2.4.5框架开发,是标准的MVC模式,将这个系统划分为View层、Controller层、Service层、DAO层和持久层五层。其中,Spring MVC负责请求的转发和视图管理,Spring实现业务对象管理,MyBatis-Plus作为数据对象的持久化引擎。系统结构图如图所示。

系统架构图
系统架构图

该系统主要分为前台用户界面和后台管理界面两个核心部分,以适应不同用户群体的功能需求。

  1. 前端功能模块:
    1. 文章浏览:系统应具备简洁明了的博客列表页面,展示最新、最热或按分类筛选的文章供访客阅读。
    2. 文章详情页:提供详细的博客内容显示,包括正文、作者信息、发布时间、分类标签以及评论区。
    3. 互动功能:访客可以对文章进行点赞、收藏,并通过评论系统与博主和其他访客展开讨论,促进社区交流与知识共享。
  2. 后端管理功能模块:
    1. 用户账号管理:管理员能够实现账户注册、登录
    2. 内容管理:提供MarkDown编辑器,支持富文本格式,允许管理员轻松创建、编辑、删除博客文章,并具有草稿保存和发布预览功能。
    3. 分类与标签管理:系统应包含灵活的分类体系和标签系统,便于管理员组织和检索博客内容,方便用户根据主题快速定位感兴趣的文章。
    4. 评论管理:管理员可以查看、删除评论。
    5. 安全性与稳定性要求:访客只能对博客信息进行浏览,管理博客的信息,需要登录到后台管理系统,在登录时进行MD5的密码的加密
    6. 配置拦截器对未登录的非法的越权请求进行拦截。同时,在云服务中对安全组进行配置,防止不明地址的请求和攻击。

项目整体功能需求如图 1-1所示:

功能模块图
功能模块图

个人博客管理系统功能模块图如所示:

个人博客管理系统的功能模块图
个人博客管理系统的功能模块图

  1. Spring Boot 2.4.5:作为项目的基础框架,Spring Boot极大地简化了新Spring应用的搭建与开发流程。通过预置的默认配置和自动配置功能,显著减少了手动编写冗余配置代码的工作量,提高了开发者的工作效率。
  2. Developer Tools:
    1. Spring Boot DevTools:提供实时刷新功能,使得开发过程中对源代码的修改能立即反映到应用上,大大提升了开发迭代速度。
    2. Lombok:作为一种代码生成工具,它能够减少Java类中的样板式getter、setter等方法以及构造函数的编写,从而提升代码的简洁性和可读性。
  3. Web层:采用Spring Web框架构建,用于处理HTTP请求和响应,实现了前后端交互逻辑。
  4. 模板引擎:选用Thymeleaf,用以渲染前端页面,实现动态内容生成。
  5. 持久层框架:采用MyBatis进行数据库交互。MyBatis支持灵活的SQL定制、存储过程调用以及高级映射机制,可以高效地执行数据访问操作并自动处理JDBC相关的参数设置及结果集获取,减轻了开发者在数据库操作方面的负担。
  6. 数据库连接:使用MySQL Driver建立与MySQL数据库的连接。MySQL作为一个广泛应用于WEB领域的强大关系型数据库管理系统,以其稳定性、高效性和易用性成为个人博客系统存储和检索数据的理想选择。
  7. 项目管理和构建工具:Maven负责项目的构建管理和依赖协调,通过标准化的项目结构和构建生命周期,帮助开发者自动化完成编译、测试、打包和部署工作,确保了开发流程的一致性和高效性。

使用介绍

工具版本

  1. 数据库:MySQL 5.0及8.0版本
  2. 操作系统:Linux、windows10 32位、64位、Android
  3. 运行环境:JDK 1.8
  4. Spring Boot 2.4.5
  5. Idea:旗舰版(Ultimate)社区版本应该会不能跑,还是建议用旗舰版本吧。

maven依赖

????????maven依赖用idea自动导一下就行,应该没什么大问题

数据库配置

????????下面将一下怎么使用吧,首先我们要创建一个名为blog的数据库,再导入下面的sql语句。

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for t_blog
-- ----------------------------
DROP TABLE IF EXISTS `t_blog`;
CREATE TABLE `t_blog`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '标题',
  `content` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '内容',
  `first_picture` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '首图',
  `flag` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '标记',
  `views` int(11) NULL DEFAULT NULL COMMENT '浏览次数',
  `appreciation` tinyint(1) NOT NULL DEFAULT 0 COMMENT '赞赏',
  `share_statement` tinyint(1) NOT NULL DEFAULT 0 COMMENT '转载声明',
  `commentabled` tinyint(1) NOT NULL DEFAULT 0 COMMENT '评论',
  `published` tinyint(1) NOT NULL DEFAULT 0 COMMENT '发布',
  `recommend` tinyint(1) NOT NULL DEFAULT 0 COMMENT '推荐',
  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
  `type_id` bigint(20) NULL DEFAULT NULL COMMENT '分类id',
  `user_id` bigint(20) NULL DEFAULT NULL COMMENT '拥有者id',
  `description` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '文章描述',
  `tag_ids` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '标签id',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT;

-- ----------------------------
-- Records of t_blog
-- ----------------------------
INSERT INTO `t_blog` VALUES (1, '3', '# 3', '11', '', 11, 0, 0, 0, 0, 0, '2023-12-25 09:48:24', '2023-12-25 09:48:24', 1, 0, '111', '1');
INSERT INTO `t_blog` VALUES (2, '答辩演示', '# Markdown文档样例\r\n\r\n## 目录\r\n\r\n- [标题](#标题)\r\n- [文本格式化](#文本格式化)\r\n- [链接](#链接)\r\n- [列表](#列表)\r\n- [引用](#引用)\r\n- [代码块](#代码块)\r\n- [插入图像](#插入图像)\r\n\r\n## 标题\r\n\r\nMarkdown中使用`#`符号来表示标题,`#`的数量表示标题的级别。\r\n\r\n# 一级标题\r\n## 二级标题\r\n### 三级标题\r\n[链接文本]()\r\n\r\n列表\r\n- 无序列表项 1\r\n- 无序列表项 2\r\n  - 嵌套的无序列表项\r\n\r\n\r\n![壁纸](https://inews.gtimg.com/newsapp_bt/0/13956121885/641)\r\n\r\n代码块\r\n```python\r\ndef hello_world():\r\nprint(\"Hello, World!\")\r\n```\r\n\r\n行代码\r\n`print(\"Hello, World!\")`\r\n\r\n\r\n\r\n', 'https://img0.baidu.com/it/u=2789195095,3243697354&fm=253&fmt=auto&app=138&f=JPEG?w=400&h=300', '', 2, 0, 0, 0, 1, 0, '2023-12-26 16:43:57', '2023-12-26 16:51:00', 1, 0, '答辩文档', '1');

-- ----------------------------
-- Table structure for t_blog_tags
-- ----------------------------
DROP TABLE IF EXISTS `t_blog_tags`;
CREATE TABLE `t_blog_tags`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `tag_id` bigint(20) NULL DEFAULT NULL,
  `blog_id` bigint(20) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `fk_tag_id`(`tag_id`) USING BTREE,
  INDEX `fk_blog_id`(`blog_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT;

-- ----------------------------
-- Records of t_blog_tags
-- ----------------------------
INSERT INTO `t_blog_tags` VALUES (1, 1, 1);
INSERT INTO `t_blog_tags` VALUES (2, 1, 2);
INSERT INTO `t_blog_tags` VALUES (4, 1, 3);
INSERT INTO `t_blog_tags` VALUES (8, 1, 4);

-- ----------------------------
-- Table structure for t_comment
-- ----------------------------
DROP TABLE IF EXISTS `t_comment`;
CREATE TABLE `t_comment`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `nickname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '昵称',
  `email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮箱',
  `content` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '内容',
  `avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '头像',
  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  `blog_id` bigint(20) NULL DEFAULT NULL COMMENT '所属博客id',
  `parent_comment_id` bigint(20) NULL DEFAULT NULL COMMENT '父评论id',
  `admin_comment` tinyint(1) NULL DEFAULT NULL COMMENT '管理员评论',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT;

-- ----------------------------
-- Records of t_comment
-- ----------------------------
INSERT INTO `t_comment` VALUES (1, '111', '111', '悟解', '/images/avatar.jpg', '2023-12-26 00:44:52', 3, -1, 0);
INSERT INTO `t_comment` VALUES (2, 'lyk', 'liyankang@aliyun.com', '悟解', '/images/avatar.jpg', '2023-12-26 14:10:16', 3, -1, 0);
INSERT INTO `t_comment` VALUES (3, 'lyk', 'liyankang@aliyun.com', '呜呜呜', '/images/avatar.jpg', '2023-12-26 14:16:35', 3, -1, 0);
INSERT INTO `t_comment` VALUES (4, 'lyk', 'liyankang@aliyun.com', '我是来测试评论的', '/images/avatar.jpg', '2023-12-26 16:56:27', 2, -1, 0);

-- ----------------------------
-- Table structure for t_tag
-- ----------------------------
DROP TABLE IF EXISTS `t_tag`;
CREATE TABLE `t_tag`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '标签名',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT;

-- ----------------------------
-- Records of t_tag
-- ----------------------------
INSERT INTO `t_tag` VALUES (1, 'python');

-- ----------------------------
-- Table structure for t_type
-- ----------------------------
DROP TABLE IF EXISTS `t_type`;
CREATE TABLE `t_type`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '分类名',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT;

-- ----------------------------
-- Records of t_type
-- ----------------------------
INSERT INTO `t_type` VALUES (1, '我的');

-- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `nickname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '新用户' COMMENT '昵称',
  `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '用户名',
  `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '密码',
  `email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮箱',
  `avatar` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '头像',
  `type` int(11) NULL DEFAULT NULL COMMENT '权限',
  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime NULL DEFAULT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT;

-- ----------------------------
-- Records of t_user
-- ----------------------------
INSERT INTO `t_user` VALUES (0, '悟解', 'LiYanKang', 'a448410bdcbb4d7cfb32830909f6aa08', 'lyk2zmy@163.com', 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fc-ssl.duitang.com%2Fuploads%2Fitem%2F201811%2F07%2F20181107103350_V8nTe.thumb.1000_0.jpeg&refer=http%3A%2F%2Fc-ssl.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1706173075&t=ff98d36f75f41fe74f413987a18b13eb', 1, '2023-12-26 21:55:53', '2023-12-27 21:56:01');
INSERT INTO `t_user` VALUES (1, '悟解', 'lyk', '123456', 'liyankang@aliyun.com', 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fc-ssl.duitang.com%2Fuploads%2Fitem%2F201811%2F07%2F20181107103350_V8nTe.thumb.1000_0.jpeg&refer=http%3A%2F%2Fc-ssl.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1706173075&t=ff98d36f75f41fe74f413987a18b13eb', NULL, NULL, NULL);

SET FOREIGN_KEY_CHECKS = 1;

导入完成后应该有以下的表结构如下:

数据库截图
数据库截图

修改数据库账号密码(一共要修改4处哦):


特别声明

关于代码

? ? ? ? 我想了一下,还是私信吧,算了我这里也放一个链接:

关于课设报告文档

????????由于只是提供学习,不放置课设报告了哦,我的报告写了大概1w+字,要借鉴的也行,但是报告还是推荐自己写哦,由于是多人合作,我这里的报告分为admin端版本和web端版本,我本人的是admin端的版本,web端是我的室友在写。

关于人脸识别

? ? ? ? 这里我只是调了一个华为云的接口,目前只可以识别我一个人,无法识别别人,感兴趣的同学可以了解一下,等你把接口配置好了,就只需要改一部分代码就好了。如果不会调接口的话,我看看评论吧,如果大家想要看,我也可以出一篇调接口的。

文章来源:https://blog.csdn.net/liyankang/article/details/135575213
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。