实习课知识整理4:点击某个商品如何跳转到并展示出商品详情页

项目情景:当我们点击某个商品时,我们需要查看商品的具体的信息并进行购买的操作

简单理解以下就是,当我们点击一个url链接时,该链接需要携带一个参数到后端,一般设为商品的Id,然后后端通过Id从数据库中查找商品的具体的信息,并将信息返回到商品的详情页上。

1. 后端编写根 据id查询的方法

ItemMapper.java

    // 通过itemId查询Item getItemById(Integer itemId);

ItemMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.shopping.mapper.ItemMapper"><resultMap id="itemBaseResultMap" type="Item"><!-- 映射字段 --><id column="ITEM_ID" property="itemId"/><id column="ITEM_NAME" property="itemName"/><id column="ITEM_PRICE" property="itemPrice"/><id column="ITEM_COUNT" property="itemCount"/><id column="ITEM_CREATE_TIME" property="itemCreateTime"/><id column="ITEM_DESC" property="itemDesc"/><id column="ITEM_TYPE_ID" property="itemTypeId"/><id column="ITEM_SALE_PRICE" property="itemSalePrice"/><id column="ITEM_STATE" property="itemState"/><id column="ITEM_IMAGE_MAIN" property="itemImageMain"/><id column="ITEM_IMAGE_OTHER" property="itemImageOther"/><id column="ITEM_VIDEO_URL" property="itemVideoUrl"/><id column="ITEM_HEART" property="itemHeart"/></resultMap><!--编写Sql代码块,便于多次使用--><sql id="allColumns">select ITEM_ID, ITEM_NAME, ITEM_PRICE, ITEM_COUNT, ITEM_CREATE_TIME, ITEM_DESC,ITEM_TYPE_ID, ITEM_SALE_PRICE, ITEM_STATE, ITEM_IMAGE_MAIN, ITEM_IMAGE_OTHER,ITEM_VIDEO_URL, ITEM_HEART from shopping.item</sql><select id="getItemById" resultMap="itemBaseResultMap"><include refid="allColumns"></include> WHERE ITEM_ID = #{itemId}</select></mapper>

 

ItemService.java接口 

    // 通过itemId查询Item getItemById(Integer itemId);

ItemServiceImpl实现类

    @Overridepublic Item getItemById(Integer itemId) {return itemMapper.getItemById(itemId);}

因为商品的详情页需要哦展示多张的缩略图,而缩略图是以字符串的形式,中间以空格隔开,存在数据库中的 

    @Overridepublic Item getItemById(Integer itemId) {return itemMapper.getItemById(itemId);}// 图片地址解析@Overridepublic List<String> dealItemImageOther(String itemImageOther) {if (null == itemImageOther) {return null;} else {itemImageOther = itemImageOther.trim();  // 去掉字符串前后的空格String[] imagesUrl = itemImageOther.split(" ");List<String> urlList = new ArrayList<>();for (String url : imagesUrl) {urlList.add(url);}return urlList;}}

 

ItemController

    @AutowiredItemService itemService;@GetMapping("/toItemInfo/{itemId}")public ModelAndView toItemInfo(ModelAndView mav, @PathVariable("itemId") Integer itemId) throws Exception {Item item = itemService.getItemById(itemId);// 缩略图解析List<String> urlList = itemService.dealItemImageOther(item.getItemImageOther());mav.addObject("item", item);mav.addObject("urlList", urlList);mav.setViewName("itemInfo");return mav;}

 

index.html页面需要传递item.id 

 

2. 前端在对应的itemInfo.html页面接收到数据,并进行处理 

<div class="itemContent"><!--商品图片、视频显示区域--><div id="showItem"><div id="showOne"><!--商品视频显示--><video id="itemVideo" th:src="${item.itemVideoUrl}" controls autoplay="true"></video><!--显示大图  需要和商品视频区域重叠--><div id="showImg"><img id="imgBig" src="http://localhost:8082/project/images/girl.jpg"/></div></div><!--显示多个缩略图--><div id="otherImage"><div th:each="url:${urlList}"><img th:src="${url}" class="imgSmall"/></div></div></div><!--商品信息显示区域--><div id="showInfo"><div id="title"><span>商品名:</span><span th:text="${item.itemName}"></span></div><div id="price"><span>商品价格:</span><span th:text="${item.itemPrice}"></span></div><div><!--<form>--><!--有些关键数据,不需要用户填写,但是后面功能需要,可以使用hidden的input 传递--><input type="hidden" name="itemId" th:value="${item.itemPrice}"/><span>购买数量</span><input type="text" name="buyCount" value="1"/><br/><button id="buyButton">直接购买</button><br/><!--</form>--></div></div></div>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/296487.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NGUI基础-三大基础组件之Root组件

NGUI NGUI&#xff08;Next-Gen UI&#xff09;是一款用于Unity游戏引擎的UI插件&#xff0c;它提供了一套功能强大、灵活易用的界面开发工具。在NGUI中&#xff0c;Root&#xff08;根节点&#xff09;是一个重要的概念。 基础组件之Root Root是NGUI中的最高层级节点&#…

linux运行可执行文件,通过c语言调用java的main方法

前言&#xff1a;以前一直在做Android开发&#xff0c;在某本书上看过一句话“Android上面不只有App类的程序可以运行&#xff0c;能在linux下运行的程序&#xff0c;也可以在Android上面运行” 一.编写C语言部分代码 1.定义java.h头文件 #include <jni.h>#ifndef _JAV…

计算机网络概述(下)——“计算机网络”

各位CSDN的uu们你们好呀&#xff0c;今天继续计算机网络概述的学习&#xff0c;下面&#xff0c;让我们一起进入计算机网络概述的世界吧&#xff01;&#xff01;&#xff01; 计算机网络体系结构 数据传输流程 计算机网络性能指标 计算机网络体系结构 两个计算机系统必须高度…

大数据技术学习笔记(十一)—— Flume

目录 1 Flume 概述1.1 Flume 定义1.2 Flume 基础架构 2 Flume 安装3 Flume 入门案例3.1 监控端口数据3.2 实时监控单个追加文件3.3 实时监控目录下多个新文件3.4 实时监控目录下的多个追加文件 4 Flume 进阶4.1 Flume 事务4.2 Flume Agent 内部原理4.3 Flume 拓扑结构4.3.1 简单…

springcloud-gateway-2-鉴权

目录 一、跨域安全设置 二、GlobalFilter实现全局的过滤与拦截。 三、GatewayFilter单个服务过滤器 1、原理-官方内置过滤器 2、自定义过滤器-TokenAuthGatewayFilterFactory 3、完善TokenAuthGatewayFilterFactory的功能 4、每一个服务编写一个或多个过滤器&#xff0c…

ubuntu22.04+ROS2推荐匹配的gazebo版本

放大以后看到&#xff1a; 可以看到ros2推荐使用版本是humble-----匹配的是Ubuntu22.04LTS -------匹配gazebo Harmonic

Cannot resolve plugin org.springframework.boot:spring-boot-maven-plugin:2.6.4

我出现这个问题就是idea的设置里面的maven路径跟我本地的maven路径不一致&#xff0c;所以出现了这个问题。引入这个项目踩了一个多小时的坑&#xff0c;最终重装了一下maven&#xff0c;把它整理了下&#xff0c;终于好了。。。 把我重装maven的方法博客贴在这&#xff0c;这…

AndroidStudio无法新建aidl文件解决办法

我用的 AS 版本是 Android Studio Giraffe | 2022.3.1 Build #AI-223.8836.35.2231.10406996, built on June 29, 2023 右键新建 aidl 文件&#xff0c; 提示 (AIDL File)Requires setting the buildFeatures.aidl to true in the build file 解决办法 修改 app 的 build.…

2024年,我们要勇敢奔跑!

本“人民&#xff0b;体验官”推广人民日报官方微博文化产品《2024年是个什么年&#xff1f;》 图&#xff1a;来源“人民&#xff0b;体验官”推广平台 朋友&#xff0c;2023已经进入尾声阶段&#xff0c;很快新的一年——2024年就来了。这新的一年是新中国成立75周年、澳门回…

Python实现多个sheet表合并

Python实现sheet表的合并 代码展示&#xff1a; import pandas as pd# 读取Excel文件 excel_file pd.ExcelFile(1221001.xlsx)# 获取所有表单名 sheet_names excel_file.sheet_names print(f"合并的sheet表单如下&#xff1a;\n{sheet_names}") print("\n&q…

计算机是如何工作的(下)

4. 编程语言&#xff08;Program Language&#xff09; 本块内容主要是还原下我们已经熟悉的编程语言&#xff0c;即编程语言是如何和 CPU 指令对应起来的。 4.1 程序&#xff08;Program&#xff09; 所谓程序&#xff0c;就是一组指令以及这组指令要处理的数据。狭义上来说&…

前缀和+单调双队列+贪心:LeetCode2945:找到最大非递减数组的长度

本文涉及知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 单调双队列 贪心 题目 给你一个下标从 0 开始的整数数组 nums 。 你可以执行任意次操作。每次操作中&#xff0c;你需要选择一个 子数组 &#xff0c;并将这个子数组用它所…