day08商品详情页SKU联动+FreeMarker模版页面静态化.docx
《day08商品详情页SKU联动+FreeMarker模版页面静态化.docx》由会员分享,可在线阅读,更多相关《day08商品详情页SKU联动+FreeMarker模版页面静态化.docx(17页珍藏版)》请在冰豆网上搜索。
day08商品详情页SKU联动+FreeMarker模版页面静态化
模拟京东(8)
课程回顾:
1、前台系统的品牌展示
●品牌的修改或者添加时。
将品牌信息保存到redis中
●品牌从redis获取(hash:
id---name)
●redis内存数据库(支持的最大的阀值:
8Gkey-value:
使用较少的key会定期清理、使用较少的key持久化到磁盘上。
)
●windowredis启动redis服务数据没有了(没有持久化到磁盘上)
●开发环境:
安装Linux上。
redis单线程----listfifo
2、条件是筛选
●品牌筛选:
需要判断是否已选了价格
●价格筛选:
需要判断是否已选了品牌
●service实现类处理:
条件信息封装SolrQuery对象中。
1、brandIdsetFQ(“brandId:
”+barndId)
2、price切割[]length==2[100TO200]else[1600TO*]
●展示已选条件map(key,value)fn:
length(map)
●将已选过的条件隐藏empty
3、ActiveMQ介绍和使用
●概念:
消息队列(消息中间件MOM)。
Apache的产品。
使用最广泛(稳定)。
通信方式:
异步通信。
●JMS:
Javamessageservicejms支持消息中间件供应商(ActiveMQ),spring支持jms。
ActiveMQ---jms---spring整合。
●jms发送消息方式:
1、pointtopoint(点对点)生产者生产消息(queue1)消费者(queue1)监听容器取出消息(将消息消费---处理业务)
2、p/s(消息的订阅与发布):
生产者生产消息-可以被多个消费者消费
●名词
1、jsmtemplate:
发送消息到容器中
2、生产者:
生产消息
3、消费者:
需要监听mq容器。
如果有自己的消息需要进行消费。
●ActiveMQ工作的原理
●本项目的使用场景---p2p
1、商品上架isShow
2、service-product:
生产者。
将id发送mq
3、将商品保存到solr中交给service-solr服务(消费者)去执行。
课程计划:
1、去商品详情页(单品页)
2、sku的联动效果
3、freemarker的介绍
4、商品详情页的页面静态化
1去商品详情页
1.1分析
1、点击图片时,根据商品的id查询数据
2、查询的数据:
product(商品信息)
3、查询的数据:
sku(库存信息)
1.2修改jsp页面的请求路径
1.3搭建cms工程
1.3.1copy一些配置文件
1.3.2编辑web.xml
1.4编写service接口、实现类
1.4.1编写CmsService接口
定义的方法:
1、根据商品的id查询商品信息
2、根据商品的id查询库存列表
1.4.2编写cms的实现类
更新:
查询库存大于0的
1.5配置dubbo服务
配置服务提供方:
cms
配置服务消费方:
portal
1.6编写controller
1.7jsp页面回显
颜色:
商品信息:
1.8颜色重复
1.8.1bug
1.8.2set需要重新equals和hashcode方法
对Color(id)重写equals和hashcode方法。
1.8.3将颜色信息放到set容器中(不能存放重复元素)
1.8.4jsp页面的颜色回显
2sku的联动效果
2.1选择颜色操作
2.2选择尺码
确定尺码后就确定了一条sku,确定了sku后就可以填充价格。
2.3进入详情页默认选择第一个颜色下的第一个尺码
最终
3freemarker介绍
3.1概念
FreeMarker是一款模板引擎:
即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。
它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。
FreeMarker是免费的,基于Apache许可证2.0版本发布。
其模板编写为FreeMarkerTemplateLanguage(FTL、html、txt),属于简单、专用的语言。
需要准备数据在真实编程语言中来显示,比如数据库查询和业务运算,之后模板显示已经准备好的数据。
在模板中,主要用于如何展现数据,而在模板之外注意于要展示什么数据。
模板+数据----输出(将数据展示在静态页)。
3.2原理
●模板+数据模型=输出
我们准备模板、准备数据,通过Freemarker提供的类将模板生成静态页,并再该静态页上填充我们准备好的数据。
3.3语法
jsp:
遍历listforeachitems=”${list}”var=”prodct”>
foreach>
if>empty
ftl:
遍历list<#listlistasproduct>${product.name}#list>
<#inclurd>
<#if>${keyword!
}
3.4demo入门程序
4商品详情的页面静态化
4.1分析
1、什么时候进行页面静态化---上架时生成静态化的页面。
2、构建数据到模板中----上架的过程中将页面静态化。
a、商品信息(商品id)
b、库存信息(商品id)
3、使用ActiveMQ的消息的订阅与发布
4、将生成的静态页的代码抽取到接口服务中StaticPageService。
方法:
不需要返回值
形参:
rootMap(静态页需要的数据)id(作为静态页的名称)
4.2编写StaticPageService静态化服务
接口:
实现类:
4.3将静态服务交给spring管理
4.4生成页面静态化
4.4.1添加cms的配置文件---消息的订阅与发布模式
4.4.2自定义消息监听器
4.5更新service-product/solr中的ActiveMQ配置文件
solr:
product:
4.6copy模板
4.6.1copy模板和静态资源
4.6.2修改模板
4.6.2.1修改product.html
4.6.2.2修改footer-links.html
略
4.6.2.3footer.html
4.6.2.4head.html
4.6.2.5shortcut.html
略。
4.7修改访问连接