同步操作将从 dromara/ujcms 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
Java开源网站内容管理系统(java cms)、Java建站系统。使用SpringBoot、MyBatis、Spring Security、Lucene、FreeMarker、TypeScript、Vue3、ElementPlus等技术开发。使用Apache-2.0
开源协议,可免费用于商业网站。
支持无头CMS,可使用模板(Freemarker)+标签或Vue(React)+API方式制作网站。支持自定义字段及字段可视化设计,自定义字段在前后端均可作为搜索条件。
技术上尽量选择主流、先进、简单的架构,方便用户进行二次开发。设计上强调“简单”、“灵活”,避免繁杂的设计和实现,降低系统维护成本和二次开发难度。功能使用上也要求“简单”,避免复杂的使用逻辑。
QQ交流群:626599871
微信交流群:加作者微信拉入群
自定义字段可查询:支持自定义字段,且所有的自定义字段都可查询,极大地增强了系统的灵活性。
自定义字段可视化设计:自定义字段使用拖拽式的可视化设计,所见即所得。
MyBatis参数化查询:数据通常会需要通过不同字段进行搜索,对每个表都写大量的查询,无疑是一项繁重的工作。MyBatis参数化查询功能通过前台传递查询参数,即可实现任意字段及关联表的查询功能(如:Q_title=abc,Q_user-username=test),无需后台编写代码,大幅减少后端的开发工作量。后台开发和前台标签(API)均可使用参数化查询,因此标签(API)几乎可以实现任意查询效果。
URL地址SEO优化:栏目和文章的动态地址可以通过系统的全局设置功能进行修改。默认的栏目和文章URL地址前缀为/channel
和/article
,可以根据自己的需要修改,如改为/categories
和/archives
。多站点的情况下,子站点URL地址可为目录形式(www.example.com/abc
)或次级域名形式(abc.example.com
)。
清理垃圾附件:系统使用时,可能会多传、误传图片等附件;在删除文章后,文章中的图片还保留在系统中,产生大量的未使用的垃圾图片和附件。系统中的附件管理可以查看所有未使用的图片和附件,并可对其进行删除。
附件、模板、索引文件独立部署:系统运行时产生的文件可以和程序分开,部署到独立的目录,方便系统备份、升级和管理。比如上传的图片和附件、前台的模板、索引文件,都可以部署到程序以外的目录。
模板文件和CSS、JS在同一目录:模板文件和CSS、JS分开的目录结构,会给模板制作和部署带来很大的不便性。而将模板文件和CSS、JS放在一起的设计,会方便很多。
主副表拆分:对查询量大的复杂表进行主副表拆分,把常用查询字段放到主表,不常用的字段放到副表,提升大数据量下的性能表现。
ujcms
或其它任何名称。utf8mb4
(不要选择utf8
,该字符集可能导致某些特殊字符出现乱码)。UTF-8
(不要使用GB18030
,该字符集可能导致某些特殊字符出现乱码)。UTF8
(不要使用GBK
,该字符集可能导致某些特殊字符出现乱码)。如果在Windows环境使用MySQL,且以后需要迁移到Linux环境的MySQL,建议将Windows环境的MySQL配置为表名大小写敏感模式。
因为Linux环境下MySQL的表名是大小写敏感的;而在Windows环境下MySQL表名大小写不敏感,且会自动把大写的表名改为小写的表名。从Windows向Linux迁移数据时,本为大写表名的成为了小写表名,导致程序出错。需要手动把小写表名改回大写表名,费时费力且容易出错。
UJCMS系统的表名都为小写,不管在Window还是Linux下都没有问题,但第三方的类库(如Liquibase、Flowable、Quartz等)创建的表则为大写表名。所以Windows环境下也把MySQL设置成表名大小写敏感,有利以后迁移数据。
可修改MySQL配置文件my.ini
:
[mysqld]
# Windows下表名也区分大小写,与Linux一致。
lower_case_table_names=2
此配置必须在MySQL初始化之前设置。一旦MySQL已经启动或初始化,再修改该配置,MySQL将无法再次启动。
File
- Open
,选择项目文件夹(有pom.xml
的文件夹)。会开始从maven服务器下载第三方jar包(如spring等),需要一定时间,请耐心等待。/src/main/resources/application.yaml
文件,根据实际情况修改spring.datasource.url
、spring.datasource.username
、spring.datasource.password
的值。其中spring.datasource.url
中的数据库名要和上一步创建的数据库名一致。Project
导航中找到/src/main/java/com/ujcms/cms/Application
类,右键点击,选择Run 'Application'
。也可直接点击右上角的绿色三角图标(Run 'Application'
)。com.ujcms.cms.Application: Started Application in xxx seconds
信息,代表程序启动完成。如果程序首次启动,还在创建数据库表时,强行关闭了程序;再次启动程序可能会出现类似LockException: Could not acquire change log lock
或Waiting for changelog lock....
的报错信息;此时只要将数据库databasechangeloglock
表中数据清空(注意,不是databasechangelog
表),也可删除数据库所有表甚至重建数据库,再次启动程序即可继续创建数据库表和初始化数据,正常启动。http://localhost:8080/abc
,即代表部署在/abc
目录下,没有部署在根目录。解决办法请参考下一章节内容。ujcms-cp
项目。http://localhost:8080/
,如需修改域名、端口等内容,可分别到后台配置 - 系统设置
和配置 - 站点设置
中修改。如程序无法正常编译,通常是因为Maven没有正确下载jar依赖包。可以尝试在IntelliJ IDEA的Maven
窗口点击刷新按钮Reload All Maven Projects
按钮,尝试重新下载jar依赖包,或者点击菜单Build
- Rebuild Project
重新编译项目。
如首次使用IntelliJ IDEA,没有配置JDK,也会导致无法正常程序不能编译。可选中项目,点击File
- Project Structure...
,在Project Settings - Project
处,配置Project SDK
。
如运行时出现flowable-eventregistry-db-changelog.xml::1::flowable:
Specified key was too long; max key length is 767 bytes
等错误信息,则 MySQL 5.7 需要设置innodb_large_prefix=ON
;MySQL 5.6 需要设置innodb_large_prefix=1
。从 mysql 5.7.7 开始,innodb_large_prefix
的默认值就是ON
,因此只要MySQL版本大于5.7.7即可避免这个问题。
mvn package -P war
。会生成target/ujcms-***.war
文件和target/ujcms-***
目录。target/ujcms-***/
目录下文件复制到tomcat的webapps/ROOT
目录下(请先删除原tomcat/webapps目录下所有文件夹)。复制完成后有类似webapps/ROOT/uploads
webapps/ROOT/templates
webapps/ROOT/WEB-INF
等文件夹。ujcms-***.war
更名为ROOT.war
(注意大小写),复制到tomcat的webapps
目录下(请先删除原tomcat/webapps目录下所有文件夹)。复制完成后文件地址为webapps/ROOT.war
文件。war部署要使用解压模式,tomcat默认就是使用解压模式,如修改过tomcat配置,请检查tomcat/conf/server.xml
配置文件中<Host ... unpackWARs="true" ... >
的配置项。/WEB-INF/classes/application.yaml
文件中的数据库地址、用户名、密码相关配置是否与部署环境的数据库一致。mvn package -P jar
。target/ujcms-***.jar
文件复制到部署目录。ujcms-***.jar
所在目录)新建文件夹static
。src/main/webapp
目录下所有文件复制到上一步新建的static
目录下。复制完成后,会有类似static/WEB-INF
static/templates
等文件夹。java -jar ujcms-***.jar
命令,即可启动。完整目录结构:
程序通常在部署在Tomcat根目录,首页访问地址类似http://www.mysite.com/
http://localhost/
http://localhost:8080/
。在一些特殊的场合,如在Eclipse默认的Tomcat启动方式,可能将程序部署在某一个路径下,首页访问地址类似http://www.mysite.com/ujcms/
http://localhost/ujcms/
http://localhost:8080/ujcms/
。此时访问网站前台会出现样式不能正常显示的情况,可以到后台配置 - 全局设置
中设置上下文路径
,类似为/ujcms
,其中斜杠/
不能省略,ujcms
为部署目录的路径,如在开发环境,则通常为项目名。
开发环境要避免使用上下文路径,除非网站正式部署时也要部署到相应的路径下,否则在开发环境下上传的图片部署到正式环境时,不能正常显示。因为上传图片时,图片地址会带有上下文路径的信息(如:/ujcms/uploads/...
)。
Eclipse默认的tomcat启动方式会将程序部署到特定目录再启动,并不是直接在项目所在目录启动tomcat,这时上传的图片(包括通过系统后台新增和修改的模板)也保存在特定的部署目录,并不会保存在程序所在的目录。当修改了Eclipse源代码或文件,会自动重新部署程序,之前上传的图片会被清空。如果发现在开发环境下上传的图片突然都找不到了,很可能就是这个原因。
综上所述,强烈建议使用之前启动程序
中介绍的方式启动程序。
网站前台模板位于/src/main/webapp/templates
目录,使用Freemarker
技术。通过修改模板文件,可以完全控制网站页面显示的内容。也可使用Vue(React)+API的方式制作网站。
网站前端技术可以使用传统的HTML(Freemarker),通过UJCMS提供的Freemarker的自定义标签获取数据;也可以使用前后端分离的vue或react,通过调用API获取数据。
由于前后端分离的方式对搜索引擎不友好,对于需要通过搜索引擎推广的网站不建议采用。
演示站使用传统的HTML(Freemarker),使用到以下一些技术:
/src/main/webapp/template/1/default/_files
等功能。此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。