基础分页查询解题思路

  第一步:我们首先确定每页要放多少数据,一共多少数据,要分多少页,对上一页和下一页、首页、尾页进行页数分析,由此依据创建工具类page,page接受网页返回的当前页数(若无页数数据则默认为一),返回正确的上一页下一页...的page数,servlet通过调用page工具类实现正确的页数查询。最后返回数据到jsp页面显示。

  那么,工具类:

package com.person.util;

public class PageUtil {
    private Integer currentPage;//当前页
    private Integer firstPage;//第一页
    private Integer lastPage;//尾页
    private Integer nextPage;//下一页
    private Integer proPage;//上一页

    private Integer totalPage;//总页数
    private Integer totalCount;//总数据量

    private Integer index;//分页查询的索引

    private PageUtil(){}

    public PageUtil(String currentPage,Integer totalCount){
        this.currentPage=currentPage==null? 1: Integer.parseInt(currentPage);
        this.totalPage=(totalCount+4)/5;

        this.firstPage = 1;
        this.lastPage = this.totalPage;

        this.nextPage = this.currentPage==this.lastPage ? this.lastPage : this.currentPage+1;
        this.proPage= this.currentPage==1?1:this.currentPage-1;
        this.totalCount=totalCount;
        this.index=(this.currentPage-1)*5;
    }

    public Integer getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(Integer currentPage) {
        this.currentPage = currentPage;
    }

    public Integer getFirstPage() {
        return firstPage;
    }

    public void setFirstPage(Integer firstPage) {
        this.firstPage = firstPage;
    }

    public Integer getLastPage() {
        return lastPage;
    }

    public void setLastPage(Integer lastPage) {
        this.lastPage = lastPage;
    }

    public Integer getNextPage() {
        return nextPage;
    }

    public void setNextPage(Integer nextPage) {
        this.nextPage = nextPage;
    }

    public Integer getProPage() {
        return proPage;
    }

    public void setProPage(Integer proPage) {
        this.proPage = proPage;
    }

    public Integer getTotalPage() {
        return totalPage;
    }

    public void setTotalPage(Integer totalPage) {
        this.totalPage = totalPage;
    }

    public Integer getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(Integer totalCount) {
        this.totalCount = totalCount;
    }

    public Integer getIndex() {
        return index;
    }

    public void setIndex(Integer index) {
        this.index = index;
    }

    @Override
    public String toString() {
        return "PageUtil{" +
                "currentPage=" + currentPage +
                ", firstPage=" + firstPage +
                ", lastPage=" + lastPage +
                ", nextPage=" + nextPage +
                ", proPage=" + proPage +
                ", totalPage=" + totalPage +
                ", totalCount=" + totalCount +
                ", index=" + index +
                '}';
    }
}

接下来进行DAO的编写:

接口:

 /**
     * 根据具体的page(页数)进行固定个数的信息查询
     * @param index
     * @return
     */
    List<Map<String,Object>> getAdminByIndex(Integer index);

impl:

 @Override
    public List<Map<String, Object>> getAdminByIndex(Integer index) {
        String sql="select * from administrators limit ?,5";
        return DBUtil.executeQuery(sql,index);
    }

准备工作完成后进行servlet的编写:

package com.person.servlet;

import com.person.dao.IAdminDAO;
import com.person.dao.impl.AdminDAOImpl;
import com.person.util.PageUtil;

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 java.io.IOException;
import java.util.List;
import java.util.Map;

@WebServlet("/dromAdminHome.isLogin")
public class DromAdminHomeServlet  extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //将此page页面的信息传递过来
        String page=req.getParameter("page");
        //设置页面信息进工具类,
        PageUtil pageUtil = new PageUtil(page,7);
        
        //查询本页面的信息:
        IAdminDAO adminDAO = new AdminDAOImpl();
        List<Map<String,Object>> allAdmin=adminDAO.getAdminByIndex(pageUtil.getIndex());
        
        //将查询出来的信息设置入req中同时将工具类中计算出来的其他可供点击页面的信息也存入req中
        //这样若点击到时则执行本servlet,则又会计算出点击页面其外的其他页面的page,本页面的信息则进行查询显示
        req.setAttribute("allAdmin",allAdmin);
        req.setAttribute("pageData",pageUtil);

        req.getRequestDispatcher("/views/dromAdminHome.jsp").forward(req,resp);

    }
}

最后进行jsp页面的编写:

<table cellspacing="0px">
        <tr>
            <td>编号</td>
            <td>姓名</td>
            <td>性别</td>
            <td>电话</td>
            <td>宿舍楼</td>
            <td>用户名</td>
            <td>操作</td>
        </tr>
        <c:forEach var="a" items="${allAdmin}">
            <tr>
                <td>${a.id}</td>
                <td>${a.name}</td>
                <td>${a.gender}</td>
                <td>${a.telephone}</td>
                <td>${a.dormitory}</td>
                <td>${a.username}</td>
                <td><a href="/yuer/views/updateAdmin.jsp">修改</a> <a href="/yuer/deleteAdmin?id=${a.id}">删除</a></td>
            </tr>
        </c:forEach>

    </table>
    <div style="text-align: center">
        <a  href="/yuer/dromAdminHome.isLogin?page=${pageData.firstPage}" >首页</a>
        <a  href="/yuer/dromAdminHome.isLogin?page=${pageData.proPage}" >上一页</a>
        <a  href="/yuer/dromAdminHome.isLogin?page=${pageData.nextPage}" >下一页</a>
        <a  href="/yuer/dromAdminHome.isLogin?page=${pageData.lastPage}" >尾页</a>
        共【${pageData.currentPage}/${pageData.totalPage}】页            每页显示【5】条
    </div>

over~~~~~~~~~~~

原文地址:https://www.cnblogs.com/fanqiexin/p/11105618.html