JavaWeb - 模糊查询 + 分页

xiaoxiao2025-08-31  13

效果图核心代码(12个一页) <!-- 搜索 --> <form id="searchForm" method="post" action="/product/list.do"> <div class="search"> <input type="hidden" name="page" value="1"> <input type="text" name="title" class="search_input" value="${title}"> <input type="submit" class="search_submit" value=""> </div> </form> <!-- 分页 --> <div> <%--<a href="/product/list.do?page=1">首页</a>--%> <%--<a href="/product/list.do?page=${prePage}">上一页</a>--%> <%--<a href="/product/list.do?page=${nextPage}">下一页</a>--%> <%--<a href="/product/list.do?page=${totalPage}">尾页</a>--%> <form method="post" action="/product/list.do" style="display: inline"> <input type="hidden" name="page" value="1"> <input type="hidden" name="title" value="${title}"> <input type="submit" value="首页" class="btn"> </form> <form method="post" action="/product/list.do" style="display: inline"> <input type="hidden" name="page" value="${prePage}"> <input type="hidden" name="title" value="${title}"> <input type="submit" value="上一页" class="btn"> </form> <form method="post" action="/product/list.do" style="display: inline"> <input type="hidden" name="page" value="${nextPage}"> <input type="hidden" name="title" value="${title}"> <input type="submit" value="下一页" class="btn"> </form> <form method="post" action="/product/list.do" style="display: inline"> <input type="hidden" name="page" value="${totalPage}"> <input type="hidden" name="title" value="${title}"> <input type="submit" value="尾页" class="btn"> </form> 第${curPage}页/共${totalPage}页 </div> <!-- 响应内容省略 --> package com.imooc.cart.servlet; import com.imooc.cart.data.LocalCache; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * 商品(课程)控制器 * @version 1.0 */ public class ProductServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String name = req.getParameter("title"); String pageStr = req.getParameter("page"); int page = 1; if (null != pageStr && !"".equals(pageStr)) { page = Integer.parseInt(pageStr); } int totalProducts = LocalCache.getProductsCount(name); int totalPage = totalProducts % 12 > 0 ? totalProducts / 12 + 1 : totalProducts / 12; req.setAttribute("curPage", page); req.setAttribute("prePage", page > 1 ? page - 1 : 1); req.setAttribute("nextPage", totalPage > page ? page + 1 : totalPage); req.setAttribute("totalPage", totalPage); req.setAttribute("title", name); req.setAttribute("products", LocalCache.getProducts(page, 12, name)); req.getRequestDispatcher("/WEB-INF/views/biz/list.jsp").forward(req, resp); } } package com.imooc.cart.data; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 本地缓存 * @version 1.0 */ public final class LocalCache { private static Map<Long, Product> productMap = new HashMap<>(); // 省略... public static List<Product> getProducts(int page, int size, String name) { List<Product> products = new ArrayList<>(); if (null != name && !"".equals(name)) { productMap.values().forEach(product -> { if (product.getName().contains(name)) { products.add(product); } }); } else { products.addAll(productMap.values()); } int start = (page - 1) * size; int end = products.size() >= page * size ? page * size : products.size(); return products.subList(start, end); } public static int getProductsCount(String name) { List<Product> products = new ArrayList<>(); if (null != name && !"".equals(name)) { productMap.values().forEach(product -> { if (product.getName().contains(name)) { products.add(product); } }); } else { products.addAll(productMap.values()); } return products.size(); } }

 

待更新...
转载请注明原文地址: https://www.6miu.com/read-5035516.html

最新回复(0)