商品详情页面展示

创建一个商品详情页面展示的工程。是一个表现层工程。

达成效果:

在搜索结果页面点击商品图片或者商品标题,展示商品详情页面。

前端展示代码:

  <c:forEach items="${itemList }" var="item">
         <li>
            <div class="l-wrap">
                <div class="pic">
                    <a class="trackref" href="http://localhost:8087/item/${item.id}.html" title="" target="_blank">
                        <img src="${item.images[0] }" style="display:inline"/>
                    </a>
                </div>
                <div class="price">
                    <span><span class="p-now"><strong><fmt:formatNumber groupingUsed="false" maxFractionDigits="2" minFractionDigits="2" value="${item.price / 100 }"/></strong></span><span class="p-nor"></span><span class="active" style="">直降</span></span>            
                </div>
                <div class="title-a">
                    <a class="trackref presaleSign_225865" href="http://localhost:8087/item/${item.id}.html" target="_blank">${item.title }</a>
                </div>
                <div class="title-b" style=""><a class="trackref" href="http://localhost:8087/item/${item.id}.html" target="_blank">${sell_point }</a></div>
                <div class="comment">
                    <div class="owner_shop_list">自营</div>                    
                </div>
            </div>
         </li>
         </c:forEach>

 

url请求:

http://localhost:8087/item/${item.id}.html

参数:

item.id 商品id

根据id查询响应的数据后将数据转发到响应页面。
缓存添加分析

使用redis做缓存

业务逻辑:

1、根据商品id到缓存中查找

2、查到缓存,直接返回。

3、查不到,查询数据库

4、把数据放到缓存中

5、返回数据

因为hash
hash是一个string类型的field和value的映射表
127.0.0.1:6379> HMSET user:1 username runoob password runoob points 200
OK
127.0.0.1:6379> HGETALL user:1
1) "username"
2) "runoob"
3) "password"
4) "runoob"
5) "points"
6) "200"
上面只有key  user能设置过期时间

String才可以设置过期时间

缓存中缓存热点数据,提供缓存的使用率。需要设置缓存的有效期。一般是一天的时间,可以根据实际情况跳转。

为避免item和item_desc两张表id相同或者其它数据相同,所以采用一下命名方式进行区分:

需要使用String类型来保存商品数据。

可以加前缀方法对象redis中的key进行归类。

ITEM_INFO:123456:BASE

ITEM_INFO:123456:DESC

 

如果把二维表保存到redis中:

1、表名就是第一层

2、主键是第二层

3、字段名第三次

三层使用“:”分隔作为key,value就是字段中的内容。

 



 

相关推荐:

如何在 HTML 页面中动态显示 Python 程序的执行结果

本文介绍使用flask框架将python后端计算或爬取的数据(如google搜索结果)安全、高效地渲染到html页面中,包含路由定义、模板渲染和基础结构示例。 本文介绍使用flask框架将python后端计算或爬取的数据(如google搜索结果)安全、高效地渲染到html页面中,包含路由定义、模板渲...

Python+Selenium4怎么绕过登录页面的滑块验证码

滑块验证码本质是行为检测而非图像识别,绕过关键在于模拟真实用户拖拽轨迹并禁用WebDriver自动化特征。需用ActionChains分段变速拖动、随机延迟、覆盖navigator.webdriver、删除cdc_属性,并处理iframe嵌套、动态缺口和背景图加载等细节。 滑块验证码本质是行为检测,...

如何在 Selenium 中正确查找并操作页面元素

本文详解selenium中定位元素的常见错误及最佳实践,涵盖pageobject模式重构、显式等待应用、定位器管理规范,并提供可直接复用的python示例代码。 本文详解selenium中定位元素的常见错误及最佳实践,涵盖pageobject模式重构、显式等待应用、定位器管理规范,并提供可直接复用的...

Streamlit Selectbox 页面刷新问题的根源与高效解决方案

streamlit中selectbox值变更导致整页重刷,本质是其默认的“全脚本重执行”机制所致;通过合理使用@st.cache_data(或@st.cache_resource)对数据加载与处理逻辑进行粒度化缓存,可精准避免重复计算和i/o,实现局部响应、零闪退的交互体验。 streamlit中s...