Java秒杀系统--3.商品列表的实现

简介:

  实现获取商品列表的请求

1.前端发送请求

  在用户登录成功后会制动跳转到商品列表页面。

  

1            success: function (data) {
2                 layer.closeAll();
3                 if (data.code == 0) {
4                     layer.msg("成功");
5                     window.location.href = "/goods/to_list";
6                 } else {
7                     layer.msg(data.msg);
8                 }
9             },    

2.后端使用页面缓存技术,来减少用户调用此接口时对服务器的负载。

 1   @RequestMapping(value = "/to_list",produces = "text/html")                                                          //[email protected]:产生特定类型的相应
 2     @ResponseBody
 3     public String goodsList(Model model, MiaoshaUser user, HttpServletRequest request, HttpServletResponse response){
 4
 5         String html = redisService.get(GoodsPrefix.getGoodsList,"",String.class);                                       //自动渲染
 6         if (!StringUtils.isEmpty(html)){
 7             return html;
 8         }
 9
10
11         List<GoodsVo> goodslist = miaoshaGoodsService.getGoodsList();                                                   //手动渲染
12         model.addAttribute("goodslist",goodslist);
13         SpringWebContext ctx = new SpringWebContext(request,response,request.getServletContext(),request.getLocale(),
14                 model.asMap(),applicationContext);
15         html = thymeleafViewResolver.getTemplateEngine().process("goods_list",ctx);
16         if (!StringUtils.isEmpty(html)) {
17             redisService.set(GoodsPrefix.getGoodsList,"",html);
18         }
19         return html;
20     }

3.秒杀商品的详细信息的展示

  在goods_list.html中点击详情按钮,直接跳转到秒杀商品的详情页。

  

<td><a th:href="‘/goods_detail.htm?goodsId=‘+${goods.id}">详情</a></td>

  在goods_detail.htm中使用Ajax异步访问秒杀商品详情页面,并将由后端传递来的数据显示在前端页面,并启用倒计时功能。

 1 //调用商品详情接口
 2     function getDetail(){
 3         var goodsId = g_getQueryString("goodsId");
 4         $.ajax({
 5             url:"/goods/detail/"+goodsId,
 6             type:"GET",
 7             success:function (data) {
 8                 if (data.code==0){
 9                     renderr(data.data);
10                 }else layer.msg(data.msg)
11             },
12             error:function () {
13                 layer.msg("客户端有误2")
14             }
15         });
16     }
17     //将后端返回的商品详情数据添加到页面。
18     function renderr(data) {
19         var miaoShaStatue = data.miaoShaStatue;
20         var remainSeconds = data.remainSeconds;
21         var miaoshaUser = data.miaoshaUser;
22         var goodsVo = data.goodsVo;
23         if (miaoShaStatue){
24             $("#useTip").hide();
25         }
26         $("#goodsName").text(goodsVo.goodsName);
27         $("#goodsImg").attr("src",goodsVo.goodsImg);
28         $("#startTime").text(new Date(goodsVo.startDate).format("yyyy-MM-dd hh:mm:ss"));
29         $("#goodsPrice").text(goodsVo.goodsPrice);
30         $("#goodsMiaoshaPrice").text(goodsVo.miaoshaPrice);
31         $("#goodsStock").text(goodsVo.stockCount);
32         $("#goodsId").val(goodsVo.id);
33         $("#remainSeconds").val(remainSeconds);
34         countDown()
35     }
36     //实现倒计时的功能
37     function countDown() {
38                                                                                                                         //得到remainSeconds
39         var remainSeconds = $("#remainSeconds").val();
40         var timeOut;
41         if(remainSeconds==-1){                                                                                          //秒杀活动已经结束
42             $("#buyButton").attr("disabled",true);
43             $("#miaoshaTip").html("秒杀活动已经结束");
44
45         }else if (remainSeconds==0){                                                                                    //秒杀活动进行中
46             $("#buyButton").attr("disabled",false);
47             $("#miaoshaTip").html("秒杀活动进行中");
48             clearTimeout(timeOut);
49         } else  {                                                                                                       //秒杀活动未开始  remainSeconds=-1
50             $("#buyButton").attr("disabled",true);
51                                                                                                                         //做一个倒数计时器
52             timeOut = setTimeout(function () {
53                 $("#miaoshaTip").html("秒杀倒计时:"+remainSeconds+"秒");
54                 $("#remainSeconds").val(remainSeconds-1);
55                 countDown();
56             },1000);
57         }
58
59     }

原文地址:https://www.cnblogs.com/deijiawoyu/p/12667724.html

时间: 2024-08-30 17:35:22

Java秒杀系统--3.商品列表的实现的相关文章

Java秒杀系统实战系列~商品秒杀代码实战

摘要: 本篇博文是"Java秒杀系统实战系列文章"的第六篇,本篇博文我们将进入整个秒杀系统核心功能模块的代码开发,即"商品秒杀"功能模块的代码实战. 内容: "商品秒杀"功能模块是建立在"商品详情"功能模块的基础之上,对于这一功能模块而言,其主要的核心流程在于:前端发起抢购请求,该请求将携带着一些请求数据:待秒杀Id跟当前用户Id等数据:后端接口在接收到请求之后,将执行一系列的判断与秒杀处理逻辑,最终将处理结果返回给到前端.

Java秒杀系统实战系列~整合Shiro实现用户登录认证

摘要: 本篇博文是"Java秒杀系统实战系列文章"的第五篇,在本篇博文中,我们将整合权限认证-授权框架Shiro,实现用户的登陆认证功能,主要用于:要求用户在抢购商品或者秒杀商品时,限制用户进行登陆!并对于特定的url(比如抢购请求对应的url)进行过滤(即当用户访问指定的url时,需要要求用户进行登陆). 内容: 对于Shiro,相信各位小伙伴应该听说过,甚至应该也使用过!简单而言,它是一个很好用的用户身份认证.权限授权框架,可以实现用户登录认证,权限.资源授权.会话管理等功能,在本

Java秒杀系统实战系列~分布式唯一ID生成订单编号

摘要: 本篇博文是"Java秒杀系统实战系列文章"的第七篇,在本博文中我们将重点介绍 "在高并发,如秒杀的业务场景下如何生成全局唯一.趋势递增的订单编号",我们将介绍两种方法,一种是传统的采用随机数生成的方式,另外一种是采用当前比较流行的"分布式唯一ID生成算法-雪花算法"来实现. 内容: 在上一篇博文,我们完成了商品秒杀业务逻辑的代码实战,在该代码中,我们还实现了"当用户秒杀成功后,需要在数据库表中为其生成一笔秒杀成功的订单记录&qu

Java秒杀系统方案优化---高性能高并发实战

Java秒杀系统方案优化---高性能高并发实战网盘地址:https://pan.baidu.com/s/1htNv2zq 密码: ssyt备用地址(腾讯微云):https://share.weiyun.com/889808c023b6e9d9f504399a5b07276f 密码:1WaUHB 亮眼的!高并发秒杀系统核心技术 课程以"秒杀"场景为例,但技术都是通用的,举一反三,方得始终应对大并发:多层次多粒度缓存+消息队列异步+服务器分布式部署 专业的压测工具:有依有据,鉴证系统的优化

Java秒杀系统实战系列~整合RabbitMQ实现消息异步发送

摘要: 本篇博文是“Java秒杀系统实战系列文章”的第八篇,在这篇文章中我们将整合消息中间件RabbitMQ,包括添加依赖.加入配置信息以及自定义注入相关操作组件,比如RabbitTemplate等等,最终初步实现消息的发送和接收,并在下一篇章将其与邮件服务整合,实现“用户秒杀成功发送邮件通知消息”的功能! 内容: 对于消息中间件RabbitMQ,想必各位小伙伴没有用过.也该有听过,它是一款目前市面上应用相当广泛的消息中间件,可以实现消息异步通信.业务服务模块解耦.接口限流.消息分发等功能,在微

Java秒杀系统方案优化 高性能高并发实战 视频教程

第1章 课程介绍及项目框架搭建 1-1 Java高并发商城秒杀优化导学 1-2 项目环境搭建(Eclipse) 1-3 项目环境搭建(IDEA) 1-4 集成mybatis 1-5 安装redis 1-6 集成redis上 1-7 集成redis中 1-8 集成redis下第2章 实现用户登录以及分布式session功能 2-1 两次md5 2-2 登录功能实现上 2-3 登录功能实现下 2-4 jsr303参数校验 2-5 异常处理 2-6 分布式session上 2-7 分布式session

项目四:Java秒杀系统方案优化-高性能高并发实战

技术栈 前端:Thymeleaf.Bootstrap.JQuery 后端:SpringBoot.JSR303.MyBatis 中间件:RabbitMQ.Redis.Druid 功能模块 分布式会话,商品列表页,商品详情页,订单详情页,系统压测,缓存优化,消息队列,接口安全. 一.项目框架搭建 1.Spring Boot环境搭建 2.集成Thymeleaf,Result结果封装 3.集成Mybatis+Druid 4.集成Jedis+Redis安装+通用缓存Key封装 二.实现登录功能 1.数据库

Java秒杀系统方案优化视频教程 Java高性能高并发实战

第1章 课程介绍及项目框架搭建 技术选型思路分析,基于Maven的Spring-Boot工程框架的搭建,集成Thymeleaf,集成Mybatis,安装Redis,集成Redis等等. 第2章 实现用户登录以及分布式session功能 实现用户登录功能,实现密码两次MD5入库以及分布式Session.一则熟悉SpringBoot开发模式和该选型下的技术衔接,二则为后面的秒杀功能提供必备的用户信息. 第3章 秒杀功能开发及管理后台 实现秒杀的交互设计和秒杀功能的前端和后台实现,随着后期优化策略,秒

Java秒杀系统---1.使用Result&lt;&gt;向前端传递数据

1.使用Result<T>类来封装发送给前端的数据 Result<T>类功能:封装需要向前端传递的数据. Result<T>类的内部构造:在内部封装三个元素,code,msg,T  data:和两个构造方法,一个用来传递成功信息,另一个用来传递失败信息. 1 package com.app.miaosha.Result; 2 3 import lombok.Data; 4 5 @Data 6 public class Result<T> { 7 privat