一个静态网页模板,一个门户级的网站就出来了
优采云 发布时间: 2021-08-16 04:10一个静态网页模板,一个门户级的网站就出来了
cms(Content Management System)是内容管理系统,主要用于管理本项目中的静态页面。可以理解为cms帮你完成了网站的程序部分,你要做的就是网站里面的美术部分,几个静态网页模板,一个门户级的网站是出来!
cms,大约在2004年之前,如果要管理网站内容,基本靠人工维护,但是面对千变万化的信息流,如果没有好的程序支持,可以继续手动完成。可能,如果你有一个好的系统来支持你的网站,会节省大量的人力物力。开发者可能会给客户一个软件包,可以用来定期手动修改网站。只要您配置安装好,您的编辑、在线记者或更新者只需定期更新数据,剩下的交给cms。
1、如何管理页面内容?
将页面一一拆分成小页面,通过cms管理这些小页面。当您要更改部分页面内容时,只需更改特定的小页面即可。
2、 如何在页面打开时浏览网页服务?
利用web服务(如nginx)的SSI技术,将多个子页面合并渲染。
这些页面的管理流程是怎样的?
1)创建站点:
一个网站有很多子站点,比如学城在线有主门户、学习中心、问答系统等子站点,具体哪个页面属于一个具体站点,所以要管理一个页面,首先要管理该页面所属的站点。
2)创建模板:
如何创建页面?比如电商网站的商品详情页面,每个页面的内容布局和格式都是一样的,唯一不同的就是内容。这个页面的布局和格式就是页面模板,模板+数据构成一个完整的页面。创建页面文件,需要先定义页面模板,最后获取页面数据,结合模板组合成一个完整的页面。
3)创建页面:
创建页面是指填写页面的基本信息,如:页面名称、页面url地址等
4)页面预览:
页面预览是页面发布前的工作。页面预览采用静态技术,根据页面模板和数据生成页面内容,通过浏览器预览页面。页面发布前进行页面预览的目的是为了保证页面发布后的正确性。
5)page 发布:
利用计算机技术将页面发送到页面所在站点的服务器,页面发布成功后可以通过浏览器访问。
这个项目将实现什么样的功能?
1)页面管理
管理员在后台添加、修改、删除页面信息。
2)页面预览
管理员使用页面预览功能来预览页面发布后的效果。
3)page 发布
管理员通过页面发布功能将页面发布到远程门户服务器。页面发布成功后,用户可以在浏览器中浏览到新发布的页面。整个页面添加和发布过程由软件自动执行,无需手动登录服务器。
项目中使用了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文件如下:
xc-framework-parent
com.xuecheng
1.0-SNAPSHOT
../xc-framework-parent/pom.xml
4.0.0
xc-service-manage-cms
com.xuecheng
xc-service-api
1.0-SNAPSHOT
com.xuecheng
xc-framework-model
1.0-SNAPSHOT
com.xuecheng
xc-framework-utils
1.0-SNAPSHOT
com.xuecheng
xc-framework-common
1.0-SNAPSHOT
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-freemarker
org.springframework.boot
spring-boot-starter-data-mongodb
org.springframework.boot
spring-boot-starter-amqp
com.squareup.okhttp3
okhttp
org.springframework.boot
spring-boot-starter-test
接下来开始写各种配置(这是标准的开始)。
首先是application.yml:
server:
port: 31001
spring:
application:
name: xc-service-manage-cms
data:
mongodb:
uri: mongodb://root:123@localhost:27017
database: xc_cms
freemarker:
cache: false #关闭模板缓存,方便测试
settings:
template_update_delay: 0 #检查模板更新延迟时间,设置为0表示立即检查,如果时间大于0会有缓存不方便进行模板测试
rabbitmq:
host: 127.0.0.1
port: 5672
username: guest
password: guest
virtualHost: /
如何配置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);
}
@Bean
public RestTemplate restTemplate(){
return new RestTemplate(new OkHttp3ClientHttpRequestFactory());
}
}
这里有一个问题需要思考:如果微服务部署在不同的服务器上,这个服务如何扫描其他微服务的包? (可能是因为引入了其他服务依赖...)@ComponentScan扫描包的作用是什么(启动时会扫描bean并注入spring容器)?在启动类的容器中也放置了一个RestTemplate。
有两个配置类,MongoConfig和RabbitmqConfig,如下:
@Configuration
public class MongoConfig {
@Value("${spring.data.mongodb.database}")
String db;
@Bean
public 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();
}
}