一个基于Spring Boot和现代Web技术的房屋租赁市场系统,支持租客预约房屋和房东管理预约功能。
该项目是一个完整的房屋租赁市场系统,旨在连接租客和房东,提供便捷的房屋预约和管理服务。系统采用前后端分离架构,支持实时通信,具有现代化的UI设计和流畅的用户体验。
- Spring Boot 3.2.4 - 企业级Java应用开发框架
- Java 21 - 最新LTS版本的Java编程语言
- MyBatis Plus - 强大的ORM框架,简化数据库操作
- Spring Security - 提供JWT认证和授权
- JWT (JSON Web Token) - 用于用户身份验证和会话管理
- WebSocket (STOMP) - 实现实时通信,支持预约状态实时更新
- RESTful API - 标准化的API设计
- MySQL 8.0+ - 数据库管理系统
- Hibernate - Java持久化框架
- Apache Commons - 提供常用工具类
- Swagger/OpenAPI - API文档生成和测试工具
- HTML5 - 页面结构
- CSS3 - 样式设计,包含动画和响应式布局
- JavaScript - 交互逻辑和WebSocket客户端
- Font Awesome - 图标库
- SockJS & STOMP - WebSocket通信协议
- WebJars - 前端依赖管理
- 多角色系统:支持租客(TENANT)、房东(LANDLORD)和管理员(ADMIN)三种角色
- JWT令牌认证:安全的无状态身份验证机制
- 角色权限控制:不同角色拥有不同功能权限
- 验证码系统:防止机器人注册和登录
- 用户注册与登录:支持安全的账户创建和访问
- 房源发布:房东可以发布房源信息(标题、类型、面积、价格、地址、描述等)
- 房源展示:支持图片展示、详细信息和筛选功能
- 房源搜索:按关键词、类型、价格范围、面积范围、地址等条件搜索
- 房源收藏:租客可以收藏感兴趣的房源
- 房源详情:查看房源完整信息和图片
-
租客功能:
- 浏览房源并发起预约请求
- 查看预约历史和状态
- 接收预约状态实时通知
- 取消预约请求
-
房东功能:
- 查看所有预约请求
- 批准或拒绝预约
- 管理预约历史
- 接收新预约实时通知
- 查看租客信息
- 基于WebSocket的STOMP协议
- 租客提交预约后,房东实时收到通知
- 房东处理预约后,租客实时收到状态更新
- 无需页面刷新,实时数据同步
- 用户管理:查看、编辑、删除用户信息
- 房源管理:审核房源、管理房源信息
- 预约管理:监控所有预约状态
- 系统统计:查看平台运营数据
- 现代化的渐变背景和动画效果
- 响应式设计,适配各种设备
- 流畅的交互动画
- 直观的状态展示(使用颜色编码的徽章)
SpringBoot-HouseMarket/
├── src/
│ ├── main/
│ │ ├── java/com/springboot/springboothousemarket/
│ │ │ ├── Config/ # 配置类(安全、WebSocket、MyBatis等)
│ │ │ ├── Controller/ # 控制器层(API接口)
│ │ │ ├── Entity/ # 实体类(数据库映射)
│ │ │ ├── Mapper/ # MyBatis映射接口
│ │ │ ├── Service/ # 服务层(业务逻辑)
│ │ │ ├── Util/ # 工具类(JWT工具等)
│ │ │ ├── dto/ # 数据传输对象
│ │ │ └── SpringBootHouseMarketApplication.java # 应用启动类
│ │ └── resources/
│ │ ├── mapper/ # MyBatis XML映射文件
│ │ ├── static/ # 静态资源(HTML、CSS、JS)
│ │ │ ├── assets/ # 资源文件(js)
│ │ │ ├── css/ # CSS样式文件
│ │ │ ├── admin.html # 管理员界面
│ │ │ ├── house-detail.html # 房源详情页
│ │ │ ├── landlord.html # 房东界面
│ │ │ ├── login.html # 登录界面
│ │ │ ├── register.html # 注册界面
│ │ │ └── tenant.html # 租客界面
│ │ ├── application.yml # 应用配置文件
│ │ └── application-private.yml # 私有配置文件 存放本地敏感信息
│ └── test/ # 测试代码
├── pom.xml # Maven依赖管理
└── README.md # 项目说明文档
- Java 21
- Maven 3.8+
- MySQL 8.0+
- Node.js (可选,用于前端开发)
-
克隆项目
git clone <repository-url> cd SpringBoot-HouseMarket
-
配置数据库
- 创建MySQL数据库(例如:房源市场)
- 修改 [application.yml] 中的数据库连接信息
- 设置环境变量 DB_USERNAME 和 DB_PASSWORD,或直接在配置文件中设置数据库用户名和密码
-
构建项目
mvn clean install
-
运行项目
mvn spring-boot:run
或者打包后运行:
mvn package java -jar target/SpringBoot-HouseMarket-0.0.1-SNAPSHOT.jar
-
访问系统
- 打开浏览器访问
http://localhost:8082 - 系统会自动打开登录页面
http://localhost:8082/login.html - 使用注册的账号登录系统
- 打开浏览器访问
系统使用以下主要数据表:
users- 用户信息表houses- 房源信息表appointments- 预约信息表favorites- 收藏信息表
注册流程:
- 用户填写注册信息(用户名、密码、角色)
- 系统验证信息格式和唯一性
- 密码加密后存储到数据库
- 用户状态设置为待审核或直接激活
登录流程:
- 用户输入用户名、密码和角色
- 系统验证用户凭据
- 生成JWT令牌
- 返回用户信息和访问令牌
JWT令牌机制:
- 令牌有效期:10小时
- 包含用户角色信息
- 每次请求需要在Header中携带
Authorization: Bearer <token> - 令牌过期后需要重新登录
租客端:
- 浏览房源列表
- 选择感兴趣的房源
- 填写预约信息(时间、地点等)
- 提交预约请求
- 实时收到预约状态更新
房东端:
- 登录系统
- 查看待处理的预约请求
- 批准或拒绝预约
- 查看预约历史记录
- 实时接收新预约通知
系统使用Spring Boot的WebSocket支持,通过STOMP协议实现实时通信:
- 配置了
/ws端点用于WebSocket连接 - 使用
/topic和/queue前缀进行消息路由 - 租客和房东订阅不同的消息通道
- 预约状态变化时,通过WebSocket实时推送通知
- JWT认证,无状态设计
- 角色权限控制(租客/房东/管理员)
- WebSocket连接也经过认证
- 密码加密存储
- 请求频率限制和防刷机制
- SQL注入防护(MyBatis Plus内置)
- XSS攻击防护
- 现代化渐变背景:使用紫色系渐变,营造高端感
- 粒子动画效果:增强视觉体验
- 响应式布局:适配桌面、平板和移动设备
- 流畅的过渡动画:悬停效果、滑动动画等
- 直观的状态标识:使用不同颜色的徽章表示预约状态
- 用户友好的导航:清晰的菜单结构和页面导航
- 用户系统:注册、登录、角色管理、JWT认证
- 房源管理:发布、编辑、删除、搜索、详情展示
- 预约系统:预约创建、状态管理、实时通知
- 收藏功能:租客收藏感兴趣的房源
- 实时通信:基于WebSocket的预约状态更新
- 前端界面:租客端、房东端、管理员端
- 安全机制:JWT认证、角色权限控制
- API文档:通过Swagger自动生成API文档
- 文件上传:房源图片上传功能
- 数据统计:基本的用户和房源统计
以下功能计划在后续版本中实现:
- 支付系统:支持在线支付定金或租金
- 评价系统:租客和房东互相评价
- 消息系统:租客和房东之间的即时通讯
- 高级搜索和过滤:按价格、面积、位置等多条件搜索
- 房源图片上传:支持多张图片上传和预览
- 地图集成:房源位置可视化
- 通知中心:统一管理所有通知
- 数据统计和报表:房东查看房源预约情况统计
- 邮件通知:重要事件邮件提醒
- 手机验证码:注册和找回密码功能
- 微服务架构改造
- 引入前端框架(React/Vue)
- 移动端APP开发
- 云部署支持
- 大数据分析,提供智能推荐
- AI驱动的房源推荐系统
- 智能客服集成
系统提供完整的RESTful API接口,可通过Swagger UI访问:
- 访问地址:
http://localhost:8082/swagger-ui.html - 提供所有API的在线文档和测试功能
主要API模块:
/api/v1/auth- 认证相关接口/api/houses- 房源管理接口/api/appointments- 预约管理接口/api/favorites- 收藏管理接口/api/users- 用户管理接口
运行单元测试:
mvn test运行集成测试:
mvn verify欢迎提交Issue和Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
本项目采用MIT许可证 - 查看 LICENSE 文件了解详情
项目还在持续完善中,欢迎关注和参与! 🚀