A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

【郑州校区】学成在线 第9天 讲义-课程预览 Eureka Feign 七

4.3.2 模板测试
使用test-freemarker工程测试模板
编写模板过程采用test-freemarker工程测试模板。
course.ftl拷贝到test-freemarker工程的resources/templates下,并在test-freemarker工程的controller中添加
测试方法
[AppleScript] 纯文本查看 复制代码
//课程详情页面测试
@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中保存:

[AppleScript] 纯文本查看 复制代码
//文件存储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添加记录:
[AppleScript] 纯文本查看 复制代码
 {
"
_class
"
:
"
com.xuecheng
.framework.domain.cms.CmsTemplate
"
,
"
siteId
"
:
"
5a751fab6abb5044e0d19ea1
"
,
"
templateName
"
:
"
课程详情页面正式模板
"
,
"
templateFileId
"
:
"
这里填写上边代码返回的模板文件id
"
}


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

5 课程预览功能开发
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
如下,是条页面的记录。

[AppleScript] 纯文本查看 复制代码
{
"
_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方法中添加:

[AppleScript] 纯文本查看 复制代码
response.setHeader(
"
Content
‐
type
"
,
"
text/html;charset
=
utf
‐
8
"
);

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



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马