javaweb做的个人笔记管理系统4

18 阅读8分钟

📚 个人笔记管理系统

一个基于 Java Web 技术栈开发的个人笔记管理系统,支持笔记的创建、编辑、分类、置顶、收藏等功能,并提供数据统计和可视化展示。

📋 目录

🎯 系统介绍

个人笔记管理系统是一个轻量级的 Web 应用,旨在帮助用户高效地管理和组织个人笔记。系统采用经典的 MVC 架构模式,使用 Java Servlet + JSP 技术实现,提供了完整的笔记管理功能,包括笔记的增删改查、分类管理、置顶收藏、文件上传等核心功能。

核心特点

  • 用户友好:简洁直观的界面设计,操作便捷
  • 功能完善:涵盖笔记管理的各个方面
  • 数据安全:用户数据隔离,密码 MD5 加密存储
  • 可视化统计:提供数据统计图表,直观展示笔记数据
  • 响应式设计:适配不同屏幕尺寸

✨ 功能特性

1. 用户管理

  • 用户注册:支持新用户注册,用户名唯一性验证
  • 用户登录:安全的登录验证机制,支持验证码
  • 会话管理:基于 Session 的用户会话管理
  • 密码加密:使用 MD5 算法加密存储用户密码

2. 笔记管理

  • 创建笔记:支持创建新笔记,包含标题、内容、分类等信息
  • 编辑笔记:修改已有笔记的内容和属性
  • 删除笔记:安全删除笔记,带确认提示
  • 笔记列表:查看所有笔记,支持置顶笔记优先显示
  • 笔记搜索:按分类、时间等条件筛选笔记

3. 分类管理

  • 创建分类:为笔记创建自定义分类
  • 分类列表:查看和管理所有分类
  • 分类编辑:修改分类名称和描述
  • 分类删除:删除不需要的分类

4. 置顶功能

  • 置顶笔记:将重要笔记置顶显示
  • 取消置顶:快速取消笔记置顶状态
  • 置顶列表:查看所有置顶笔记
  • 置顶标识:置顶笔记显示红色向上箭头(↑)标识

5. 收藏功能

  • 收藏笔记:标记重要笔记为收藏
  • 取消收藏:移除笔记收藏状态
  • 收藏管理:快速管理收藏的笔记

6. 文件管理

  • 图片上传:支持上传图片到笔记
  • 附件上传:支持上传文件附件
  • 文件下载:下载笔记中的附件文件
  • 图片预览:在笔记列表中预览图片

7. 数据统计

  • 笔记统计:显示笔记总数、总字数、分类数量
  • 分类统计:饼图展示各分类笔记分布
  • 月度统计:柱状图展示每月笔记创建趋势
  • 最近笔记:显示最近创建的笔记列表

8. 其他功能

  • 近期笔记:查看最近更新的笔记
  • 时间显示:笔记创建和更新时间记录
  • 内容预览:笔记列表显示内容预览
  • 响应式布局:适配不同设备屏幕

🛠 技术栈

后端技术

  • Java:核心开发语言
  • Servlet:处理 HTTP 请求和响应
  • JSP:动态页面渲染
  • JDBC:数据库连接和操作
  • MySQL:关系型数据库

前端技术

  • HTML5:页面结构
  • CSS3:样式设计
  • JavaScript:交互逻辑
  • Chart.js:数据可视化图表库

开发工具

  • IDE:IntelliJ IDEA / Eclipse
  • 服务器:Apache Tomcat
  • 数据库:MySQL 8.0+

依赖库

  • mysql-connector-java-8.0.15.jar:MySQL 数据库驱动
  • jstl.jarstandard.jar:JSP 标准标签库
  • commons-*:Apache Commons 工具库
  • json-lib-2.4-jdk15.jar:JSON 处理库

🏗 系统架构

系统采用经典的 MVC(Model-View-Controller) 架构模式:

┌─────────────────────────────────────────┐
│            View Layer (JSP)             │
│  - dashboard.jsp                        │
│  - note_list.jsp                        │
│  - note_add.jsp / note_edit.jsp         │
│  - category_list.jsp                    │
│  - login.jsp / register.jsp             │
└─────────────────────────────────────────┘
                    ↕
┌─────────────────────────────────────────┐
│        Controller Layer (Servlet)        │
│  - DashboardServlet                     │
│  - NoteListServlet / NoteAddServlet      │
│  - NoteEditServlet / NoteDeleteServlet   │
│  - CategoryServlet                      │
│  - LoginServlet / RegisterServlet       │
└─────────────────────────────────────────┘
                    ↕
┌─────────────────────────────────────────┐
│         Model Layer (DAO + Entity)       │
│  - NoteDAO / CategoryDAO / UserDAO      │
│  - Note / Category / User               │
└─────────────────────────────────────────┘
                    ↕
┌─────────────────────────────────────────┐
│            Database (MySQL)              │
│  - user / note / category                │
└─────────────────────────────────────────┘

架构说明

  • View 层:JSP 页面负责用户界面展示
  • Controller 层:Servlet 处理业务逻辑和请求路由
  • Model 层:DAO 数据访问对象和 Entity 实体类
  • 数据库层:MySQL 存储持久化数据

💾 数据库设计

用户表 (user)

字段名类型说明
idINT用户ID(主键,自增)
usernameVARCHAR(50)用户名(唯一)
passwordVARCHAR(100)密码(MD5加密)
emailVARCHAR(100)邮箱
create_timeDATETIME创建时间

笔记表 (note)

字段名类型说明
idINT笔记ID(主键,自增)
user_idINT用户ID(外键)
titleVARCHAR(200)笔记标题
contentTEXT笔记内容
image_pathVARCHAR(500)图片路径
file_pathVARCHAR(500)附件文件路径
category_idINT分类ID(外键)
is_pinnedTINYINT(1)是否置顶(0-否,1-是)
is_favoriteTINYINT(1)是否收藏(0-否,1-是)
create_timeDATETIME创建时间
update_timeDATETIME更新时间

分类表 (category)

字段名类型说明
idINT分类ID(主键,自增)
user_idINT用户ID(外键)
nameVARCHAR(50)分类名称
descriptionVARCHAR(200)分类描述
create_timeDATETIME创建时间

索引设计

  • user 表:uk_username(用户名唯一索引)
  • note 表:idx_user_ididx_category_ididx_is_pinnedidx_is_favorite
  • category 表:idx_user_id

🚀 安装部署

环境要求

  • JDK 1.8 或更高版本
  • Apache Tomcat 8.5 或更高版本
  • MySQL 8.0 或更高版本
  • Maven(可选,用于依赖管理)

部署步骤

  1. 克隆项目

    git clone <repository-url>
    cd mybj
    
  2. 创建数据库

    CREATE DATABASE mybj_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
  3. 导入数据库

    mysql -u root -p mybj_db < mybj_db.sql
    
  4. 配置数据库连接

    编辑 src/com/mybj/util/DBUtil.java,修改数据库连接信息:

    private static final String URL = "jdbc:mysql://localhost:3307/mybj_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "your_password";
    
  5. 配置 Tomcat

    • 在 IDE 中配置 Tomcat 服务器
    • 将项目部署到 Tomcat
    • 设置项目上下文路径
  6. 启动服务

    • 启动 MySQL 数据库服务
    • 启动 Tomcat 服务器
    • 访问 http://localhost:8080/mybj

默认账户

系统初始化后,可以使用以下测试账户登录:

  • 用户名:zs
  • 密码:123(MD5: 202cb962ac59075b964b07152d234b70)

📖 使用说明

用户注册与登录

  1. 注册新用户

    • 访问注册页面
    • 填写用户名、密码、邮箱信息
    • 输入验证码完成注册
  2. 用户登录

    • 访问登录页面
    • 输入用户名和密码
    • 输入验证码完成登录

笔记管理

  1. 创建笔记

    • 点击"发布新笔记"按钮
    • 填写笔记标题和内容
    • 选择分类(可选)
    • 上传图片或附件(可选)
    • 设置置顶状态(可选)
    • 保存笔记
  2. 编辑笔记

    • 在笔记列表中点击"编辑"按钮
    • 修改笔记内容
    • 保存更改
  3. 删除笔记

    • 在笔记列表中点击"删除"按钮
    • 确认删除操作
  4. 置顶笔记

    • 在笔记列表中点击"置顶"按钮
    • 置顶的笔记会显示红色向上箭头(↑)
    • 置顶笔记会优先显示在列表顶部

分类管理

  1. 创建分类

    • 进入"分类管理"页面
    • 点击"添加分类"
    • 填写分类名称和描述
    • 保存分类
  2. 使用分类

    • 在创建或编辑笔记时选择分类
    • 笔记会按分类进行组织

数据统计

  • 访问首页(Dashboard)查看数据统计
  • 查看笔记总数、总字数、分类数量
  • 查看分类分布饼图
  • 查看月度笔记创建趋势柱状图
  • 查看最近笔记列表

📁 项目结构

mybj/
├── src/                          # 源代码目录
│   └── com/
│       └── mybj/
│           ├── dao/              # 数据访问层
│           │   ├── CategoryDAO.java
│           │   ├── NoteDAO.java
│           │   └── UserDAO.java
│           ├── entity/           # 实体类
│           │   ├── Category.java
│           │   ├── Note.java
│           │   └── User.java
│           ├── servlet/          # 控制器层
│           │   ├── CategoryServlet.java
│           │   ├── DashboardServlet.java
│           │   ├── FileDownloadServlet.java
│           │   ├── FileUploadServlet.java
│           │   ├── IndexServlet.java
│           │   ├── LoginServlet.java
│           │   ├── LogoutServlet.java
│           │   ├── NoteAddServlet.java
│           │   ├── NoteDeleteServlet.java
│           │   ├── NoteEditServlet.java
│           │   ├── NoteListServlet.java
│           │   ├── NotePinnedServlet.java
│           │   ├── NoteRecentServlet.java
│           │   ├── NoteTogglePinnedServlet.java
│           │   ├── RegisterServlet.java
│           │   └── VerifyCodeServlet.java
│           └── util/             # 工具类
│               ├── DBUtil.java
│               └── MD5Util.java
├── WebContent/                   # Web 资源目录
│   ├── css/                      # 样式文件
│   │   └── style.css
│   ├── js/                       # JavaScript 文件
│   │   ├── chart.min.js
│   │   └── common.js
│   ├── uploads/                  # 上传文件目录
│   ├── WEB-INF/                  # Web 配置目录
│   │   ├── lib/                  # 依赖库
│   │   └── web.xml               # Web 配置文件
│   ├── category_list.jsp         # 分类列表页面
│   ├── dashboard.jsp             # 首页
│   ├── header.jsp                # 公共头部
│   ├── login.jsp                 # 登录页面
│   ├── note_add.jsp              # 添加笔记页面
│   ├── note_edit.jsp             # 编辑笔记页面
│   ├── note_list.jsp             # 笔记列表页面
│   └── register.jsp              # 注册页面
├── mybj_db.sql                   # 数据库脚本
└── README.md                     # 项目说明文档

📝 主要功能模块

1. 用户认证模块

  • 用户注册、登录、退出
  • 密码加密存储
  • Session 会话管理
  • 验证码功能

2. 笔记管理模块

  • 笔记的增删改查
  • 笔记分类关联
  • 笔记置顶/取消置顶
  • 笔记收藏/取消收藏
  • 笔记列表展示和筛选

3. 分类管理模块

  • 分类的增删改查
  • 分类与笔记关联
  • 分类统计展示

4. 文件管理模块

  • 图片上传和预览
  • 附件上传和下载
  • 文件路径管理

5. 数据统计模块

  • 笔记数量统计
  • 字数统计
  • 分类分布统计
  • 月度趋势统计
  • 图表可视化展示

🔒 安全特性

  • 密码加密:使用 MD5 算法加密存储用户密码
  • 用户隔离:每个用户只能访问自己的笔记和分类
  • Session 验证:所有操作都需要登录验证
  • SQL 注入防护:使用 PreparedStatement 防止 SQL 注入
  • 文件上传限制:文件上传路径和类型控制

🎨 界面特色

  • 现代化设计:简洁美观的用户界面

  • 响应式布局:适配不同屏幕尺寸

  • 数据可视化:使用 Chart.js 展示统计图表

  • 交互友好:清晰的操作反馈和提示信息

  • 置顶标识:红色向上箭头(↑)标识置顶笔记

登录.png

发布笔记.png

分类编辑.png

分类管理.png

全部笔记.png

首页.png

置顶笔记.png

注册.png

最近笔记.png