學成在線--10.頁面預覽

文章目錄

  • 一.需求分析
  • 二. 搭建環境
    • 1.在cms服務中集成freemarker:
    • 2.在application.yml配置freemarker
  • 三.Service
  • 四.Controller
  • 五.頁面預覽測試-- 配置Nginx代理
  • 六.頁面預覽測試-- 添加“頁面預覽”鏈接

一.需求分析

頁面在發布前增加頁面預覽的步驟,方便用戶檢查頁面內容是否正確。頁面預覽的流程如下:
在這里插入圖片描述
1)用戶進入cms前端,點擊“頁面預覽”,讓瀏覽器請求cms頁面預覽鏈接。
2)cms根據頁面id查詢DataUrl并遠程請求DataUrl獲取數據模型。
3)cms根據頁面id查詢頁面模板內容
4)cms執行頁面靜態化。
5)cms將靜態化內容響應給瀏覽器。
6)在瀏覽器展示頁面內容,實現頁面預覽的功能。

二. 搭建環境

1.在cms服務中集成freemarker:

在CMS服務中加入freemarker的依賴
文件位置:xcEduService01\xc-service-manage-cms\pom.xml

 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependency>

2.在application.yml配置freemarker

spring:
freemarker:
cache: false #關閉模板緩存,方便測試
settings:
template_update_delay: 0

三.Service

靜態化方法在靜態化測試章節已經實現。

四.Controller

創建CmsPagePreviewController類,用于頁面預覽:

調用service的靜態化方法,查詢得到頁面的模板信息、數據模型url,根據模板和數據生成靜態化內容,將靜態化內容通過response輸出到瀏覽器顯示

package com.xuecheng.manage_cms.controller;import com.xuecheng.framework.web.BaseController;
import com.xuecheng.manage_cms.service.PageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;import javax.servlet.ServletOutputStream;
import java.io.IOException;@Controller
public class CmsPagePreviewController extends BaseController {@AutowiredPageService pageService;//頁面預覽@RequestMapping(value="/cms/preview/{pageId}",method = RequestMethod.GET)public void preview(@PathVariable("pageId") String pageId) throws IOException {//執行靜態化String pageHtml = pageService.getPageHtml(pageId);//通過response對象將內容輸出ServletOutputStream outputStream = response.getOutputStream();outputStream.write(pageHtml.getBytes("utf-8"));}
}

五.頁面預覽測試-- 配置Nginx代理

通過nginx請求靜態資源(css、圖片等),通過nginx代理進行頁面預覽。
在www.xuecheng.com虛擬主機配置:

#頁面預覽
location /cms/preview/ {
proxy_pass http://cms_server_pool/cms/preview/;
}

配置cms_server_pool將請求轉發到cms:

#cms頁面預覽
upstream cms_server_pool{
server 127.0.0.1:31001 weight=10;
}

重新加載nginx 配置文件。
從cms_page找一個頁面進行測試。注意:頁面配置一定要正確,需設置正確的模板id和dataUrl。
在瀏覽器打開:http://www.xuecheng.com/cms/preview/5a795ac7dd573c04508f3a56
(其中5a795ac7dd573c04508f3a56為輪播圖頁面的id)

在這里插入圖片描述

六.頁面預覽測試-- 添加“頁面預覽”鏈接

在頁面列表添加“頁面預覽”鏈接,修改page_list.vue:

文件位置:xc-ui-pc-sysmanage\src\module\cms\page\page_list.vue

<template slot‐scope="page">
<el‐button @click="edit(page.row.pageId)" type="text" size="small">修改</el‐button>
<el‐button @click="del(page.row.pageId)" type="text" size="small">刪除</el‐button>
<el‐button @click="preview(page.row.pageId)" type="text" size="small">頁面預覽</el‐button>
...

添加preview方法:

//頁面預覽
preview(pageId){
window.open("http://www.xuecheng.com/cms/preview/"+pageId)
},

效果:
在這里插入圖片描述點擊輪播圖頁面的“頁面預覽”,預覽頁面效果。

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452236.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452236.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452236.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

參照完整性違約處理

參照完整性違約處理 &#xff08;1&#xff09; 拒絕&#xff08;NO ACTION&#xff09;執行 不允許該操作執行。該策略一般設置為默認策略 &#xff08;2&#xff09; 級聯&#xff08;CASCADE&#xff09;操作 當刪除或修改被參照表&#xff08;Student&#xff09;的一個元…

BSON和JSON的區別

BSON目前主要用于MongoDB中&#xff0c;是mongoDB的數據存儲格式&#xff0c;BSON基于JSON格式&#xff0c;選擇JSON進行改造的原因主要是JSON的通用性及JSON的schemaless的特性。 BSON主要實現下面三點&#xff1a; 1、更快的遍歷速度 對json格式來說&#xff0c;太大的json結…

【代碼刷題】排序算法總結(python實現)

排序算法總結&#xff08;Python實現&#xff09;算法介紹算法分類相關概念1. 冒泡排序&#xff08;Bubble Sort&#xff09;1.1 思想1.2 python實現1.3 復雜度1.4 穩定性2. 快速排序&#xff08;Quick Sort&#xff09;2.1 思想&#xff08;偽代碼&#xff09;2.2 python實現2…

C語言遍歷目錄

C語言遍歷目錄&#xff0c;可以循環的遍歷子目錄#include <stdio.h>#include <string.h>#include <stdlib.h>#include <dirent.h>#include <sys/stat.h>#include <unistd.h>#include <sys/types.h>void listDir(char *path){struct …

學成在線--11.RabbitMQ快速入門

文章目錄一.RabbitMQ簡介二.相關知識1.AMQP2.JMS是什么 &#xff1f;三.RabbitMQ的工作原理四.Hello World1.創建Maven工程2.生產者3.消費者五.總結一.RabbitMQ簡介 MQ全稱為Message Queue&#xff0c;即消息隊列&#xff0c; RabbitMQ是由erlang語言開發&#xff0c;基于AMQP…

數據庫斷言

SQL中&#xff0c;可以使用 CREATE ASSERTION語句&#xff0c;通過聲明性斷言來指定更具一般性的約束。 可以定義涉及多個表的或聚集操作的比較復雜的完整性約束。 斷言創建以后&#xff0c;任何對斷言中所涉及的關系的操作都會觸發關系數據庫管理系統對斷言的檢查&#xff0c;…

mysql帳號不允許從遠程登陸

默認情況下&#xff0c;mysql帳號不允許從遠程登陸&#xff0c;只能在localhost登錄。本文提供了二種方法設置mysql可以通過遠程主機進行連接。 一、改表法 在localhost登入mysql后&#xff0c;更改 “mysql” 數據庫里的 “user” 表里的 “host” 項&#xff0c;將”localhos…

maven工程建立和SSM(springMVC+spring+mybatis)整合

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1.環境&#xff1a; maven 版本&#xff1a;3.5.1 ecelipse mars.2 JDK : jdk1.8.0_45 tomcat : apache-tomcat-8.0.0-RC1 2. 建…

Java——網絡編程(實現基于命令行的多人聊天室)

2019獨角獸企業重金招聘Python工程師標準>>> 目錄&#xff1a; 1.ISO和TCP/IP分層模型 2.IP協議 3.TCP/UDP協議 4.基于TCP的網絡編程 5.基于UDP的網絡編程 6.基于TCP的多線程的聊天室的實現 1.ISO和TCP/IP分層模型&#xff1a; OSI分層模型&#xff08;Open System …

學成在線--12.Spring整合RibbitMQ

文章目錄一.搭建SpringBoot環境二.配置1.配置application.yml2.定義RabbitConfig類三.生產端四.消費端一.搭建SpringBoot環境 我們選擇基于Spring-Rabbit去操作RabbitMQ 使用spring-boot-starter-amqp會自動添加spring-rabbit依賴&#xff0c;如下&#xff1a; <dependenc…

一網打盡中文編碼轉換---6種編碼30個方向的轉換

一網打盡中文編碼轉換——6種編碼30個方向的轉換 1.問題提出 在學編程序時&#xff0c;曾經有人問過“你可以編一個記事本程序嗎?”當時很不屑一顧&#xff0c;但是隨著學習MFC的深入&#xff0c;了解到記事本程序也并非易事&#xff0c;難點就是四種編碼之間的轉換。 對于編…

安裝Ubunutu音頻視頻庫

sudo apt-get install ubuntu-restricted-extras轉載于:https://www.cnblogs.com/or2-/p/9216235.html

十萬服務器秒級管控 騰訊云如何將AIOps用于日常管理?

AIOps&#xff0c;是指基于算法的 IT運維&#xff08;Algorithmic IT Operations&#xff09;&#xff0c;由 Gartner定義的新類別&#xff0c;源自業界之前所說的 ITOA&#xff08;IT Operations and Analytics&#xff09;。我們已經到達了這樣的一個時代&#xff0c;數據科學…

ssm(springMVC + spring+MyBatis) 小例

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 整體環境參見本人另一文&#xff1a;http://blog.csdn.net/jiangyu1013/article/details/51983360 此工程訪問入口為index.jsp頁面. 工…

多值依賴

在關系模式中&#xff0c;函數依賴不能表示屬性值之間的一對多聯系&#xff0c;這些屬性之間有些雖然沒有直接關系&#xff0c;但存在間接的關系&#xff0c;把沒有直接聯系、但有間接的聯系稱為多值依賴的數據依賴。例如&#xff0c;教師和學生之間沒有直接聯系&#xff0c;但…

js控制語句練習(回顧)

1、一個小球從100米空中落下&#xff0c;每次反彈一半高度&#xff0c;小球總共經過多少米&#xff0c;請問第10次反彈的高度是多少&#xff1f; //定義初始下落過程高度 var sum1 0; //定義初始上升高度 var sum2 0; //高度變化 var hight 100; for(var i0;i<10;i){ // …

學成在線--13.RabbitMQ工作模式

文章目錄一.Work queues二.Publish/subscribe1.工作模式2.代碼1&#xff09;生產者2&#xff09;消費者3.測試4.思考三.Routing1.工作模式2.代碼1&#xff09;生產者2&#xff09;消費者3.測試4.思考四.Topics1.工作模式2.代碼1&#xff09;生產者2&#xff09;消費者3.測試4.思…

《C++字符串完全指南——第一部分:win32 字符編碼》

《C字符串完全指南--第一部分:win32 字符編碼》 原作者:Michael Dun 譯 者:Dingqiao Wang 引言 毫無疑問&#xff0c;你肯定見過像TCHAR, std::string, BSTR等等這類字符串類型.也包括一些以_tcs開頭的奇怪的宏。也許你正盯著屏幕"哇哇"的發愁&#xff0c;然…

Spring、Spring MVC、MyBatis整合文件配置詳解

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 web.xml的配置 web.xml應該是整個項目最重要的配置文件了&#xff0c;不過servlet3.0中已經支持注解配置方式了。在servlet3.0以前每…

19.C++-(=)賦值操作符、初步編寫智能指針

()賦值操作符 編譯器為每個類默認重載了()賦值操作符默認的()賦值操作符僅完成淺拷貝默認的賦值操作符和默認的拷貝構造函數有相同的存在意義()賦值操作符注意事項 首先要判斷兩個操作數是否相等 返回值一定是 return *this; 返回類型是Type&型,避免連續使用后,出現bug 比如…