CMS (Content Management System)即内容管理系统,在本项目中主要用来管理静态页面。可以理解为,CMS帮你把一个网站的程序部分的事全做完了,你要做的只是一个网站里面美工的部分,搞几个静态网页模板,一个门户级的网站就出来了!
CMS,大概2004以前,如果想进行网站内容管理,基本上都是靠手工维护,但面对千变万化的信息流,若没有好的程序支持,还继续靠手工完成是不可能的事,如果有一个好的系统来支撑你的网站,那将节省大量的人力物力,开发者就可能给客户一个软件包,可以用它定期人工修改网站。只要你配置安装好,你的编辑、在线记者或更新员只要定期更新数据,剩下的事就交给CMS去处理。

1、页面内容多如何管理?
将页面拆分成一个一个的小页面,通过cms去管理这些小页面,当要更改部分页面内容时只需要更改具体某个小页面即可。
2、页面拆出来怎么样通过web服务浏览呢?
使用web服务(例如nginx)的SSI技术,将多个子页面合并渲染输出。

这些页面的管理流程是什么?
1)创建站点:
一个网站有很多子站点,比如:学成在线有主门户、学习中心、问答系统等子站点。具体的哪个页面是归属于具体的站点,所以要管理页面,先要管理页面所属的站点。
2)创建模板:
页面如何创建呢?比如电商网站的商品详情页面,每个页面的内容布局、板式是相同的,不同的只是内容,这个页面的布局、板式就是页面模板,模板+数据就组成一个完整的页面,最终要创建一个页面文件需要先定义此页面的模板,最终拿到页面的数据再结合模板就拼装成一个完整的页面。
3)创建页面:
创建页面是指填写页面的基本信息,如:页面的名称、页面的url地址等。
4)页面预览:
页面预览是页面发布前的一项工作,页面预览使用静态化技术根据页面模板和数据生成页面内容,并通过浏览器预览页面。页面发布前进行页面预览的目是为了保证页面发布后的正确性。
5)页面发布:
使用计算机技术将页面发送到页面所在站点的服务器,页面发布成功就可以通过浏览器来访问了。

本项目要实现什么样的功能?
1)页面管理
管理员在后台添加、修改、删除页面信息。
2)页面预览
管理员通过页面预览功能预览页面发布后的效果。
3)页面发布
管理员通过页面发布功能将页面发布到远程门户服务器。页面发布成功,用户即可在浏览器浏览到最新发布的页面,整个页面添加、发布的过程由于软件自动执行,无需人工登录服务器操作。

项目用到了Nginx。Nginx在CMS功能里的作用是作为静态资源服务器。

配置Nginx,如下:

server {listen       80;server_name  www.xuecheng.com;ssi on;ssi_silent_errors on;location / {alias  D:/Java_Project/mainProject_Interface/Interface_web/xc-ui-pc-static-portal/;index  index.html;}}

C:\Windows\System32\drivers\etc下的hosts文件配置如下:

127.0.0.1    www.xuecheng.com

CMS功能使用的数据存放在MongoDB中:

架构好后就可以开始实现业务了。CMS功能对应于xc-service-manage-cms服务:

该服务的pom.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>xc-framework-parent</artifactId><groupId>com.xuecheng</groupId><version>1.0-SNAPSHOT</version><relativePath>../xc-framework-parent/pom.xml</relativePath></parent><modelVersion>4.0.0</modelVersion><artifactId>xc-service-manage-cms</artifactId><dependencies><dependency><groupId>com.xuecheng</groupId><artifactId>xc-service-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>com.xuecheng</groupId><artifactId>xc-framework-model</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>com.xuecheng</groupId><artifactId>xc-framework-utils</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>com.xuecheng</groupId><artifactId>xc-framework-common</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency><dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency></dependencies></project>

接下来开始写各种配置(算是标准开局了)。
首先是application.yml:

server:port: 31001
spring:application:name: xc-service-manage-cmsdata:mongodb:uri: mongodb://root:123@localhost:27017database: xc_cmsfreemarker:cache: false  #关闭模板缓存,方便测试settings:template_update_delay: 0    #检查模板更新延迟时间,设置为0表示立即检查,如果时间大于0会有缓存不方便进行模板测试rabbitmq:host: 127.0.0.1port: 5672username: guestpassword: guestvirtualHost: /

IP地址怎么配置? rabbitmq下的virtualHost是什么?
再看看启动类ManageCmsApplication:

@SpringBootApplication
@EntityScan("com.xuecheng.framework.domain.cms")//扫描实体类
@ComponentScan(basePackages = {"com.xuecheng.api"})//扫描接口
@ComponentScan(basePackages = {"com.xuecheng.manage_cms"})//扫描本项目下的所有类
@ComponentScan(basePackages ={"com.xuecheng.framework"} )//扫描common包下的类
public class ManageCmsApplication {public static void main(String[] args) {SpringApplication.run(ManageCmsApplication.class,args);}@Beanpublic RestTemplate restTemplate(){return new RestTemplate(new OkHttp3ClientHttpRequestFactory());}}

这里需要思考一个问题:如果微服务部署在不同的服务器上,本服务扫描别的微服务的包是如何实现的?(可能是因为导入了别的服务的依赖吧。。。)@ComponentScan扫描包的作用是什么(启动过程中会扫描Bean并注入spring 容器)?启动类里还把一个RestTemplate放到了容器中。
配置类有两个,是MongoConfig和RabbitmqConfig,如下:

@Configuration
public class MongoConfig {@Value("${spring.data.mongodb.database}")String db;@Beanpublic GridFSBucket getGridFSBucket(MongoClient mongoClient){MongoDatabase database = mongoClient.getDatabase(db);GridFSBucket bucket = GridFSBuckets.create(database);return bucket;}}
@Configuration
public class RabbitmqConfig {//交换机的名称public static final String EX_ROUTING_CMS_POSTPAGE="ex_routing_cms_postpage";/*** 交换机配置使用direct类型* @return the exchange*/@Bean(EX_ROUTING_CMS_POSTPAGE)public Exchange EXCHANGE_TOPICS_INFORM() {return ExchangeBuilder.directExchange(EX_ROUTING_CMS_POSTPAGE).durable(true).build();}}

CMS功能(简介和配置)相关推荐

  1. php ldap 登陆验证,LDAP用户验证功能简介

    LDAP功能是依赖于PHP的LDAP扩展,所以要加载LDAP扩展, 具体可以参考 安装PHP的LDAP扩展 一.功能简介 通过配置LDAP,实现ldap服务器的用户自动登录.也可以从ldap导入用户. ...

  2. ldap 单点登录 php,LDAP用户验证功能简介

    LDAP功能是依赖于PHP的LDAP扩展,所以要加载LDAP扩展, 具体可以参考 安装PHP的LDAP扩展 一.功能简介 通过配置LDAP,实现ldap服务器的用户自动登录.也可以从ldap导入用户. ...

  3. Flume NG 简介及配置实战

    2019独角兽企业重金招聘Python工程师标准>>> Flume NG 简介及配置实战 博客分类: 分布式计算 1.Flume 的一些核心概念: 1.1 数据流模型 1.2 高可靠 ...

  4. FTP服务的简介和配置详解

    FTP服务的简介和配置详解 注意:配置FTP服务时,最好关闭防火墙和selinux 1.FTP服务简介 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为& ...

  5. Hadoop生态圈-Ambari控制台功能简介

    Hadoop生态圈-Ambari控制台功能简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在经历一系列安装过程之后(部署过HDP后我终于发现为什么大家喜欢用它了,部署比CDH简 ...

  6. WordPress 3.0十大看点 CMS功能进一步增强

    据估计,WordPress 3.0将在未来的两个月内和大家见面. 那么WordPress新版本里可能会有哪些新功能呢,一起来看看吧: 1. 自定义用户名和密码 新版本一开始就会给用户惊喜! 目前我们安 ...

  7. 部分GDAL工具功能简介

    部分GDAL工具功能简介 gdalinfo.exe 显示GDAL支持的各种栅格文件的信息. gdal_translate.exe 在不同的格式间进行转换.同时,潜在的执行了一些切割.重采样和使像素比例 ...

  8. NAT功能介绍及配置应用

    写在开头的话: 关于华为模拟器ENSP的几点注意事项: 1.Router路由器的NAT功能存在BUG,无法作为NAT设备使用: 2.AR201路由器的Ethernet端口无法直接作为三层接口使用,必须 ...

  9. 经济型EtherCAT运动控制器(一):功能简介与应用场景

    XPLC006E功能简介 XPLC006E是正运动运动控制器推出的一款多轴经济型EtherCAT总线运动控制器,XPLC系列运动控制器可应用于各种需要脱机或联机运行的场合. XPLC006E自带6个电 ...

最新文章

  1. java 字符串模糊匹配_Java实现伪查询(全匹配+模糊匹配)
  2. 张震博士:SDT是未来安防发展方向
  3. 随想录(kernel的版本管理)
  4. 山寨高仿iPad难现山寨手机的辉煌
  5. python游戏代码运行不了_用Python写游戏,不到十分钟就学会了
  6. c#使用Transactions类完成多个数据库的事务操作(分布式事务处理)
  7. springboot cloud依赖关系
  8. 2022软件项目管理案例教程期末考知识点汇总(期末复习用)
  9. 国内云服务市场正陷入混战
  10. c语言鞋码,童鞋尺码对照表 童鞋1c、2c、3c和4c是多大码 多少厘米
  11. SpringSecurity简单集成
  12. (转载+原创)jQuery实现的全选、全不选、反选和半选功能
  13. 【渝粤教育】广东开放大学 国际法 形成性考核 (37)
  14. ubuntu从零到一跑通ORB_SLAM2及其ORBSLAM2_with_pointcloud稠密建图
  15. 全国软件测试培训机构名单已发布
  16. CUDA CUBIN/PTX文件动态加载
  17. flask sqlalchemy 统计 查询
  18. 【Proteus仿真】基于74LS148+74LS279+74LS48的四路抢答器
  19. 关于信息检索评价TREC:session track 的说明
  20. termux安装jupyters失败解决方案

热门文章

  1. 网线品质差的三大影响
  2. Drools基础语法
  3. java抽象类与final关键字的用法
  4. mybatis,引入pageHelper,参数中有pageNum和pageSize,且都不为空,会分页
  5. 可数集合与不可数集合
  6. Word2Vec解释
  7. mysql 查询 唯一_Mysql中如何查询所有唯一记录
  8. 笔记1之极大值分布问题
  9. 如何区分np.random.normal()、np.random.randn()、np.random.randint()、np.random.random()、np.random.choice()
  10. Mysql 安装,及其闪退的问题解决