# java实例 **Repository Path**: ma-zhida/java-instance ## Basic Information - **Project Name**: java实例 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-03 - **Last Updated**: 2025-11-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java后端项目 一个基于Spring Boot的完整Java后端项目,采用分层架构设计,提供用户管理功能的RESTful API。 ## 项目简介 本项目是一个标准的Spring Boot企业级后端应用,实现了完整的用户管理功能,包括: - 用户创建、查询、更新、删除 - 统一响应格式 - 全局异常处理 - 参数验证 - 日志记录 - 数据库持久化 ## 技术栈 - **框架**: Spring Boot 3.2.0 - **语言**: Java 17 - **构建工具**: Maven - **数据访问**: Spring Data JPA - **数据库**: - 开发环境: H2 (内存数据库) - 生产环境: MySQL 8.0+ - **日志**: SLF4J + Logback - **工具库**: Lombok - **参数验证**: Jakarta Validation - **前端**: HTML5 + CSS3 + JavaScript (原生) - **跨域**: CORS配置支持 ## 项目结构 ``` javaxiangmu/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/example/javaxiangmu/ │ │ │ ├── JavaXiangmuApplication.java # 主启动类 │ │ │ ├── common/ # 公共组件 │ │ │ │ ├── ApiResponse.java # 统一响应格式 │ │ │ │ └── GlobalExceptionHandler.java # 全局异常处理 │ │ │ ├── controller/ # 控制器层 │ │ │ │ └── UserController.java # 用户控制器 │ │ │ ├── dto/ # 数据传输对象 │ │ │ │ └── UserDTO.java # 用户DTO │ │ │ ├── entity/ # 实体类 │ │ │ │ └── User.java # 用户实体 │ │ │ ├── repository/ # 数据访问层 │ │ │ │ └── UserRepository.java # 用户Repository │ │ │ ├── service/ # 业务逻辑层 │ │ │ │ └── UserService.java # 用户服务 │ │ │ └── config/ # 配置类 │ │ │ ├── CorsConfig.java # CORS跨域配置 │ │ │ └── WebConfig.java # Web MVC配置 │ │ └── resources/ │ │ ├── application.yml # 开发环境配置 │ │ ├── application-prod.yml # 生产环境配置 │ │ ├── logback-spring.xml # 日志配置 │ │ └── static/ # 静态资源目录 │ │ ├── index.html # 前端页面 │ │ ├── css/ │ │ │ └── style.css # 样式文件 │ │ └── js/ │ │ └── app.js # JavaScript逻辑 ├── pom.xml # Maven配置文件 └── README.md # 项目文档 ``` ## 环境要求 - JDK 17 或更高版本 - Maven 3.6+ - MySQL 8.0+ (生产环境,可选) ## 快速开始 ### 1. 克隆项目 ```bash git clone cd javaxiangmu ``` ### 2. 编译项目 ```bash mvn clean install ``` ### 3. 运行项目 ```bash mvn spring-boot:run ``` 或者直接运行主类: ```bash java -jar target/javaxiangmu-1.0.0.jar ``` ### 4. 访问应用 应用启动后,默认运行在 `http://localhost:8080` **前端页面**: `http://localhost:8080/index.html` 或 `http://localhost:8080/` **H2数据库控制台**: `http://localhost:8080/h2-console` - JDBC URL: `jdbc:h2:mem:testdb` - 用户名: `sa` - 密码: (空) ## API文档 ### 基础路径 所有API接口的基础路径: `/api/users` ### 接口列表 #### 1. 创建用户 **请求** ``` POST /api/users Content-Type: application/json ``` **请求体** ```json { "username": "testuser", "email": "test@example.com", "password": "123456" } ``` **响应** ```json { "code": 200, "message": "用户创建成功", "data": { "id": 1, "username": "testuser", "email": "test@example.com", "password": "123456", "createdAt": "2024-01-01T10:00:00", "updatedAt": "2024-01-01T10:00:00" } } ``` #### 2. 根据ID查询用户 **请求** ``` GET /api/users/{id} ``` **响应** ```json { "code": 200, "message": "操作成功", "data": { "id": 1, "username": "testuser", "email": "test@example.com", "createdAt": "2024-01-01T10:00:00", "updatedAt": "2024-01-01T10:00:00" } } ``` #### 3. 根据用户名查询用户 **请求** ``` GET /api/users/username/{username} ``` **响应** ```json { "code": 200, "message": "操作成功", "data": { "id": 1, "username": "testuser", "email": "test@example.com", "createdAt": "2024-01-01T10:00:00", "updatedAt": "2024-01-01T10:00:00" } } ``` #### 4. 查询所有用户 **请求** ``` GET /api/users ``` **响应** ```json { "code": 200, "message": "操作成功", "data": [ { "id": 1, "username": "testuser", "email": "test@example.com", "createdAt": "2024-01-01T10:00:00", "updatedAt": "2024-01-01T10:00:00" } ] } ``` #### 5. 更新用户 **请求** ``` PUT /api/users/{id} Content-Type: application/json ``` **请求体** ```json { "username": "newusername", "email": "newemail@example.com", "password": "newpassword" } ``` **响应** ```json { "code": 200, "message": "用户更新成功", "data": { "id": 1, "username": "newusername", "email": "newemail@example.com", "updatedAt": "2024-01-01T11:00:00" } } ``` #### 6. 删除用户 **请求** ``` DELETE /api/users/{id} ``` **响应** ```json { "code": 200, "message": "用户删除成功", "data": null } ``` ### 错误响应格式 ```json { "code": 400, "message": "错误信息", "data": null } ``` ## 数据验证规则 ### 用户数据验证 - **用户名**: - 不能为空 - 长度: 3-20个字符 - 必须唯一 - **邮箱**: - 不能为空 - 必须符合邮箱格式 - 必须唯一 - **密码**: - 不能为空 - 长度: 至少6个字符 ## 日志配置 项目使用SLF4J + Logback作为日志框架,日志配置位于 `src/main/resources/logback-spring.xml`。 ### 日志级别 - **DEBUG**: 调试信息(开发环境) - **INFO**: 业务操作记录 - **WARN**: 警告信息 - **ERROR**: 错误信息 ### 日志输出 - **控制台**: 开发环境实时查看 - **文件**: - 全部日志: `spring.log` - 错误日志: `spring.log.error` - **滚动策略**: 按大小和时间自动滚动归档 ## 配置说明 ### 开发环境配置 (application.yml) 使用H2内存数据库,适合开发和测试: - 数据库: H2内存数据库 - JPA: 自动创建表结构 - 日志级别: DEBUG ### 生产环境配置 (application-prod.yml) 使用MySQL数据库: - 数据库: MySQL - JPA: 验证表结构 - 日志级别: INFO ### 切换环境 ```bash # 使用生产环境配置 mvn spring-boot:run -Dspring-boot.run.arguments=--spring.profiles.active=prod ``` ## 架构说明 ### 分层架构 1. **Controller层**: 处理HTTP请求,参数验证,调用Service层 2. **Service层**: 业务逻辑处理,事务管理 3. **Repository层**: 数据访问,数据库操作 4. **Entity层**: 数据实体,数据库映射 5. **DTO层**: 数据传输对象,用于API接口 6. **Common层**: 公共组件(响应格式、异常处理) ### 设计模式 - **依赖注入**: 使用Spring的构造函数注入 - **统一响应**: 所有API返回统一格式 - **全局异常处理**: 集中处理异常 - **事务管理**: Service层使用@Transactional注解 ## 前端交互 ### 前端页面 项目内置了一个完整的前端演示页面,展示如何与后端API交互。 **访问地址**: `http://localhost:8080/index.html` **功能特性**: - ✅ 用户创建表单(带参数验证) - ✅ 用户列表展示 - ✅ 用户信息编辑 - ✅ 用户删除功能 - ✅ 实时消息提示 - ✅ 响应式设计 ### 前端文件结构 ``` src/main/resources/static/ ├── index.html # 主页面 ├── css/ │ └── style.css # 样式文件(渐变背景、卡片布局) └── js/ └── app.js # JavaScript逻辑和API调用 ``` ### API交互方式 前端使用原生JavaScript的Fetch API与后端通信: ```javascript // 示例:创建用户 async function createUser(userData) { const response = await fetch('http://localhost:8080/api/users', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(userData) }); const result = await response.json(); if (result.code === 200) { console.log('创建成功', result.data); } } ``` ### CORS跨域配置 后端已配置CORS,允许跨域访问: - **配置文件**: `src/main/java/com/example/javaxiangmu/config/CorsConfig.java` - **允许来源**: 所有来源(开发环境),生产环境建议限制 - **允许方法**: GET, POST, PUT, DELETE等 - **允许凭证**: 支持Cookie等凭证 如需修改CORS配置,编辑 `CorsConfig.java` 文件。 ### 静态资源配置 静态资源通过 `WebConfig.java` 配置: - 访问路径: `/static/**` 映射到 `classpath:/static/` - 缓存时间: 3600秒(1小时) ### 前端开发说明 如果你要修改前端页面: 1. **修改HTML**: 编辑 `src/main/resources/static/index.html` 2. **修改样式**: 编辑 `src/main/resources/static/css/style.css` 3. **修改逻辑**: 编辑 `src/main/resources/static/js/app.js` 4. **API地址**: 在 `app.js` 中的 `API_BASE_URL` 变量中配置 ### 独立前端项目集成 如果你的前端项目部署在不同的服务器上: 1. 修改 `app.js` 中的 `API_BASE_URL` 为后端地址 2. 确保后端CORS配置允许你的前端域名 3. 使用Fetch API或Axios等库调用后端接口 示例(Vue.js): ```javascript import axios from 'axios'; axios.post('http://localhost:8080/api/users', userData) .then(response => { if (response.data.code === 200) { console.log('成功', response.data.data); } }); ``` ## 开发指南 ### 添加新功能模块 1. 创建Entity实体类 2. 创建Repository接口 3. 创建Service服务类 4. 创建Controller控制器 5. 创建DTO数据传输对象(如需要) ### 代码规范 - 遵循Java命名规范 - 使用Lombok简化代码 - 添加必要的注释 - 使用日志记录关键操作 - 异常处理要合理 ## 常见问题 ### 1. 端口被占用 修改 `application.yml` 中的 `server.port` 配置。 ### 2. 数据库连接失败 检查数据库配置是否正确,确保数据库服务已启动。 ### 3. 编译错误 确保JDK版本为17或更高,Maven版本为3.6+。 ## 许可证 MIT License ## 联系方式 如有问题,请联系项目维护者。