概述

UJCMS采用前后端分离的开发模式,即后端提供API接口,前端(Vue)调用API接口。

前台网站除了以API提供接口外,还提供了传统的Freemarkder模板引擎生成页面的方式,有利于搜索引擎优化(SEO)。

后端主要技术栈:

  • Spring Boot:提供开箱即用的Spring功能

  • Spring MVC:MVC框架

  • Spring Security:安全组件

  • MyBatis:持久化框架

  • MyBatis Pagehelper:MyBaties分页插件

  • Lucene:全文检索组件

  • Flowable:工作流引擎

  • Liquibase:数据库版本管理组件

  • Freemarker:前台页面生成模板引擎

  • Caffeine:Java缓存组件

后端分层结构

后端采用三层结构:Controller -> Service -> Mapper

Controller用于响应客户端的请求,Service用于处理业务逻辑,Mapper则操作数据库。

  • Controller对应包名:com.ujcms.cms.*.web.backendapi com.ujcms.cms.*.web.api com.ujcms.cms.*.web.frontend

  • Service对应包名:com.ujcms.cms.*.service

  • Mapper对应包名:com.ujcms.cms.*.mapper

  • Domain(实体类)对应包名:com.ujcms.cms.*.domain

完整流程

SpringSecurity(权鉴过滤器) -> Controller(接收请求) -> Service(业务逻辑) -> Mapper接口(数据库操作接口) -> mapper.xml(数据库操作接口对应的SQL语句)

后台接口

提供给管理后台的接口,包名为com.ujcms.cms.*.web.backendapi

该部分接口提供给后台前端,用于管理系统。使用JWT认证模式。

前台接口

提供给网站前台的接口,包名为com.ujcms.cms.*.web.api

该部分接口提供给前台前端(即网站前端),用于普通用户浏览网站。

支持两种认证模式,一种是传统的Session认证模式(以/frontend地址开头),一种是JWT认证模式(以/api地址开头)。

前台页面标签

网站前台使用API获取数据对搜索引擎不是很友好,在有搜索引擎优化(SEO)需求的情况下,可以使用传统的模板引擎,由服务器通过Freemarker模板引擎生成HTML。

此时需要使用系统中提供的自定义Freemarker标签获取后台数据,而不是用API获取后台数据。

包名为com.ujcms.cms.*.web.directive

前台页面Controller

区别与前后端分离的前台(通过API获取数据),通过传统模板引擎生成的页面,也需要一个入口地址(即Controller)。

由前台页面Controller接收到请求后,返回到模板页面,模板页面再通过系统提供的自定义Freemarker标签获取数据,生成HTML后返回给浏览器。

包名为com.ujcms.cms.*.web.frontend

源码目录结构说明

  • src

    • main

      • java

        • com/ujcms/cms

          • core

            • domain:实体类

            • generator:生成功能(包括静态页生成,全文索引生成)

            • listener:监听类(包括数据删除的监听)

            • lucene:全文检索功能

            • mapper:MyBatis Mapper Java 文件

            • security:安全相关功能

            • service:服务层功能

            • support:各种支持类

            • web

              • api:前台API接口

              • backendapi:后台API接口

              • directive:前台Freemarker自定义标签

              • frontend:前台页面Controller

              • support:Web支持类(包括web拦截器等)

            • ContextConfig.java:Context配置类

            • LuceneConfig.java:全文索引配置类

            • ShiroConfig.java:Shiro安全配置类

            • TaskExecutorConfig.java:任务执行器配置类

          • Application.java 启动类

        • com/ujcms/common:公共工具类

      • resources

        • com/ujcms/cms/core/mapper:MyBatis Mapper XML 配置文件。

        • db

          • changelog:数据库表结构更新日志文件。

          • data.mysql.sql:数据库初始化数据SQL脚本。

        • application.yaml:程序配置文件。包括数据库URL、数据库用户名、数据库密码等信息。

        • messages.properties:国际化资源文件。

      • webapp:

        • cp:后台前端页面。

        • templates:网站前台模板。

        • uploads:用户上传文件。

        • WEB-INF/lucene:全文检索索引文件。

  • .editorconfig:设置编辑器文件的格式,如缩进方式、最大行数等。

  • .gitignore:设置不需要提交到git管理的文件和目录。

  • CHANGELOG.md:版本更新日志。

  • LICENSE:许可协议。

  • gulpfile.js:前台构建文件。具有拷贝jquery、bootstrap等文件至前台模板目录/src/main/webapp/template/1/default/_files等功能。

  • package.json:前台模板依赖的js、css组件,如jquery、bootstrap等。

  • pom.xml:Maven配置文件。

2023-08-10 00:12
Last Updated: 2025-03-26
CONTENTS
0791-85271700
QQ咨询:1779755751
QQ交流群:626599871
微信咨询
微信扫码咨询
微信交流群
微信交流群
Powered by UJCMS © 2010-2025 All Rights Reserved
QQ咨询
电话
微信
微信扫码咨询