1. 项目概述
作为一名长期从事Java Web开发的工程师,我最近完成了一个面向大学生群体的租房平台项目。这个系统采用SpringBoot+MySQL技术栈开发,主要解决当前大学生租房过程中遇到的几个痛点问题:信息真实性难以保障、租房流程繁琐、缺乏统一管理平台等。
在实际开发过程中,我发现这类面向特定群体的垂直领域平台有几个显著特点:用户群体特征明确(18-24岁在校大学生)、租房周期性强(通常以学期为单位)、对价格敏感度高。这些特点直接影响了系统的功能设计和交互方式。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术选型与架构设计
2.1 技术栈组成
经过多方比较,最终确定的技术方案如下:
- 后端框架:SpringBoot 2.7.3
- 前端技术:JSP + Bootstrap 5
- 数据库:MySQL 8.0
- 构建工具:Maven 3.8.1
- 开发环境:Eclipse 2022-06
选择SpringBoot而非传统Spring MVC的主要考虑是:
- 自动配置特性大幅减少了XML配置工作量
- 内嵌Tomcat简化了部署流程
- Starter依赖机制让第三方库集成更便捷
- Actuator提供了完善的生产级监控
2.2 系统架构设计
系统采用经典的三层架构:
code复制表示层(JSP) → 业务逻辑层(Spring) → 数据访问层(MyBatis)
特别设计了API网关层处理以下通用逻辑:
- 身份认证(JWT验证)
- 请求限流(Guava RateLimiter)
- 日志记录(AOP实现)
- 异常统一处理(@ControllerAdvice)
3. 核心功能实现
3.1 用户认证模块
采用改良版的RBAC模型,包含以下关键表设计:
sql复制CREATE TABLE `sys_user` (
`user_id` bigint NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`password` varchar(100) NOT NULL,
`salt` varchar(20) NOT NULL,
`role_id` int DEFAULT NULL,
PRIMARY KEY (`user_id`),
UNIQUE KEY `username` (`username`)
);
CREATE TABLE `sys_role` (
`role_id` int NOT NULL AUTO_INCREMENT,
`role_name` varchar(100) NOT NULL,
`remark` varchar(100) DEFAULT NULL,
PRIMARY KEY (`role_id`)
);
密码加密采用SHA-256加盐算法:
java复制public static String encrypt(String password, String salt) {
return DigestUtils.sha256Hex(password + salt);
}
3.2 房源管理模块
房源信息表设计考虑了大学生租房的特殊需求:
sql复制CREATE TABLE `house_info` (
`house_id` bigint NOT NULL AUTO_INCREMENT,
`title` varchar(100) NOT NULL,
`price` decimal(10,2) NOT NULL,
`area` decimal(6,2) NOT NULL,
`room_type` varchar(20) NOT NULL COMMENT '1-单间
