day08(商品详情页SKU联动+FreeMarker模版页面静态化)
模拟京东(8)
课程回顾:
1、前台系统的品牌展示
●品牌的修改或者添加时。将品牌信息保存到redis中
●品牌从redis获取(hash:id---name)
●redis内存数据库(支持的最大的阀值:8G key-value:使用较少的key
会定期清理、使用较少的key持久化到磁盘上。)
●window redis 启动redis服务数据没有了(没有持久化到磁盘上)
●开发环境:安装Linux上。redis单线程---- list fifo
2、条件是筛选
●品牌筛选:需要判断是否已选了价格
●价格筛选:需要判断是否已选了品牌
●service实现类处理:条件信息封装SolrQuery对象中。
1、brandId setFQ(“brandId:”+barndId)
2、price 切割[] length==2 [100 TO 200] else [1600 TO *]
●展示已选条件map(key,value)fn:length(map)
●将已选过的条件隐藏empty
3、ActiveMQ介绍和使用
●概念:消息队列(消息中间件MOM)。Apache的产品。使用最广泛(稳
定)。通信方式:异步通信。
●JMS:Java message service jms支持消息中间件供应商(ActiveMQ),spring
支持jms。ActiveMQ --- jms ---spring整合。
●jms发送消息方式:
1、point to point(点对点)生产者生产消息(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版本发布。其模板编写为FreeMarker Template Language(FTL、html、txt),属于简单、专用的语言。需要准备数据在真实编程语言中来显示,比如数据库查询和业务运算,之后模板显示已经准备好的数据。在模板中,主要用于如何展现数据,而在模板之外注意于要展示什么数据。
模板+数据----输出(将数据展示在静态页)。
3.2原理
模板+ 数据模型= 输出
我们准备模板、准备数据,通过Freemarker提供的类将模板生成静态页,并再该静态页上填充我们准备好的数据。
3.3语法
jsp:遍历list
ftl:遍历list <#list list as product>${https://www.360docs.net/doc/ac8891098.html,}#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修改访问连接