天天看點

大資料分頁功能 的一種實作方式

大資料分頁功能 的一種實作方式

工具類 Page.java

import java.util.List;

//界面上所有與分頁有關的都找此類要
public class Page
    private List records;
    private int pagesize = 10;//每頁顯示的記錄條數
    private int pagenum;//使用者要看的頁碼即目前頁碼
    private int totalpage;//總頁數
    private int startIndex;//每頁開始記錄的索引
    private int totalrecords;//總記錄條數

    //顯示的頁碼
    private int startPage;
    private int endPage;

    //查詢資料時的Servlet的URL
    private String servletUrl;

    public Page(int pagenum,int totalrecords){
        this.pagenum = pagenum;
        this.totalrecords = totalrecords;

        //計算每頁開始記錄的索引
        startIndex = (pagenum-1)*pagesize;
        //計算總頁數
        totalpage = totalrecords%pagesize==0?totalrecords/pagesize:(totalrecords/pagesize+1);

        //顯示的頁碼
        if(totalpage<=9){
            startPage = 1;
            endPage = totalpage;
        }else{
            startPage = pagenum-4;
            endPage = pagenum+4;
            if(startPage<1){
                startPage = 1;
                endPage = 9;
            }
            if(endPage>totalpage){
                endPage = totalpage;
                startPage = totalpage-8;
            }
        }
    }


    public List getRecords() {
        return records;
    }
    public void setRecords(List records) {
        this.records = records;
    }
    public int getPagesize() {
        return pagesize;
    }
    public void setPagesize(int pagesize) {
        this.pagesize = pagesize;
    }
    public int getPagenum() {
        return pagenum;
    }
    public void setPagenum(int pagenum) {
        this.pagenum = pagenum;
    }
    public int getTotalpage() {
        return totalpage;
    }
    public void setTotalpage(int totalpage) {
        this.totalpage = totalpage;
    }
    public int getStartIndex() {
        return startIndex;
    }
    public void setStartIndex(int startIndex) {
        this.startIndex = startIndex;
    }
    public int getTotalrecords() {
        return totalrecords;
    }
    public void setTotalrecords(int totalrecords) {
        this.totalrecords = totalrecords;
    }


    public int getStartPage() {
        return startPage;
    }


    public void setStartPage(int startPage) {
        this.startPage = startPage;
    }


    public int getEndPage() {
        return endPage;
    }


    public void setEndPage(int endPage) {
        this.endPage = endPage;
    }


    public String getServletUrl() {
        return servletUrl;
    }


    public void setServletUrl(String servletUrl) {
        this.servletUrl = servletUrl;
    }

}      

jsp頁面使用

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!-- 分頁的東東 -->
                第${page.pagenum}頁/共${page.totalpage}頁  
                <a href="${pageContext.request.contextPath}/servlet/ShowAllCustomersServlet">首頁</a>  
                <a href="${pageContext.request.contextPath}/servlet/ShowAllCustomersServlet?pagenum=${page.pagenum-1==0?1:page.pagenum-1}">上一頁</a>  
                <c:forEach begin="${page.startPage}" end="${page.endPage}" var="num">
                    <a href="${pageContext.request.contextPath}/servlet/ShowAllCustomersServlet?pagenum=${num}">${num }</a>
                </c:forEach>
                  
                <a href="${pageContext.request.contextPath}/servlet/ShowAllCustomersServlet?pagenum=${page.pagenum+1>page.totalpage?page.totalpage:page.pagenum+1}">下一頁</a>  
                <a href="${pageContext.request.contextPath}/servlet/ShowAllCustomersServlet?pagenum=${page.totalpage}">尾頁</a>
                <select id="s1">
                    <c:forEach begin="1" end="${page.totalpage}" var="num">
                        <option value="${num}" ${page.pagenum==num?'selected="selected"':''}>${num}</option>
                    </c:forEach>
                </select>
                <a href="javascript:jump()">跳轉</a>
                <script type="text/javascript">function jump(){
                        var num = document.getElementById("s1").value;
                        window.location.href="${pageContext.request.contextPath}/servlet/ShowAllCustomersServlet?pagenum="+num;
                    }
                </script>