一、实验目的及要求
1.实验目的
(1)掌握 SpringBoot 项目进阶开发能力。
(2)学会使用 MyBatis-Plus 条件构造器与分页插件。
(3)理解并实现 统一异常处理机制(@ControllerAdvice)。
(4)掌握 登录认证(JWT)基本原理与实现。
(5)提升系统的 实用性与安全性。
(6)理解简单的 权限控制思想(RBAC 初步)。
2.实验要求
功能扩展,在实验一基础上,新增以下功能:
(1)分页与条件查询
实现图书分页查询
支持条件筛选(如书名模糊查询、作者查询)
(2)统一异常处理
使用 @ControllerAdvice 实现全局异常处理
返回统一错误信息格式
(3)统一结果封装
定义统一返回结构(code / message / data)
(4)用户登录功能(JWT)
实现简单用户表(user)
登录接口(用户名 + 密码)
登录成功返回 Token(JWT)
后续接口需携带 Token 才能访问
(5)权限控制(基础)
区分普通用户与管理员(可简化为字段)
只有管理员可以删除图书
二、实验使用的主要设备(含软件系统)及要求
主要实验仪器及设备:计算机+网络,spring boot+mybatis-plus,mysql。
三、实验操作过程及内容
数据表:
用户实体类:
用户Mapper:
用户服务接口:
用户服务实现:
登录控制器:
JWT工具类:
JWT拦截器:
全局异常处理器:
业务异常类:
登录请求DTO:
登录响应DTO:
分页查询请求DTO:
Web配置:
MyBatis-Plus配置:
四、实验结论、问题与建议(含取得的成果)
1、实验结论
本次实验在图书项目上的基础上,成功完成 Spring Boot 进阶功能开发,实现了 MyBatis-Plus 分页与条件查询、全局统一异常处理、JWT 登录认证、基础 RBAC 权限控制,系统安全性、规范性与实用性显著提升,所有进阶功能均正常运行,达到实验全部要求。
2、取得的成果
熟练使用MyBatis-Plus 条件构造器,实现书名、作者、价格、库存等多维度模糊与范围查询。
完成分页插件配置,实现图书分页查询,支持自定义页码与页大小。
通过@ControllerAdvice实现全局统一异常处理,自定义业务异常,返回规范 JSON 错误信息。
完成JWT 登录认证全流程:用户表设计、登录接口、Token 生成、拦截器校验、请求头传递。
实现基础权限控制,区分管理员与普通用户,仅管理员可执行删除操作。
统一接口返回格式,代码分层更清晰,项目结构符合企业开发规范。
完成接口测试,认证、授权、分页、异常捕获均正常生效。
3、实验中遇到的问题
JWT 拦截器配置错误,登录接口被拦截,无法正常访问。
MyBatis-Plus 分页插件未注册,分页查询不生效,返回全量数据。
JWT 密钥、过期时间设置不规范,出现Token 解析失败。
权限判断逻辑不完善,普通用户仍可调用删除接口。
部分异常未被全局处理器捕获,返回原生错误页面。
DTO 命名与字段不统一,导致参数接收异常。
4、改进建议
拦截器配置:精确设置excludePathPatterns,确保登录、注册等接口放行。
分页配置:必须注册MybatisPlusInterceptor并添加分页插件,否则分页失效。
JWT 优化:使用安全密钥、合理设置过期时间,增加 Token 校验方法。
权限完善:在 Controller 层增加角色判断,结合拦截器实现细粒度权限控制。
异常处理:覆盖常见异常类型,统一错误码与提示信息,提升用户体验。
代码规范:统一 DTO、实体、配置类命名,增加注释,便于维护。
扩展方向:可添加密码加密、接口限流、日志切面、多角色权限管理等功能。