首页 > 代码库 > 分页原理

分页原理

page类中属性

public class Page {
        private int currentPage;
        private int totalPage;
        private int count;
        private int PageSize;
        private List<Product> list;
        private String category;
        
    }    

servlet:

package com.learning.web.servlet;

import java.io.IOException;
import java.util.List;

import javax.enterprise.inject.New;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.learning.domain.Page;
import com.learning.domain.Product;
import com.learning.service.ProductService;


@WebServlet("/showProductByPage")
public class ShowProductByPage extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            int currentPage=1;
            int pageSize=4;
            //第一次取为空
            String currentPageString=request.getParameter("currentPage");
            if (currentPageString!=null) {
                currentPage=Integer.parseInt(currentPageString);
            }
            String category = request.getParameter("category");
            if ("".equals(category)) {
                category=null;
            }    
            ProductService productService=new ProductService();
            Page page=productService.showProductByPage(currentPage,pageSize,category);
            request.setAttribute("page", page);
            request.getRequestDispatcher("/product_list.jsp").forward(request, response);
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}

service:

public Page showProductByPage(int currentPage, int pageSize, String category) {
        try {
            Page page=new Page();
            int count=productDao.count(category);
            page.setCount(count);
            page.setList(productDao.findProductsByPage(currentPage,pageSize,category));
            int totalPage=(int) Math.ceil(1.0*count/pageSize);
            page.setPageSize(pageSize);
            page.setCurrentPage(currentPage);
            page.setTotalPage(totalPage);
            page.setCategory(category);
            return page;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

Dao:

    public int count(String category) throws SQLException {
        QueryRunner queryRunner=new QueryRunner(C3P0Util.getDataSource());
        String sql=" select count(*) from products ";
        if (category!=null) {
            sql+=" where category=‘"+category+"‘";
        }
        long l= (Long)queryRunner.query(sql, new ScalarHandler(1));
        return (int) l;
    }



    public List<Product> findProductsByPage(int currentPage, int pageSize, String category) throws SQLException {
        QueryRunner queryRunner=new QueryRunner(C3P0Util.getDataSource());
        String sql=" select * from products ";
        if (category!=null) {
            sql+=" where category=‘"+category+"‘";
        }
        sql+=" limit ?,?";
        return queryRunner.query(sql, new BeanListHandler<Product>(Product.class),(currentPage-1)*pageSize,pageSize);
    }

 

分页原理