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

43 阅读7分钟

笔记管理系统

项目简介

这是一个基于JavaWeb技术栈开发的笔记管理系统,采用传统的Servlet+JSP+JDBC架构,实现了用户注册、登录、笔记发布、文件上传等核心功能。系统采用前后端分离的设计理念,所有页面请求统一通过Servlet处理,确保数据安全性和代码规范性。

技术栈

  • 后端框架: Java Servlet (javax.servlet)
  • 视图层: JSP (JavaServer Pages)
  • 数据访问: JDBC (Java Database Connectivity)
  • 数据库: MySQL 8.0
  • 前端技术: HTML5 + CSS3 + JavaScript
  • 服务器: 支持Servlet 3.0+的Web服务器(如Tomcat)

项目结构

biji/
├── database.sql                 # 数据库初始化脚本
├── src/                         # Java源代码目录
│   └── com/biji/
│       ├── entity/              # 实体类
│       │   ├── User.java        # 用户实体
│       │   └── Note.java        # 笔记实体
│       ├── dao/                 # 数据访问层
│       │   ├── UserDAO.java     # 用户数据访问对象
│       │   └── NoteDAO.java     # 笔记数据访问对象
│       ├── servlet/             # Servlet控制器
│       │   ├── LoginServlet.java           # 登录处理
│       │   ├── RegisterServlet.java        # 注册处理
│       │   ├── LogoutServlet.java          # 退出登录
│       │   ├── VerifyCodeServlet.java      # 验证码生成
│       │   ├── IndexServlet.java           # 首页跳转
│       │   ├── NoteListServlet.java        # 笔记列表
│       │   ├── NoteAddServlet.java         # 笔记添加
│       │   ├── NoteEditServlet.java        # 笔记编辑
│       │   ├── NoteDeleteServlet.java      # 笔记删除
│       │   ├── FileUploadServlet.java      # 文件上传
│       │   └── FileDownloadServlet.java    # 文件下载
│       └── util/                # 工具类
│           ├── DBUtil.java      # 数据库连接工具
│           └── MD5Util.java     # MD5加密工具
├── WebContent/                  # Web资源目录
│   ├── WEB-INF/
│   │   └── web.xml              # Web应用配置文件
│   ├── css/
│   │   └── style.css            # 样式文件
│   ├── js/
│   │   └── common.js            # 公共JavaScript函数
│   ├── login.jsp                # 登录页面
│   ├── register.jsp             # 注册页面
│   ├── note_list.jsp            # 笔记列表页面
│   ├── note_add.jsp             # 笔记添加页面
│   └── note_edit.jsp            # 笔记编辑页面
└── README.md                    # 项目说明文档

核心功能

1. 用户管理

  • 用户注册: 支持用户名、密码、邮箱注册,密码采用MD5加密存储
  • 用户登录: 支持用户名密码登录,包含验证码验证机制
  • 会话管理: 使用Session管理用户登录状态,确保用户只能访问自己的数据

2. 笔记管理

  • 笔记列表: 展示当前用户的所有笔记,支持按更新时间倒序排列
  • 发布笔记: 支持标题、内容编辑,可上传图片和附件文件
  • 编辑笔记: 支持修改笔记内容,可重新上传图片和文件
  • 删除笔记: 支持删除笔记,自动清理关联数据

3. 文件管理

  • 图片上传: 支持常见图片格式上传,自动生成唯一文件名
  • 文件上传: 支持任意格式文件上传,最大支持10MB
  • 文件下载: 支持已上传文件的下载功能

4. 安全特性

  • 密码加密: 使用MD5算法对用户密码进行加密存储
  • 验证码: 登录时生成图形验证码,防止暴力破解
  • 权限控制: 用户只能查看和操作自己的笔记数据
  • SQL注入防护: 使用PreparedStatement防止SQL注入攻击

代码特点

1. 架构设计

  • MVC模式: 采用经典的MVC三层架构,职责分离清晰
    • Model: 实体类(Entity)和数据访问层(DAO)
    • View: JSP页面展示
    • Controller: Servlet处理请求和响应
  • 分层设计: 严格按照实体层、数据访问层、业务逻辑层、控制层进行组织

2. 代码规范

  • 统一编码: 所有文件使用UTF-8编码,Servlet统一设置字符编码
  • 命名规范: 遵循Java命名规范,类名使用大驼峰,方法名使用小驼峰
  • 注释完整: 所有类和方法都有完整的JavaDoc注释

3. 安全性设计

  • 密码加密: 用户密码使用MD5加密,确保即使数据库泄露也无法直接获取明文密码
  • 参数验证: 前后端双重验证,防止非法数据提交
  • 权限校验: 每个需要登录的操作都进行Session验证
  • SQL安全: 使用PreparedStatement预编译,防止SQL注入

4. 用户体验

  • 统一UI: 所有页面采用统一的样式设计,包含Header、左侧菜单、右侧内容区、Footer
  • 响应式设计: 页面布局合理,适配不同屏幕尺寸
  • 交互友好: 提供操作提示、确认对话框、错误提示等交互功能
  • 文件预览: 图片上传后即时预览,文件上传后显示下载链接

5. 技术实现细节

  • 字符编码处理: 所有Servlet在处理POST请求前设置UTF-8编码
  • 文件上传: 使用Servlet 3.0的Part API实现文件上传,支持大文件
  • 验证码生成: 使用Java Graphics API动态生成验证码图片
  • 数据库连接: 使用JDBC连接池思想,封装数据库连接工具类
  • 异常处理: 完善的异常处理机制,确保系统稳定运行

数据库设计

用户表(user)

  • id: 用户ID(主键,自增)
  • username: 用户名(唯一索引)
  • password: 密码(MD5加密)
  • email: 邮箱
  • create_time: 创建时间

笔记表(note)

  • id: 笔记ID(主键,自增)
  • user_id: 用户ID(外键,关联user表)
  • title: 笔记标题
  • content: 笔记内容
  • file_path: 附件文件路径
  • image_path: 图片路径
  • create_time: 创建时间
  • update_time: 更新时间

部署说明

1. 环境要求

  • JDK 1.8或更高版本
  • MySQL 8.0数据库
  • Tomcat 8.5或更高版本(支持Servlet 3.0+)
  • 支持Servlet 3.0+的Web服务器

2. 数据库配置

  1. 执行database.sql脚本创建数据库和表结构
  2. 修改src/com/biji/util/DBUtil.java中的数据库连接信息:
    • URL: 数据库连接地址
    • USERNAME: 数据库用户名
    • PASSWORD: 数据库密码

3. 项目导入

  1. 将项目导入到IntelliJ IDEA
  2. 配置项目为Web项目,设置WebContent为Web资源根目录
  3. 添加必要的JAR包到WebContent/WEB-INF/lib目录:
    • mysql-connector-java-8.0.x.jar (MySQL驱动)
    • servlet-api.jar (Servlet API,通常由Tomcat提供)
    • jsp-api.jar (JSP API,通常由Tomcat提供)

4. 服务器配置

  1. 配置Tomcat服务器
  2. 部署项目到Tomcat
  3. 启动服务器
  4. 访问 http://localhost:8080/biji/login.jsp

使用说明

1. 用户注册

  • 访问注册页面,填写用户名、密码、确认密码和邮箱
  • 系统会验证用户名是否已存在
  • 注册成功后跳转到登录页面

2. 用户登录

  • 输入用户名和密码
  • 输入验证码(点击验证码图片可刷新)
  • 登录成功后跳转到笔记列表页面

3. 笔记管理

  • 查看笔记: 在笔记列表页面查看所有笔记
  • 发布笔记: 点击"发布新笔记",填写标题和内容,可选择性上传图片和文件
  • 编辑笔记: 在笔记列表中点击"编辑"按钮,修改笔记内容
  • 删除笔记: 在笔记列表中点击"删除"按钮,确认后删除

4. 文件上传

  • 图片上传: 在发布/编辑笔记页面,点击图片上传区域选择图片,上传成功后自动显示预览
  • 文件上传: 在发布/编辑笔记页面,点击文件上传区域选择文件,上传成功后显示下载链接

注意事项

  1. 数据库连接: 确保数据库服务已启动,连接信息正确
  2. 文件上传目录: 文件上传到WebContent/uploads目录,确保该目录有写入权限
  3. 字符编码: 确保数据库、JSP页面、Servlet都使用UTF-8编码
  4. Session管理: 用户登录后Session有效,关闭浏览器后需要重新登录
  5. 文件大小限制: 默认最大文件上传大小为10MB,可在FileUploadServlet中修改

开发历程

本项目采用传统的JavaWeb开发方式,不使用Maven等构建工具,所有依赖需要手动添加。项目严格按照用户需求实现,包括:

  1. 不使用Filter: 所有请求处理都在Servlet中完成
  2. 使用javax包: 使用传统的javax.servlet而非jakarta.servlet
  3. 统一Servlet跳转: 所有JSP页面链接都通过Servlet进行跳转
  4. 完整的前后端验证: 前后端都有相应的数据验证逻辑
  5. 区分GET和POST: 所有Servlet都正确区分GET和POST请求处理
  6. 本地资源: 所有CSS和JS文件都使用本地文件,不引用在线资源

后续优化建议

  1. 分页功能: 当笔记数量较多时,可以添加分页功能

  2. 搜索功能: 添加笔记标题和内容的搜索功能

  3. 分类管理: 为笔记添加分类功能,方便管理

  4. 富文本编辑器: 集成富文本编辑器,提升内容编辑体验

  5. 图片压缩: 上传图片时自动压缩,节省存储空间

  6. 文件类型限制: 限制可上传的文件类型,提高安全性

标签管理.png

登录.png

发布笔记.png

分类编辑.png

分类管理.png

全部笔记.png

收藏笔记.png

首页.png

文件管理.png

注册.png

最近笔记.png

标签编辑.png