Java评论系统可用Spring Boot+MyBatis+Thymeleaf实现,支持提交、查看、删除评论;数据库用H2/MySQL,表含comment(id、content、author_name、article_id、create_time);REST接口规范,防重复提交与XSS防护。

用Java开发一个简单评论系统,核心是实现用户提交、查看、删除评论的功能,同时保证基本的数据持久化和前后端交互。不需要复杂框架也能起步,适合练手或嵌入小型业务模块。
基础技术选型建议
轻量级组合即可满足需求:
- 后端:Spring Boot(简化配置和启动) + MyBatis 或 JdbcTemplate(操作数据库)
- 数据库:H2(开发测试)、MySQL(生产环境)
- 前端:Thymeleaf(服务端渲染,免配前端工程)或纯 HTML + Ajax(对接 REST 接口)
- 实体关系:一条评论属于某个内容(如文章ID),可关联用户ID(若需登录)
数据库表设计要点
最少两张表支撑基础功能:
- comment:id(主键)、content(TEXT)、author_name(VARCHAR)、article_id(BIGINT,外键)、create_time(DATETIME)
- article(可选):id、title、content —— 用于演示“某文章下的评论”场景
- 无需用户表?可先用匿名评论,author_name 直接由表单提交;后续扩展再加 user 表和登录校验
后端核心逻辑实现
围绕增删查三个接口展开:
立即学习“Java免费学习笔记(深入)”;
- 提交评论:接收 POST /comment,参数校验(非空、长度限制),插入数据库,返回成功/失败结果
-
列出评论:GET /comments?articleId=123,按 article_id 查询并按时间倒序,返回 List
- 删除评论:DELETE /comment/{id},校验权限(如仅作者或管理员可删),执行 delete 操作
- 使用 @RequestBody 接收 JSON、@RequestParam 获取查询参数、@PathVariable 绑定路径变量,保持 REST 风格
前后端连通与体验优化
让页面真正“能用”:
- 用 Thymeleaf 渲染评论列表页,form 表单提交到 /comment,成功后重定向回原页面并刷新列表
- 若用 Ajax,前端用 fetch 或 jQuery.post 提交,成功后动态追加 DOM 元素,避免整页刷新
- 添加简单防重复提交:按钮提交后置灰、后端对相同 content + article_id 做短时去重(如5分钟内不允许多条相同评论)
- 时间显示格式化:用 @JsonFormat(pattern = "yyyy-MM-dd HH:mm") 注解或前端 JS 格式化
不复杂但容易忽略细节:字符编码(尤其中文入库)、SQL注入防护(MyBatis #{} 自动转义)、XSS 过滤(评论内容展示前做 HTML 转义)。










