手机网站布局技术,做网站百度还是阿里巴巴好,wordpress 国产,大作设计网站作品myblog 项目是一个典型的 Spring Boot 项目#xff0c;主要包括用户注册、登录、文章管理#xff08;创建、查询、更新、删除#xff09;等功能。
1. 项目结构与依赖设置
项目初始化与依赖
使用 Spring Initializr 创建项目。引入必要的依赖包#xff1a; Spring Boot W…myblog 项目是一个典型的 Spring Boot 项目主要包括用户注册、登录、文章管理创建、查询、更新、删除等功能。
1. 项目结构与依赖设置
项目初始化与依赖
使用 Spring Initializr 创建项目。引入必要的依赖包 Spring Boot Web用于开发 REST API。MyBatis 和 MySQL 驱动用于数据库交互。Spring Validation用于验证用户输入。Lombok减少样板代码。Hibernate Validator手动加入以支持输入验证。
2. 数据库设计与建表
数据库表设计
my_users用于存储用户信息包含字段id、name、email、password、role_id 等。my_roles用于存储用户角色包含字段id、name、description 等。my_articles用于存储文章信息包含字段id、title、author、content、category_id、tags、is_deleted、created、modified 等。
SQL 表的相关操作
插入用户和角色使用插入语句添加初始用户和角色数据。外键约束与错误注意在添加用户时由于外键关系必须确保角色 ID 存在。
3. 用户模块
用户实体类 (MyUser)
使用 Lombok 注解 Data、NoArgsConstructor、AllArgsConstructor 简化代码。添加必要的字段验证注解例如 NotBlank 和 NotNull。
用户注册与登录
注册功能实现用户注册功能使用 UserService 服务层来处理业务逻辑。登录功能实现登录验证用户名和密码并通过 TokenService 生成 JWT Token。
用户控制器 (UserController)
注册接口使用 PostMapping(/register)调用 UserService 来进行用户注册。登录接口使用 PostMapping(/login)调用 UserService 登录并生成 Token最后将 Token 作为 JSON 响应返回。
4. 文章管理模块
文章实体类 (MyArticle)
MyArticle使用 Lombok 注解简化代码。 字段包括 id、title、author、content、categoryId、tags、isDeleted、created、modified。字段验证对必要的字段加上验证注解如 NotBlank 和 NotNull。
文章控制器 (ArticleController)
添加文章 使用 PostMapping(/article) 添加新文章。使用 Validated 注解对请求参数进行验证若验证失败通过 BindingResult 获取错误信息。 查询文章 获取所有文章使用 GetMapping(/articles)不分页。分页查询文章使用 GetMapping(/articles/{pageNum})通过传入的页码查询文章列表。 更新文章 更新接口使用 PutMapping(/article)。检查传入的文章对象是否包含 ID并验证其字段。调用 ArticleService 更新文章。 删除文章 软删除接口使用 DeleteMapping(/article/{id})。实现软删除通过修改 isDeleted 字段为 2 来实现逻辑删除。
文章服务层 (ArticleService)
添加文章 (add)为文章设置 ID 并存储。查询所有文章 (findAll)查询所有文章未分页。分页查询文章 (getListByPageNum)根据传入的页码计算偏移量来查询分页文章。文章详情 (detail)根据文章 ID 查询文章详情。更新文章 (update)更新文章信息。删除文章 (delete)软删除文章修改 isDeleted 字段。
文章 Mapper (MyArticleMapper)
使用 MyBatis 注解 Mapper 定义数据库操作。新建文章使用 Insert 注解插入文章。查询文章 不分页使用 Select(SELECT * FROM my_articles WHERE is_deleted 1) 查询所有未删除的文章。分页使用 Select(SELECT * FROM my_articles WHERE is_deleted 1 LIMIT #{offset}, 30) 分页查询。查询详情通过文章 id 查询文章详情。 更新文章使用 Update 更新文章内容。软删除文章使用 Update(UPDATE my_articles SET is_deleted 2 WHERE id #{id}) 实现软删除。
5. 错误处理与验证
输入验证
添加和更新文章使用 Validated 注解验证输入数据并使用 BindingResult 来捕获验证错误。Controller 层对错误返回相应的错误码和消息方便前端处理。
全局异常处理
异常处理机制在每个控制器方法中使用 try-catch 来捕获异常返回 JsonResultObject将错误信息统一封装在响应中确保系统健壮性。
6. Token 处理
登录时生成 Token 在 UserController 的 /login 方法中调用 TokenService 生成 Token返回给客户端用于后续请求的认证。 权限验证 使用自定义注解和拦截器来验证每个请求是否携带有效的 Token用于保护需要认证的接口例如添加、更新、删除文章。
7. 项目运行与测试
本地测试
数据库初始化确保所有的数据库表已经正确创建并且初始数据如用户角色已插入。Postman 测试接口 用户注册与登录通过 /v1/register 和 /v1/login 测试用户注册和登录功能登录成功后获取 Token。文章接口 添加文章使用 /v1/article 通过 POST 请求添加新文章。查询文章通过 /v1/articles 或 /v1/articles/{pageNum} 测试文章列表的查询。更新与删除文章分别通过 PUT 和 DELETE 请求测试更新和删除文章。
8. 关键问题与解决方案
SQL 外键约束错误在插入用户数据时确保角色数据已存在避免外键约束失败。Token 未返回问题确保登录逻辑中成功生成 Token并将其正确返回给前端。验证失败的处理在控制器中使用 BindingResult 检查参数错误并及时返回有意义的错误信息。重复方法定义错误在 MyArticleMapper 中避免重复的方法定义保证每个方法的名称唯一且功能明确。
总结
项目基于 Spring Boot结合了 MyBatis 和 Hibernate Validator 等技术栈适用于构建一个基本的博客系统。包含了用户管理和文章管理模块并实现了增删改查功能。使用 JWT Token 进行用户身份认证保证了部分接口的安全性。在开发过程中通过单独的 Service 层来处理业务逻辑将控制器层的职责简化为参数验证与返回结果的封装确保代码的可维护性和扩展性。