学成在线 第9天 讲义-课程预览 Eureka Feign 七

4.3.2 模板测试 
使用test-freemarker工程测试模板
编写模板过程采用test-freemarker工程测试模板。
course.ftl拷贝到test-freemarker工程的resources/templates下,并在test-freemarker工程的controller中添加
测试方法 

//课程详情页面测试
@RequestMapping(
"
/course
"
)
public String course(Map<String,Object> map){
ResponseEntity<Map> forEntity
=
restTemplate.
getForEntity(
"
http://localhost:31200/course/courseview/4028e581617f945f01617f9dabc4
0000
"
, Map
.class);
Map body
= forEntity
.
getBody();
map
.
put(
"
model
"
,body);
return
"
course
"
;
}

注意:上边的测试页面不显示样式,原因是页面通过SSI包含了页面头,而使用test-freemarker工程无法加载页头,测试模板主要查看html页面内容是否正确,待课程预览时解决样式不显示问题。
4.3.3 模板保存 
模板编写并测试通过后要在数据库保存: 
1、模板信息保存在xc_cms数据库(mongodb)cms_template表 
2、模板文件保存在mongodbGridFS中。 
步:将模板文件上传到GridFS
由于本教学项目中模板管理模块没有开发,所以我们使用Junit代码向GridFS中保存:

//文件存储2
@Test
public void testStore2() throws FileNotFoundException {
File file
= new File(
"
C:\\Users\\admin\\Desktop\\course.ftl
"
);
FileInputStream inputStream = new FileInputStream(file);
//保存模版文件内容
GridFSFile gridFSFile
=
gridFsTemplate.store(inputStream,
"
课程详情模板文件
"
,
""
);
String fileId
=
gridFSFile.
getId()
.toString();
System.out.
println(fileId);
}

保存成功需要记录模板文件的id,即上边代码中的fifileId。 
第二步:向cms_template表添加模板记录(请不要重复添加) 
使用Studio 3T连接mongodb,向cms_template添加记录:

{
"
_class
"
:
"
com.xuecheng
.framework.domain.cms.CmsTemplate
"
,
"
siteId
"
:
"
5a751fab6abb5044e0d19ea1
"
,
"
templateName
"
:
"
课程详情页面正式模板
"
,
"
templateFileId
"
:
"
这里填写上边代码返回的模板文件id
"
}

4.3.4 其它模板 
除了课程详情主页面需要设计模板所有静态化的页面都要设计模板,如下: 
教育机构页面模板、教师信息页面模板、课程统计信息json模板、教育机构统计信息json模板。 
本项目我们实现课程详情主页面模板的制作和测试,其它页面模板的开发参考课程详情页面去实现。 

课程预览功能开发 
5.1 需求分析 
课程预览功能将使用cms系统提供的页面预览功能,业务流程如下: 
1、用户进入课程管理页面,点击课程预览,请求到课程管理服务 
2、课程管理服务远程调用cms添加页面接口向cms添加课程详情页面 
3、课程管理服务得到cms返回课程详情页面id,并拼接生成课程预览Url 
4、课程管理服务将课程预览Url给前端返回 
5、用户在前端页面请求课程预览Url,打开新窗口显示课程详情内容
 

5.2 CMS页面预览测试 
CMS已经提供了页面预览功能,课程预览功能要使用CMS页面预览接口实现,下边通过cms页面预览接口测试课程预览的效果。
1、向cms_page表插入条页面记录或者从cms_page个页面进行测试。
注意:页面配置
定要正确,需设置正确的模板iddataUrl
如下,是条页面的记录。 

{
"
_id
"
: ObjectId(
"
5b3469f794db44269cb2bff1
"
),
"
_class
"
:
"
com.xuecheng
.framework.domain.cms.CmsPage
"
,
"
siteId
"
:
"
5a751fab6abb5044e0d19ea1
"
,
"
pageName
"
:
"
4028e581617f945f01617f9dabc40000.html
"
,
"
pageAliase
"
:
"
课程详情页面测试01
"
,
"
pageWebPath
"
:
"
/course/detail/
"
,
"
pagePhysicalPath
"
:
"
/course/detail/
"
,
"
pageType
"
:
"
1
"
,
"
pageCreateTime
"
: ISODate(
"
2018
‐
02
‐
25T01:37:25.974+0000
"
),
"
templateId
"
:
"
5b345a6b94db44269cb2bfec
"
,
"
dataUrl
"
:
"
http://localhost:31200/course/courseview/4028e581617f945f01617f9dabc40000
"
}

2、课程详细页面 使用ssi注意

由于Nginx先请求cms的课程预览功能得到html页面,再解析页面中的ssi标签,这里必须保证cms页面预览返回的页面的Content-Typetext/html;charset=utf-8cms页面预览的controller方法中添加: 

response.setHeader(
"
Content
‐
type
"
,
"
text/html;charset
=
utf
‐
8
"
);

3、测试 
请求:http://www.xuecheng.com/cms/preview/5b3469f794db44269cb2bffff1传入页面Id,测试效果如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值