## 项目概述

jfinal_cms 是一个基于 Java 开发的功能强大的信息咨询网站（CMS）系统。它采用简洁强大的 JFinal 作为 Web 框架，模板引擎使用 Beetl，数据库使用 MySQL，前端使用 Bootstrap 框架。项目支持 OAuth2 认证、账号注册、密码加密、评论及回复、消息提示、网站访问量统计、文章评论数和浏览量统计、回复管理以及权限管理等功能。后台模块涵盖栏目管理、栏目公告、栏目滚动图片、文章管理、回复管理、意见反馈、我的相册、相册管理、图片管理、专辑管理、视频管理、缓存更新、友情链接、访问统计、联系人管理、模板管理、组织机构管理、用户管理、角色管理、菜单管理、数据字典管理等。

## 核心功能

- **内容管理**：支持文章、栏目、相册、图片、专辑、视频等内容的发布与管理。
- **多站点支持**：支持单站点和多站点模式，可通过域名解析到不同站点模板。
- **模板系统**：后端模板支持 Bootstrap 默认样式、黑色样式和 flat-ui 样式；前端模板支持默认内容发布、官网模板、图片模板和视频模板。
- **用户与权限**：支持用户注册、登录、密码加密（3DES）、OAuth2 认证、角色权限管理、菜单权限拦截。
- **互动功能**：支持评论及回复、意见反馈、消息提示、文章点赞等。
- **统计功能**：网站访问量统计、文章评论数和浏览量统计。
- **API 接口**：提供完善的 API 接口，支持多版本并行、参数加密、登录验证、黑名单和版本控制。
- **缓存机制**：支持缓存自动更新，可配置 Redis 缓存。
- **文件管理**：支持模板在线编辑、文件上传备份、阿里云 OSS 备份恢复。

## 适用与不适用场景

**适用场景**：
- 需要快速搭建信息咨询类网站、企业官网、博客、图片展示、视频展示等场景。
- 需要多站点管理的门户网站。
- 需要定制化模板的 CMS 项目。
- 需要提供 API 接口供第三方调用的场景。

**不适用场景**：
- 对前端交互要求极高的单页应用（SPA）场景。
- 需要非关系型数据库（如 MongoDB）作为主存储的场景。
- 需要微服务架构的复杂系统。
- 对实时性要求极高的应用（如实时聊天）。

## 技术架构与依赖

- **Web 框架**：JFinal（版本 5.2.2，根据 ChangeLog 最新更新）
- **模板引擎**：Beetl（版本 3.16.2）
- **数据库**：MySQL（驱动 8.0）
- **连接池**：Druid（从 c3p0 更换）
- **前端框架**：Bootstrap
- **缓存**：支持 Redis（通过 JedisClient）
- **构建工具**：Maven
- **其他**：OAuth2、UEditor、UMeditor、FST 等

## 安装与快速开始

1. 下载项目代码，安装 JDK、Maven、MySQL。
2. 在项目目录下运行 `mvn install`，提示 BUILD SUCCESS 即可。
3. 创建 MySQL 用户和数据库，运行 `/jfinal_cms/sql` 下对应 `jfinal_cms_v4.sql`。
4. 数据库配置文件：`/jfinal_cms/src/main/resources/conf/db.properties`。
5. 如需要 OAuth2，设置 `src/conf/oauth.properties`。
6. 运行：`mvn tomcat:run`。
7. 系统默认采用单站点模式，可在“其他管理”下“站点管理”菜单切换。
8. 如果使用多站点，可在“系统管理”下“多站点标示”菜单中，将“多站点标示”项目修改为 true。
9. 多站点需要设置各个站点对应的域名，通过域名解析到不同的站点模板。

## 典型使用方法

- **后台管理**：访问 `http://${ip:port}/${project_name}/admin`，使用测试账号 `admin/admin123` 或 `test/123456` 登录。
- **API 调用**：参考 `docs/api文档.md`，例如获取栏目列表：`/api/action/folders?version=1.0.1&apiNo=1000000&time=20170314160401&apiUser=admin&checkSum=YBrs&p={siteId:2}`。
- **模板切换**：在后台“模板管理”中可在线编辑和切换模板。
- **多站点配置**：在“系统管理”中开启多站点标示，并设置各站点域名。

## 配置与部署要点

- **数据库配置**：修改 `db.properties` 中的数据库连接信息。
- **OAuth2 配置**：修改 `oauth.properties` 以启用 OAuth2。
- **API 配置**：在系统管理-参数配置中，可设置 `API.PARAM.ENCRYPT` 为 true 开启参数加密，`API.LOGIN.VALID` 为 true 开启登录验证。
- **缓存配置**：可配置 Redis 缓存，修改相关配置。
- **部署方式**：支持 Maven 内嵌 Tomcat 运行，也可打包成 WAR 部署到外部 Tomcat。

## 限制、风险与许可证

- **限制**：项目主要面向传统 Web 应用，前端交互相对简单；文档可能不完整，部分功能依赖第三方服务（如 CDN）。
- **风险**：项目更新频率较低，可能存在安全漏洞，建议定期检查更新；使用默认账号密码存在安全风险，生产环境务必修改。
- **许可证**：Apache-2.0。

## 官方链接

- GitHub 仓库：https://github.com/jflyfox/jfinal_cms
- 码云仓库：https://gitee.com/jflyfox/jfinal_cms
- API Client 项目：https://github.com/jflyfox/jfinal_cms_api_client
- 演示站点：http://mtg.jflyfox.com/ 等

## 信息来源和分析时间

- 信息来源：GitHub 仓库 README、ChangeLog.md、docs/api文档.md、docs/donate.md。
- 分析时间：2026-06-10（基于最新 release 日期）。