UJCMS后端二次开发教程01-概述

2023-08-10 00:12 阅读

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/util:公共工具类
      • 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配置文件。
QQ咨询
电话
微信
微信扫码咨询