UJCMS: an open source content management system based on SpringBoot
UJCMS is an open source content management system (Java CMS) developed based on SpringBoot, aiming to provide developers with a flexible, easy-to-use and powerful platform. It makes use of mainstream technologies such as SpringBoot, MyBatis, Shiro, Lucene, FreeMarker, TypeScript, Vue3, ElementPlus, and references Jspxcms's years of development experience to optimize and improve some pain points of the original system.
Technical Highlights of UJCMS
UJCMS always adheres to the principles of "simple" and "flexible" in technology selection and architecture design, striving to reduce system maintenance costs and secondary development difficulty, and provide developers with a more convenient experience.
1. Technical architecture
Persistence layer: Use MyBatis to replace Hibernate to simplify data persistence operations and improve development efficiency.
View layer: Use Vue3 with separate front-end and back-end to replace JSP to achieve a more modern user interface design and improve user experience.
Database: Redesign the database architecture and optimize data storage and access methods.
2. Function Highlights
UJCMS provides a wealth of functions, covering the core requirements of a content management system, and improves the flexibility and ease of use of the system through some innovative designs:
1. Custom fields
Queryable: All custom fields can be queried, which enhances the flexibility of the system and meets diverse content management needs.
Visual design: Provides a drag-and-drop visual design interface to realize WYSIWYG custom field configuration and simplify the operation process.
2. URL address SEO optimization
Dynamic address modification: The system provides a global setting function to facilitate users to customize the URL address prefixes of columns and articles to improve SEO optimization effects.
Multi-site optimization: The URL addresses of subsites are no longer in the form of www.example.com/site-abc, but in the more friendly form of www.example.com/abc, simplifying user access paths.
3. Clean up junk attachments
Attachment management: Provides attachment management function to facilitate users to view all unused pictures and attachments, delete them, and clean up system space.
Automatic cleaning: After deleting an article, the system will automatically clean up unused images and attachments in the article to avoid generating a large amount of junk data.
4. Attachments, templates, and index files are deployed independently
Independent directory: Deploy files generated when the system is running (such as uploaded images and attachments, front-end templates, index files) to an independent directory to facilitate system backup, upgrade and management.
5. The template file is in the same directory as CSS and JS
Convenient management: Put template files, CSS, and JS in the same directory to simplify the template production and deployment process and improve development efficiency.
6. MyBatis parameterized query
Flexible query: By passing query parameters in the front end, the query function of any field and related table can be realized. There is no need to write code in the background, which greatly reduces the workload of back-end development.
Improve efficiency: Simplify query operations and improve development efficiency.
7. Split primary and secondary tables
Improve performance: Split complex tables with large query volume into primary and secondary tables, put commonly used query fields into the primary table, and put less commonly used fields into secondary tables to improve system performance under large data volumes.
Environmental Requirements for UJCMS
JDK 8
MySQL 5.7 (compatible with 5.6, 8.0)
Tomcat 8.5, 9.0 (Servlet 3.1+)
Maven 3.5 or higher
System backend compatible browsers: Chrome, Firefox, Edge
The compatible browsers of the front page depend on the template. The user has full control over the template and can theoretically support any browser. The demo template supports IE10+ (except library function), Chrome, Firefox, and Edge.
Installation and startup of UJCMS
1. Import data into database
Create database: When using MySQL, select the utf8mb4 character set (supports more special characters such as emoticon characters emoji, recommended).
Execute database script: The database script is located in the database directory.
2. Start the program
Import the Maven project: Import the Maven project in Eclipse and wait for the third-party jar package (such as Spring) to be downloaded from the Maven server.
Modify the database connection: Open the /src/main/resources/application.propertis file and modify the values of spring.datasource.url, spring.datasource.username, and spring.datasource.password according to the actual situation.
Start the program: In Eclipse, right-click the project name, select Run as - Java Application, select Application - com.ujcms, and click OK.
IntelliJ IDEA: The operation steps are similar to Eclipse. Find the com.ujcms.Application class in the project and right-click it, select Run 'Application'.
3. Access address
Front desk: http://localhost:8080/
Backend: http://localhost:8080/cp/ (username: admin, password: password)
Note: The backend front-end is developed based on Vue 3. If you want to modify the backend interface, please download the ujcms-cp project separately.
Summarize
UJCMS is a powerful, flexible and easy-to-use open source content management system with excellent performance. It adopts mainstream technology stacks and optimizes some common problems, aiming to provide developers with a more convenient and efficient development and maintenance experience. If you need a reliable and easily scalable CMS platform, UJCMS deserves your attention.