Java Web 网络商城案例演示十二(查询类别下的商品信息)
发布日期:2021-06-29 15:01:22 浏览次数:2 分类:技术文章

本文共 3946 字,大约阅读时间需要 13 分钟。

Java Web 网络商城案例演示十二(查询类别下的商品信息)

任务:

1、带有分页的查看分类下的商品信息
2、购物模块——抽取模型
3、购物模块——添加商品到购物车
4、购物模块——移除购物项
4、购物模块——清空购物车

一、带有分页的查看分类下的商品信息

1、分析SQL语句的实现

-- 查询分类类别product 下对应的cid 为 1的商品 的数据并限制其查询开始的索引和条数SELECT * FROM product where cid = 1 LIMIT 0,5;SELECT * FROM product where cid = 1 LIMIT 5,5;SELECT * FROM product where cid = 1 LIMIT ?,?;-- 统计cid对应的有多少条数据SELECT COUNT(*) FROM  product where cid = 1;

2、原理

在这里插入图片描述

3、步骤实现

1、准备工作:

修改/jsp/header.jsp下的js里面的链接。
在这里插入图片描述
将当前页和对应商品的cid(商品id) 传入到对应的servlet

var li = "
  • "+obj.cname+"
  • ";

    2、在productServlet当中创建findProductByCidWithPage方法

    在这里插入图片描述

    public String findProductsByCidWithPage(HttpServletRequest request, HttpServletResponse response) throws Exception {
    //获取cid,num String cid = request.getParameter("cid"); int curNum = Integer.parseInt(request.getParameter("num")); //调用业务层功能:以分页形式查询当前类别下的商品 //返回PageModel对象(1、当前页信息 2、分页 3、url) ProductService productService = new ProductServiceImpl(); PageModel pm = productService.findProductsByCidWithPage(cid,curNum); //将pageModel对象放入到request当中 request.setAttribute("page", pm); //转发到/jsp/product_list.jsp当中 return "/jsp/product_list.jsp"; }

    ScalarHandler: 将单个值封装

    3、在ProductService当中创建对应的方法及其内容
    创建PageModel对象目的:计算分页参数
    统计当前分类下商品的个数 select count(*) from product where cid=?
    关联集合 select * from product where cid = ? LIMIT ?,?
    关联url
    返回所有的分页数据以及对应的页码对象
    在这里插入图片描述

    @Override	public PageModel findProductsByCidWithPage(String cid, int curNum) throws Exception {
    //1、创建PageModel对象目的:计算分页参数 //统计当前分类下商品的个数 select count(*) from product where cid=? int totalRecords = productDao.findTotalRecords(cid); PageModel pm = new PageModel(curNum, totalRecords, 12); //2、关联集合 select * from product where cid = ? LIMIT ?,? List list = productDao.findProductsByCidWithPage(cid,pm.getStartIndex(),pm.getPageSize()); pm.setList(list); //3、关联url pm.setUrl(""); //返回所有的分页数据(对应商品信息)以及对应的页码的对象 return null; }

    4、依次在ProductDaoImpl当中实现两个方法

    findTotalRecords返回的是对应cid数据的个数

    findProductsByCidWithPage方法返回的是List对应cid的商品,cid是在category上获取的,到product上查找随意cid 的商品

    @Override	public int findTotalRecords(String cid) throws Exception {
    String sql = "select count(*) from product where cid = ?"; QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource()); Long num = (Long)qr.query(sql, new ScalarHandler(),cid);//ScalarHandler: 将单个值封装 return num.intValue(); } @Override public List findProductsByCidWithPage(String cid, int startIndex, int pageSize) throws Exception {
    String sql = "select * from product where cid = ? limit ?,?"; QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource()); return qr.query(sql, new BeanListHandler
    (Product.class),cid,startIndex,pageSize); }

    4、写一个公共的分页代码,获取request当中传递过来的PageModel对象,并从其中获取对应的值

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>	<%--分页显示的开始 --%>    	
    共${
    page.totalPageNum}页/第${
    page.currentPageNum}页
    首页
    上一页 <%--显示的页码,使用forEach遍历显示的页面 --%>
    ${
    pagenum}
    下一页
    末页
    <%--分页显示的结束--%>

    product_list.jsp当中获取值并显示

    <%@ page language="java" contentType="text/html; charset=UTF-8"	pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    商品列表
    <%@include file="/jsp/header.jsp"%>

    暂无商品信息

    ${ p.pname }

    商城价:¥${ p.shcp_price }

    <%@ include file="/jsp/pageFile.jsp"%>

    浏览记录

    <%@include file="footer.jsp"%>

    最后关联productserviceimpl.java url

    pm.setUrl("ProductServlet?method=findProductsByCidWithPage&cid="+cid);

    在这里插入图片描述

    是公共页面pageFile。

    转载地址:https://code100.blog.csdn.net/article/details/105073662 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

    上一篇:Java Web 网络商城案例演示十四(设计订单表)
    下一篇:Java Web 网络商城案例演示十三(抽取购物车模块,实现购物车功能)

    发表评论

    最新留言

    表示我来过!
    [***.240.166.169]2024年04月30日 00时04分18秒