JavaWeb实现商品列表的多条件查询和分页功能(超详细的~)

您所在的位置:网站首页 gcga评级查询 JavaWeb实现商品列表的多条件查询和分页功能(超详细的~)

JavaWeb实现商品列表的多条件查询和分页功能(超详细的~)

2024-01-08 17:25| 来源: 网络整理| 查看: 265

需求

1.在goods.txt文件夹中写入如下格式: 商品类型-商品名称-商品价格-商品数量 联想电脑-联想小新-6900-1000 写入52条数据 多条件搜索:根据商品类型和商品名称来搜索符合条件的商品 分页:一页显示5条数据,实现前一页,后一页翻页功能,实现点击跳转到指定页

先看看效果:

该项目整体代码层次:在这里插入图片描述

Java源码采用分层来写:bean:实体类放入该层,util:文件工具放入该层web:网络servlet层代码放入该层

多条件查询功能实现:

思路:获取所有商品集合,获取查询的条件,按个判断查询条件,一层层集合套,过滤出最后的结果

主要代码:

//获取查询条件 String goodsType = req.getParameter("goods_type"); String goodsName = req.getParameter("goods_name"); //从文件读出商品集合 List goods = GoodsFileUtil.getGoodsList(); //查询第一个条件 List typeGoods = new ArrayList(); if (null != goodsType && !"".equals(goodsType)) { for (Goods goods2 : goods) { if (goods2.getGoodsType().contains(goodsType)) { typeGoods.add(goods2); } } } else { typeGoods = goods; } //查询第二个条件 List nameGoods = new ArrayList(); if (null != goodsName && !"".equals(goodsName)) { for (Goods goods2 : typeGoods) { if (goods2.getGoodsName().contains(goodsName)) { nameGoods.add(goods2); } } } else { nameGoods = typeGoods; }

分页功能实现

分页功能实现思路: 1.输入条件,当前页,每页的数据记录条数,商品集合 2.封装分页类,属性有:pageNumb:当前页,pageSize:每页的数据数,rowCount:总共的商品数据条数,pageCount:总共有多少页,prePageNumb:上一页,nextPageNumb:下一页,currentList:当前页数展示的商品集合,提供有参构造方法,构造Pager类

Pager类

public class Pager { private Integer pageNumb; private Integer pageSize; private Integer rowCount; private Integer pageCount; private Integer prePageNumb; private Integer nextPageNumb; private List currentList; public Pager(Integer _pageNumb, Integer _pageSize, List _allList){ //初始化每页的内容条数 this.pageSize = _pageSize; //初始化总共的内容条数 this.rowCount = _allList.size(); //计算共有多少页 if (this.rowCount % this.pageSize == 0) { this.pageCount = this.rowCount / this.pageSize; } else { this.pageCount = this.rowCount / this.pageSize + 1; } //修正当前页 if (_pageNumb this.pageCount) { this.pageNumb = this.pageCount; } else { this.pageNumb = _pageNumb; } //处理前一页和后一页的页码 this.prePageNumb = this.pageNumb - 1; if (this.prePageNumb this.pageCount) { this.nextPageNumb = this.pageCount; } //处理当前页的记录开始结束位置 Integer fromIndex = (this.pageNumb - 1) * 5; Integer toIndex = this.pageNumb * 5; if (toIndex > this.rowCount) { toIndex = this.rowCount; } this.currentList = _allList.subList(fromIndex, toIndex); } public Integer getPageCount() { return pageCount; } public Integer getPageNumb() { return pageNumb; } public Integer getPageSize() { return pageSize; } public Integer getRowCount() { return rowCount; } public Integer getPrePageNumb() { return prePageNumb; } public Integer getNextPageNumb() { return nextPageNumb; } public List getCurrentList() { return currentList; } }

GoodsList类对其进行构造

@WebServlet("/goodsList") public class GoodsListServlet extends HttpServlet{ public static final Integer PageSize = 5; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获取查询条件 String goodsType = req.getParameter("goods_type"); String goodsName = req.getParameter("goods_name"); //从文件读出商品集合 List goods = GoodsFileUtil.getGoodsList(); //查询第一个条件 List typeGoods = new ArrayList(); if (null != goodsType && !"".equals(goodsType)) { for (Goods goods2 : goods) { if (goods2.getGoodsType().contains(goodsType)) { typeGoods.add(goods2); } } } else { typeGoods = goods; } //查询第二个条件 List nameGoods = new ArrayList(); if (null != goodsName && !"".equals(goodsName)) { for (Goods goods2 : typeGoods) { if (goods2.getGoodsName().contains(goodsName)) { nameGoods.add(goods2); } } } else { nameGoods = typeGoods; } //获取当前页 String strPageNumb = req.getParameter("pageNumb"); Integer pageNumb = 1; if (null != strPageNumb && !"".equals(strPageNumb)) { pageNumb = Integer.valueOf(strPageNumb); } for (int i = 1; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3