# ujcms **Repository Path**: zero_mySpace/ujcms ## Basic Information - **Project Name**: ujcms - **Description**: Java开源内容管理系统(java cms)。使用SpringBoot、MyBatis、Shiro、TypeScript、Vue3、ElementPlus等技术开发。 - **Primary Language**: Java - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: https://www.ujcms.com - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 217 - **Created**: 2022-03-23 - **Last Updated**: 2022-03-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # UJCMS Java开源内容管理系统(java cms)。使用SpringBoot、MyBatis、Shiro、Lucene、FreeMarker、TypeScript、Vue3、ElementPlus等技术开发。 UJCMS是在Jspxcms多年的开发经验上,重新设计开发的Java CMS系统。针对原系统中的一些痛点问题,进行解决、优化和改进,并使用`GPL-2`开源协议发布,可免费商用。 技术上尽量选择主流、先进、简单的架构,方便用户进行二次开发。持久化层用MyBatis替换了Hibernate;视图层用前后端分离的Vue3替换了JSP;数据库也进行了重新设计。设计上强调“简单”、“灵活”,避免繁杂的设计和实现,降低系统维护成本和二次开发难度。功能使用上也要求“简单”,避免复杂的使用逻辑。 * 官网地址:[https://www.ujcms.com](https://www.ujcms.com) * 下载地址:[https://www.ujcms.com/download/](https://www.ujcms.com/download/)。提供安装包下载。 * 演示站前台:[https://demo.ujcms.com](https://demo.ujcms.com)。使用手机访问或者浏览器手机模式访问前台,会自动呈现手机页面。 * 演示站后台:[https://demo.ujcms.com/cp/](https://demo.ujcms.com/cp/)。演示用户登录后只拥有浏览后台功能,所有操作功能点击后都会显示无权访问(403)。如需进行操作测试,可以下载软件到本地安装。 * QQ交流群:626599871 ## 技术及功能亮点 **自定义字段可查询**:所有的自定义字段都可查询增强了系统的灵活性。 **自定义字段可视化设计**:自定义字段使用拖拽式的可视化设计,所见即所得。 **URL地址SEO优化**:栏目和文章的动态地址可以通过系统的全局设置功能进行修改。默认的栏目和文章URL地址前缀为`/channel`和`/article`,可以根据自己的需要修改,如改为`/categories`和`/archives`。多站点的情况下,子站点URL地址也由原来的`www.example.com/site-abc`的形式改为更友好的`www.example.com/abc`的形式。 **清理垃圾附件**:系统使用时,可能会多传、误传图片等附件;在删除文章后,文章中的图片还保留在系统中,产生大量的未使用的垃圾图片和附件。系统中的附件管理可以查看所有未使用的图片和附件,并可对其进行删除。 **附件、模板、索引文件独立部署**:系统运行时产生的文件可以和程序分开,部署到独立的目录,方便系统备份、升级和管理。比如上传的图片和附件、前台的模板、索引文件,都可以部署到程序以外的目录。 **模板文件和CSS、JS在同一目录**:模板文件和CSS、JS分开的目录结构,会给模板制作和部署带来很大的不便性。而将模板文件和CSS、JS放在一起的设计,会方便很多。 **MyBatis参数化查询**:后台数据通常会需要通过不同字段进行搜索,对每个表都写大量的查询,无疑是一项繁重的工作。MyBatis参数化查询功能通过前台传递查询参数,即可实现任意字段及关联表的查询功能(如:Q_title=abc,Q_user-username=test),无需后台编写代码,大幅减少后端的开发工作量。 **主副表拆分**:对查询量大的复杂表进行主副表拆分,把常用的查询字段放到主表,不常用的字段放到副表,提升大数据量下的性能表现。 ## 环境要求 * JDK 8。 * MySQL 5.7(兼容 5.6、8.0)。 * Tomcat 8.5、9.0 (Servlet 3.1+)。 * Maven 3.5 或更高版本。 * 系统后台兼容的浏览器:Chrome、Firefox、Edge。 * 前台页面兼容的浏览器取决于模板,使用者可以完全控制模板,理论上可以支持任何浏览器。演示模板支持IE10+(文库功能除外)、Chrome、Firefox、Edge。 ## 创建数据库 1. 创建数据库。如使用MySQL,字符集选择`utf8mb4`(支持更多特殊字符如表情字符emoji,推荐)。不要选择`utf8`,该字符集可能导致某些特殊字符出现乱码。 2. 无需执行SQL文件,程序启动时会自动创建表。 ## 启动程序 1. 在eclipse中导入maven项目。点击eclipse菜单`File` - `Import`,选择`Maven` - `Existing Maven Projects`。创建好maven项目后,会开始从maven服务器下载第三方jar包(如spring等),需要一定时间,请耐心等待。(另外:Eclipse中会出现红叉的错误警告,如是JavaScript或HTML报错则无需理会,不影响程序正常运行。这是由于Eclipse校验规则误判所致,可以在Eclipse中设置禁止对js文件进行错误校验。) 2. 修改数据库连接。打开`/src/main/resources/application.propertis`文件,根据实际情况修改`spring.datasource.url`、`spring.datasource.username`、`spring.datasource.password`的值。 3. 启动程序。在eclipse中,右键点击项目名,选择`Run as` - `Java Application`,选择`Application - com.ujcms`,然后点击`OK`。也可在左侧导航中找到`com.ujcms.Application`类并右键点击,选择`Run as` - `Java Application`即可直接运行。 4. 使用 IntelliJ IDEA 开发的,步骤与 Eclipse 类似。打开工程后,修改数据库连接,然后直接点击右上角的绿色三角图标(`Run 'Application'`),即可直接运行。也可在左侧导航中找到`com.ujcms.Application`类并右键点击,选择`Run 'Application'`。 5. 前台地址:[http://localhost:8080/](http://localhost:8080/),使用手机访问前台或者使用浏览器模拟手机访问前台,会自适应显示手机端的界面。如遇到前台页面没有样式的情况,则是因为没有部署在Tomcat的根目录。如前台首页地址类似为`http://localhost:8080/abc`,即代表部署在`/abc`目录下,没有部署在根目录。解决办法请参考下一章节内容。 6. 后台地址:[http://localhost:8080/cp/](http://localhost:8080/cp/),用户名:admin,密码:password。后台前端基于`Vue 3`开发,如要修改后台界面,请另外下载`ujcms-cp`项目。 ## jar部署 程序默认打包为WAR格式。如需要使用springboot的jar方式启动,可按以下步骤修改: * 将`pom.xml`文件`war`代码改为`jar` * 将`pom.xml`文件以下代码删除: ``` org.springframework.boot spring-boot-starter-tomcat provided ``` * 使用maven进行打包`mvn package`。 * 将打包的`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源代码或文件,会自动重新部署程序,之前上传的图片会被清空。如果发现在开发环境下上传的图片突然都找不到了,很可能就是这个原因。 综上所述,强烈建议使用`启动程序`中介绍的方式启动程序。 ## 后端技术 * SpringBoot:提供了对Spring开箱即用的功能。简化了Spring配置,提供自动配置auto-configuration功能。 * SpringMVC:MVC框架,使用方便,Bug较少。 * Mybatis:持久化框架。 * FreeMarker:网站模板组件。 * Shiro:安全组件。配置简便。 * Lucene:全文检索组件。 ## 前端技术 * TypeScript: JavaScript的一个超集。 * Vite 2: 下一代前端开发与构建工具。 * Vue 3:JavaScript框架。 * ElementPlus:Vue 3 UI 框架。 * Tailwind CSS: 功能类优先的 CSS 框架。 * VueRouter: Vue 路由组件。 * VueI18n: Vue 国际化组件。 * Tinymce: 富文本编辑器。