11对分页的详细介绍

分页几乎是每个网站都会使用到的技术。所以,在这里,我总结一下分页的方法。

Pager.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%@ include file="/common/taglibs.jsp"%>

<!-- 分页的三个条件:1,需要得到查询表单的name,2,设置两个隐藏域,一个是当前页,一个是每页显示的条数。3,在需要分页的页面引入pager.jsp页面 -->

<!-- 在该分页的页面当中我们可以看出,分页与对象无关。 -->

<script type="text/javascript">

function jump(p,s){ var oForm = document.searchForm ||

document.forms[0]; oForm.elements["pager.currentPage"].value = p;

oForm.elements["pager.pageSize"].value = s; oForm.submit(); 

}

</script>

<table width="70%" style="font-size: 14px;font-family: 微软雅黑;"

align="center">

<tr>

<td style="float: left;">

第

<span style="color: red;"><s:property

value="pager.currentPage" /> </span>/

<s:property value="pager.pageCount" />

页 共

<s:property value="pager.total" />

条

</td>

<td style="float: right; ">

<s:if test="pager.currentPage eq 1">

                          首页

                          上一页

                      </s:if>

<s:else>

<a href="javascript:jump(1,document.getElementById('pSize').value)">首页</a>

<a

href="javascript:jump(<s:property value="pager.currentPage-1"/>,document.getElementById('pSize').value)">上一页</a>

</s:else>

<s:if test="pager.currentPage eq pager.pageCount">

                          下一页

                          末页

                      </s:if>

<s:else>

<a

href="javascript:jump(<s:property value="pager.currentPage+1"/>,document.getElementById('pSize').value)">下一页</a>

<a

href="javascript:jump(<s:property value="pager.pageCount"/>,document.getElementById('pSize').value)">末页</a>

</s:else>


转到

<input type="text" id="pPage" style="width:20px"

value="<s:property value="pager.currentPage" />" />

页

<input type="button" value="跳转"

οnclick="jump(document.getElementById('pPage').value,document.getElementById('pSize').value)" />


每页显示

<s:select name="pager.pageSize" list="{3,5,10,15,20,50 }" id="pSize"

οnchange="jump(1,this.value)"></s:select>

</td>

</tr>

</table>


Pager.java

package com.hfxt.common;

import java.util.ArrayList;

import java.util.List;

public class Pager<T> {

 // The number of current page size

    private int currentPage;//当前页

    // The number of records in one page

    private int pageSize;//页面要显示多少条数据

    // The total number of records in DB

    private int total;//数据的总数

    // The total number of page

    private int pageCount;//页面的总数

    // The number where we begin to get record

    private int startRecord;

    // Whether it has previous page

    private boolean hasPreviousPage;

    // Whether it has next page

    private boolean hasNextPage;

    // Whether it has only one page

    private boolean onlyOnePage;

    // The records of page designed

    private List<T> pageRecords;//页面数据的集合

    public int getCurrentPage() {

        return currentPage;

    }

    

    /**

     * 构造方法,只构造空页.

     */

    public Pager() {

    this(1, 0, 3, new ArrayList());

    }

    

    /**

 * 构造方法,只构造空页.

 */

public Pager(int currentPage,int pageSize) {

this(currentPage, 0, pageSize, new ArrayList());

}

/**

 * 默认构造方法.

 * 

 * @param start

 *            本页数据在数据库中的起始位置

 * @param totalSize

 *            数据库中总记录条数

 * @param pageSize

 *            本页容量

 * @param data

 *            本页包含的数据

 */

public Pager(int currentPage, int totalSize, int pageSize, List data) {

this.pageSize = pageSize;

this.currentPage = currentPage;

this.total = totalSize;

this.pageRecords = data;

}

    /**

     * make sure the page is in the range of the total pages

     * 

     * @param currentPage

     *            current page

     */

    public void setCurrentPage(int currentPage) {

        if (currentPage < 1) {

            this.currentPage = 1;

            return;

        }

        /*if (currentPage > getPageCount()) {

            this.currentPage = getPageCount();

            return;

        }*/

        this.currentPage = currentPage;

    }

    /**

     * get page size

     * 

     * @return page size number

     */

    public int getPageSize() {

        return pageSize;

    }

    /**

     * set page size

     * 

     * @param pageSize

     *            page size number

     */

    public void setPageSize(int pageSize) {

        if (pageSize <= 0) {

            this.pageSize = 1;

        } else {

            this.pageSize = pageSize;

        }

    }

    /**

     * get total records

     * 

     * @return total record's number

     */

    public int getTotal() {

        return total;

    }

    /**

     * set total records

     * 

     * @param totalRecords

     *            total record number

     */

    public void setTotal(int totalRecords) {

        this.total = totalRecords;

    }

    /**

     * Get the total count of the page

     * 

     * @return count number

     */

    public int getPageCount() {

        // If there is no data in database.

        if (total == 0) {

            pageCount = 1;

            return pageCount;

        }

        boolean isZero = total % pageSize == 0;

        pageCount = total / pageSize;

        pageCount = isZero ? pageCount : pageCount + 1;

        return pageCount;

    }

    /**

     * First record of one page

     * 

     * @return start records

     */

    public int getStartRecord() {

        startRecord = ((currentPage - 1) * pageSize);

        return startRecord;

    }

    /**

     * Whether has previous page

     * 

     * @return if previous page's is exist,return true else not

     */

    public boolean isHasPreviousPage() {

        hasPreviousPage = (currentPage == 1) ? false : true;

        return hasPreviousPage;

    }

    /**

     * Whether has next page

     * 

     * @return if next page's is exist,return true else not

     */

    public boolean isHasNextPage() {

        hasNextPage = (currentPage == getPageCount()) ? false : true;

        return hasNextPage;

    }

    /**

     * Whether is only one page

     * 

     * @return if only one page,return true else not

     */

    public boolean isOnlyOnePage() {

        onlyOnePage = ((getPageCount() == 1) ? true : false);

        return onlyOnePage;

    }

    

    /**

     * 查询到的所有的记录

     * @return the pageRecords

     */

    public List<T> getPageRecords() {

        return pageRecords;

    }

public void setPageRecords(List<T> pageRecords) {

this.pageRecords = pageRecords;

}

}


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值