Micro 是一个基于 Java Web 技术栈开发的轻量级社交平台。项目采用经典的 MVC 分层架构,实现了完整的社交媒体核心功能,包括用户认证、动态发布、社交互动、关注关系管理及后台管理等功能模块。
- 用户系统:注册、登录、个人资料管理、头像/背景图上传
- 动态功能:发布动态(支持图片/视频)、删除动态、动态流浏览
- 社交互动:点赞、评论、@提及、#话题标签
- 关注系统:关注/取消关注、粉丝列表、关注列表
- 搜索功能:用户搜索、动态搜索、话题搜索
- 管理后台:用户管理、内容审核、数据统计
┌─────────────────────────────────────────────────────────┐
│ 表现层 (Servlet + JSP) │
├─────────────────────────────────────────────────────────┤
│ 业务逻辑层 (Service) │
├─────────────────────────────────────────────────────────┤
│ 数据访问层 (DAO) │
├─────────────────────────────────────────────────────────┤
│ 数据存储 (MySQL + 文件系统) │
└─────────────────────────────────────────────────────────┘
在开始之前,请确保您的开发环境满足以下要求:
| 软件 | 版本要求 | 说明 |
|---|---|---|
| JDK | 17 或更高 | 推荐使用 OpenJDK 17 或 Oracle JDK 17 |
| MySQL | 8.0 或更高 | 需要提前安装并启动 MySQL 服务 |
| IntelliJ IDEA | 2021.3 或更高 | 推荐使用 Ultimate 版(支持 Web 开发) |
| Apache Tomcat | 9.0 或更高 | 作为 Servlet 容器运行项目 |
| Maven | 3.6 或更高 | IDEA 通常已内置,也可单独安装 |
| Git | 任意版本 | 用于克隆项目代码 |
打开终端,执行以下命令将项目克隆到本地:
# 使用 HTTPS
git clone https://github.com/llfzzz/Micro.git
# 或使用 SSH
git clone git@github.com:llfzzz/Micro.git
# 进入项目目录
cd Micro- 启动 IntelliJ IDEA
- 选择 File → Open
- 选择克隆下来的
Micro文件夹 - 点击 OK 打开项目
- 等待 IDEA 自动导入 Maven 依赖(右下角会显示进度)
💡 提示:如果依赖下载缓慢,可以在
File→Settings→Build, Execution, Deployment→Build Tools→Maven中配置国内镜像源。
- 打开 File → Project Structure(快捷键
Cmd + ;或Ctrl + Alt + Shift + S) - 在左侧选择 Project
- 设置 SDK 为 JDK 17(如果没有,点击 Add SDK → Download JDK 下载)
- 设置 Language level 为
17 - Sealed types, always-strict floating-point semantics - 点击 Apply 保存
打开 MySQL 客户端(命令行或 DataGrip/Navicat 等工具),执行以下 SQL:
-- 创建数据库
CREATE DATABASE IF NOT EXISTS micro
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- 使用数据库
USE micro;执行项目中的数据库脚本文件:
-- 方式一:在 MySQL 命令行中执行
source /path/to/Micro/src/main/resources/db/schema.sql
-- 方式二:复制 schema.sql 的内容到客户端工具中执行脚本文件位置:src/main/resources/db/schema.sql
打开配置文件 src/main/resources/application.properties,修改数据库连接信息:
# 数据库配置
db.url=jdbc:mysql://localhost:3306/micro?useSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=true
db.user=root # 修改为你的 MySQL 用户名
db.password=your_password # 修改为你的 MySQL 密码
db.pool.max=10 # 连接池最大连接数
# 文件存储路径(根据实际情况修改)
file.storage.path=/path/to/Micro/src/main/webapp/static/uploads
# 上传限制
upload.maxFileSize=104857600 # 单文件最大 100MB
upload.maxRequestSize=209715200 # 请求最大 200MB
# 安全配置
bcrypt.workFactor=12 # 密码加密强度
⚠️ 重要:请务必修改db.password为你本地 MySQL 的实际密码!
如果尚未安装 Tomcat,请前往 Apache Tomcat 官网 下载 Tomcat 9.x 版本。
-
点击右上角的 Add Configuration(或 Run → Edit Configurations)
-
点击左上角的 + 号,选择 Tomcat Server → Local
-
配置 Tomcat 服务器:
- Name:输入
Micro Tomcat(可自定义) - Application server:点击 Configure,添加 Tomcat 安装目录
- URL:设置为
http://localhost:8080/Micro - On 'Update' action:选择
Update classes and resources - On frame deactivation:选择
Update classes and resources
- Name:输入
-
切换到 Deployment 选项卡:
- 点击 + 号,选择 Artifact
- 选择
Micro:war exploded - Application context 设置为
/Micro
-
点击 Apply → OK 保存配置
Server 选项卡配置:
┌─────────────────────────────────────────────────────────┐
│ Name: Micro Tomcat │
│ Application server: Apache Tomcat 9.0.xx │
│ URL: http://localhost:8080/Micro │
│ ☑ Open browser after launch │
│ HTTP port: 8080 │
└─────────────────────────────────────────────────────────┘
Deployment 选项卡配置:
┌─────────────────────────────────────────────────────────┐
│ Deploy at the server startup: │
│ + Micro:war exploded │
│ Application context: /Micro │
└─────────────────────────────────────────────────────────┘
- 点击右上角的绿色 Run 按钮(或按
Shift + F10) - 等待 Tomcat 启动完成
- 浏览器会自动打开
http://localhost:8080/Micro - 页面会自动跳转到
http://localhost:8080/Micro/app/feed
🎉 恭喜!项目已成功运行!
Micro/
├── src/
│ ├── main/
│ │ ├── java/com/micro/ # Java 源代码
│ │ │ ├── dao/ # 数据访问层
│ │ │ │ └── impl/ # DAO 实现类
│ │ │ ├── entity/ # 实体类
│ │ │ ├── exception/ # 自定义异常
│ │ │ ├── filter/ # 过滤器
│ │ │ ├── listener/ # 监听器
│ │ │ ├── service/ # 业务逻辑层
│ │ │ │ └── impl/ # Service 实现类
│ │ │ ├── servlet/ # 控制器(Servlet)
│ │ │ └── util/ # 工具类
│ │ ├── resources/ # 配置文件
│ │ │ ├── application.properties # 应用配置
│ │ │ ├── logback.xml # 日志配置
│ │ │ └── db/
│ │ │ └── schema.sql # 数据库脚本
│ │ └── webapp/ # Web 资源
│ │ ├── index.jsp # 入口页面
│ │ ├── static/ # 静态资源
│ │ │ ├── css/ # 样式文件
│ │ │ ├── js/ # JavaScript 文件
│ │ │ └── uploads/ # 用户上传文件
│ │ └── WEB-INF/
│ │ ├── web.xml # Web 配置
│ │ └── jsp/ # JSP 页面
│ │ ├── layout/ # 布局模板
│ │ └── admin/ # 管理后台页面
│ └── test/ # 测试代码
├── document/ # 项目文档
│ └── 需求规格说明书.md
├── pom.xml # Maven 配置
└── README.md # 项目说明
解决方案:配置 Maven 镜像源
在 IDEA 中打开 File → Settings → Build, Execution, Deployment → Build Tools → Maven,勾选 User settings file 并编辑 settings.xml,添加阿里云镜像:
<mirrors>
<mirror>
<id>aliyun</id>
<name>Aliyun Maven Mirror</name>
<url>https://maven.aliyun.com/repository/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>检查以下几点:
- MySQL 服务是否已启动
- 数据库名称是否为
micro application.properties中的用户名和密码是否正确- MySQL 是否允许远程连接(如果不是 localhost)
解决方案:8080 端口被占用,选择以下任一方式解决:
# 方式一:查找并结束占用 8080 端口的进程
# macOS/Linux
lsof -i :8080
kill -9 <PID>
# Windows
netstat -ano | findstr :8080
taskkill /PID <PID> /F
# 方式二:修改 Tomcat 端口
# 在 IDEA 的 Run Configuration 中修改 HTTP port 为其他端口(如 8081)检查以下几点:
- Application context 是否设置为
/Micro - 浏览器控制台是否有 404 错误
- 尝试清除浏览器缓存后刷新
检查以下几点:
file.storage.path配置的目录是否存在- 目录是否有写入权限
- 上传文件是否超过大小限制
项目提供 RESTful API 接口,主要包括:
| 模块 | 基础路径 | 说明 |
|---|---|---|
| 认证 | /api/auth/* |
注册、登录、登出 |
| 动态 | /api/posts/* |
动态的 CRUD 操作 |
| 评论 | /api/comments/* |
评论功能 |
| 用户 | /api/users/* |
用户资料管理 |
| 关注 | /api/follows/* |
关注关系管理 |
| 上传 | /api/upload |
文件上传 |
| 管理 | /api/admin/* |
管理后台接口 |
详细的 API 文档请参阅:需求规格说明书
| 路径 | 说明 |
|---|---|
/app/feed |
首页动态流 |
/app/login |
登录页面 |
/app/register |
注册页面 |
/app/post?id=xxx |
动态详情 |
/app/profile?id=xxx |
用户主页 |
/app/profile/edit |
编辑资料 |
/app/follows?type=xxx&id=xxx |
关注/粉丝列表 |
/app/search?q=xxx |
搜索结果 |
/app/create-post |
发布动态 |
/app/admin |
管理后台 |
| 角色 | 权限说明 |
|---|---|
| USER | 普通用户,可使用所有基础功能 |
| ADMIN | 管理员,额外拥有后台管理权限 |
💡 提示:可在数据库中直接修改用户的
role字段为ADMIN来创建管理员账号。
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 提交 Pull Request
如有问题或建议,欢迎通过以下方式联系:
- 提交 Issue
- 发送邮件至:luofangzheng26@gmail.com
Made with ❤️ by PL shi shabi