Java Web 网络商城案例演示十一(商品分页)
发布日期:2021-06-29 15:01:19 浏览次数:3 分类:技术文章

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

Java Web 网络商城案例演示十一(商品分页)

基础的分页操作
web阶段项目中:CRUD,ajax,分页,下载,上传
新建一个动态的web工程

分析SQL语句的实现

– 约定每页能够显示5条数据

SELECT * FROM product LIMIT 0,5;

SELECT * FROM product LIMIT 5,5;
SELECT * FROM product LIMIT 10,5;
SELECT * FROM product LIMIT 15,5;

第几页数(当前页) 起始值 每一页数据的大小
1 0 5
2 5 5
3 10 5
4 15 5

结论:

1、(当前页减去1)乘以(每页的数量)=起始值

2、结论要想实现分页,向服务端发起请求的时候,必须传递当前页

原理分析:

步骤实现:

在这里插入图片描述
1、new DynamicWebProject (TestPageination)
2、导入jar包,工具类,配置文件(修改参数)创建相关的程序servlet,service ,dao ,product
在这里插入图片描述
在utils下面创建Product 类

public class Product {
private String pid;//商品编号 private String pname;//商品的名称 private double market_price;//商品市场价格 private double shop_price;//商品的商场价格 private String pimage;//商品的图片路径 private Date pdate;//商品的上架的日期 private String is_hot;//商品是否热门 private String pdesc;//商品描述 private int pflag;//商品的是否在货架上 0 在货架上 1 下架 private String cid;//商品所在分类的id public String getPid() {
return pid; } public void setPid(String pid) {
this.pid = pid; } public String getPname() {
return pname; } public void setPname(String pname) {
this.pname = pname; } public double getMarket_price() {
return market_price; } public void setMarket_price(double market_price) {
this.market_price = market_price; } public double getShop_price() {
return shop_price; } public void setShop_price(double shop_price) {
this.shop_price = shop_price; } public String getPimage() {
return pimage; } public void setPimage(String pimage) {
this.pimage = pimage; } public Date getPdate() {
return pdate; } public void setPdate(Date pdate) {
this.pdate = pdate; } public String getIs_hot() {
return is_hot; } public void setIs_hot(String is_hot) {
this.is_hot = is_hot; } public String getPdesc() {
return pdesc; } public void setPdesc(String pdesc) {
this.pdesc = pdesc; } public int getPflag() {
return pflag; } public void setPflag(int pflag) {
this.pflag = pflag; } public String getCid() {
return cid; } public void setCid(String cid) {
this.cid = cid; } public Product() {
// TODO Auto-generated constructor stub } public Product(String pid, String pname, double market_price, double shop_price, String pimage, Date pdate, String is_hot, String pdesc, int pflag, String cid) {
super(); this.pid = pid; this.pname = pname; this.market_price = market_price; this.shop_price = shop_price; this.pimage = pimage; this.pdate = pdate; this.is_hot = is_hot; this.pdesc = pdesc; this.pflag = pflag; this.cid = cid; } @Override public String toString() {
return "Product [pid=" + pid + ", pname=" + pname + ", market_price=" + market_price + ", shop_price=" + shop_price + ", pimage=" + pimage + ", pdate=" + pdate + ", is_hot=" + is_hot + ", pdesc=" + pdesc + ", pflag=" + pflag + ", cid=" + cid + "]"; }}

c3p0链接数据库

com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/store_07
root
root
30000
30
10
30
100
10
200
10
1
0
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/store_07
root
root
5
20
10
40
0
5
/** * Servlet implementation class ProductServlet */public class ProductServlet extends HttpServlet {
/** * @see HttpServlet#HttpServlet() */ public ProductServlet() {
super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//接收当前页 String num=request.getParameter("num"); int curNum=Integer.parseInt(num); System.out.println(curNum); ProductService ProductService=new ProductService(); //调用业务层查询当前页功能,返回PageModel对象(1_当前页数据2_分页参数) PageModel pm=null; try {
pm = ProductService.findProducts(curNum); } catch (Exception e) {
e.printStackTrace(); } //将PageModel对象放入request request.setAttribute("page", pm); //request.getRequestDispatcher("/product_list.jsp").forward(request, response); request.getRequestDispatcher("/product_list2.jsp").forward(request, response); }}
public class ProductService {
public PageModel findProducts(int curNum) throws SQLException{
//1_创建PageModel对象 目的:计算分页参数 ProductDao ProductDao=new ProductDao(); int totalRecords=ProductDao.findToralRecords(); PageModel pm=new PageModel(curNum,5,totalRecords);//传入要点击的页数,和每页的页数,和对应总信息的条数 //2_关联数据 select * from product limit ? , ? List list=ProductDao.findProducts(pm.getStartIndex(),pm.getPageSize()); pm.setList(list); //3_关联url pm.setUrl("ProductServlet"); return pm; }}
public class ProductDao {
//统计表中有多少条数据 public int findToralRecords() throws SQLException {
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource()); Long num=(Long)qr.query("select count(*) from product",new ScalarHandler()); return num.intValue(); } public List findProducts(int startIndex, int pageSize) throws SQLException {
String sql="select * from product limit ? ,? "; QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource()); return qr.query(sql, new BeanListHandler
(Product.class),startIndex,pageSize); }}

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" %>
Insert title here
商品名称 市场价格 商场价格 商品图片
暂无数据
${
p.pname}
${
p.market_price}
${
p.shop_price}
<%--分页显示的开始 --%>
共${
page.totalPageNum}页/第${
page.currentPageNum}页
首页
上一页
<%-- 获取开始结束页码 ${
page} *.getAttribute("page"); 获取到pageModel对象 ${
page.startPage} 调用PageModel对象getStartPage()方法 --%>
${
pagenum}
${
pagenum}
下一页
末页
<%--分页显示的结束--%>

product_list2.jsp

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

上一篇:Java Web 网络商城案例演示十三(抽取购物车模块,实现购物车功能)
下一篇:Java Web 网络商城案例演示十(商品详情)

发表评论

最新留言

不错!
[***.144.177.141]2024年05月02日 02时54分16秒