`

分页类 PageModel的手法

 
阅读更多

/**

 * 封装分页逻辑

 * @author Administrator

 *

 */

public class PageModel<T> {

//结果集

private List<T> list;

//记录数

private int totalRecords;

//每页多少条数据

private int pageSize;

//第几页

private int pageNo;

 

/**

* 返回总页数

* @return

*/

public int getTotalPages() {

return (totalRecords + pageSize - 1) / pageSize;

}

/**

* 首页

* @return

*/

public int getTopPageNo() {

return 1;

}

/**

* 上一页 

* @return

*/

public int getPreviousPageNo() {

if (this.pageNo <= 1) {

return 1;

}

return this.pageNo - 1;

}

/**

* 下一页

* @return

*/

public int getNextPageNo() {

if (this.pageNo >= getButtomPageNo()) {

return getButtomPageNo();

}

return this.pageNo + 1;

}

/**

* 尾页

* @return

*/

public int getButtomPageNo() {

return getTotalPages();

}

public List<T> getList() {

return list;

}

 

public void setList(List<T> list) {

this.list = list;

}

 

public int getTotalRecords() {

return totalRecords;

}

 

public void setTotalRecords(int totalRecords) {

this.totalRecords = totalRecords;

}

 

public int getPageSize() {

return pageSize;

}

 

public void setPageSize(int pageSize) {

this.pageSize = pageSize;

}

 

public int getPageNo() {

return pageNo;

}

 

public void setPageNo(int pageNo) {

this.pageNo = pageNo;

}

}

 

另一种写法:

 

public class PageUtils {

 

/**

* 默认第一页页码

*/

public static final int INDEX_PAGE_NUM = 1;

 

public final static int PAGE_SIZE = 15; // 默认分页大小

 

/**

* 计算页数

*/

public static int pageCount(int recordCount, int perPage) {

int pc = (int) Math.ceil(recordCount / (double) perPage);

if (pc == 0)

pc = 1;

return pc;

}

 

/**

* 计算查询时,数据当前位置(fromIndex)

*/

public static int fromIdx(int page, int fetchCount) {

return (page - INDEX_PAGE_NUM) * fetchCount;

}

 

/**

* 分页条

* @param currentPage

*            当前页数

* @param fetchCount 

*            每页显示数

* @param recordCount

*            数据总数

* @param pagePath

*            页面路径

* @return

*/

public static String getPageStr(int currentPage, int fetchCount,

int recordCount, String fileName,String sufFix) {

// String fileName = pagePath.split("\\.")[0];

// String sufFix = "." + pagePath.split("\\.")[1];

StringBuffer result = new StringBuffer();

String blankStr = "&nbsp;";

int maxLength = 4;

 

int pageCount = pageCount(recordCount, fetchCount);

 

if (pageCount > INDEX_PAGE_NUM) {

result.append("<span class='pagelink'>");

result.append("<a href='" + fileName + sufFix + "'>首页</a>");

if (currentPage > INDEX_PAGE_NUM) {

result.append(blankStr);

result.append("<a href='" + fileName);

if (currentPage - 1 != INDEX_PAGE_NUM) {

result.append("_" + (currentPage - 1));

}

result.append(sufFix + "'>上一页</a>");

 

}

result.append("</span>");

result.append(blankStr);

}

 

if (pageCount > INDEX_PAGE_NUM) {

result.append("<span class='pagelink'>");

for (int cou = ((currentPage - maxLength) > 0 ? maxLength

: currentPage - 1); cou >= 1; cou--) {

 

result.append("<a href='" + fileName);

if (currentPage - cou != INDEX_PAGE_NUM) {

result.append("_" + (currentPage - cou));

}

result.append(sufFix + "'>" + (currentPage - cou) + "</a>");

 

result.append(blankStr);

}

result.append("</span>");

 

result.append("<span class='pageon'>" + currentPage + "</span>");

 

result.append("<span class='pagelink'>");

for (int cou = 1; cou <= ((currentPage + maxLength) > pageCount ? pageCount

- currentPage

: maxLength); cou++) {

result.append("<a href='" + fileName + "_"

+ (currentPage + cou) + sufFix + "'>"

+ (currentPage + cou) + "</a>");

result.append(blankStr);

}

result.append("</span>");

}

 

if (pageCount > INDEX_PAGE_NUM) {

result.append("<span class='pagelink'>");

if (currentPage < pageCount) {

result.append("<a href='" + fileName + "_" + (currentPage + 1)

+ sufFix + "'>下一页</a>");

}

result.append(blankStr);

result.append("<a href='" + fileName + "_" + pageCount + sufFix

+ "'>末页</a>");

result.append("</span>");

}

 

return result.toString();

}

 

/**

* 动态分页条(自动带"page=?"的参数)

* @param currentPage

*            当前页数

* @param fetchCount

*            每页显示数

* @param recordCount

*            数据总数

* @param pagePath

*            页面路径

* @param reqParam

*            页面参数

* @return

*/

public static String getParamPageStr(int currentPage, int fetchCount,

int recordCount, String pagePath, String reqParam) {

String fileName = pagePath.split("\\.")[0];

String sufFix = "." + pagePath.split("\\.")[1];

StringBuffer result = new StringBuffer();

String blankStr = "&nbsp;";

int maxLength = 4;

 

int pageCount = pageCount(recordCount, fetchCount);

 

if (pageCount > INDEX_PAGE_NUM) {

result.append("<span class='pagelink'>");

result.append("<a href='" + fileName + sufFix + "?" + reqParam

+ "&page=1" + "'>首页</a>");

if (currentPage > INDEX_PAGE_NUM) {

result.append(blankStr);

result.append("<a href='" + fileName);

result.append(sufFix + "?" + reqParam + "&page=");

result.append(currentPage - 1);

result.append("'>上一页</a>");

 

}

result.append("</span>");

result.append(blankStr);

}

 

if (pageCount > INDEX_PAGE_NUM) {

result.append("<span class='pagelink'>");

for (int cou = ((currentPage - maxLength) > 0 ? maxLength

: currentPage - 1); cou >= 1; cou--) {

 

result.append("<a href='" + fileName);

result.append(sufFix + "?" + reqParam + "&page=");

result.append(currentPage - cou);

result.append("'>" + (currentPage - cou) + "</a>");

 

result.append(blankStr);

}

result.append("</span>");

 

result.append("<span class='pageon'>" + currentPage + "</span>");

 

result.append("<span class='pagelink'>");

for (int cou = 1; cou <= ((currentPage + maxLength) > pageCount ? pageCount

- currentPage

: maxLength); cou++) {

result.append("<a href='" + fileName);

result.append(sufFix + "?" + reqParam + "&page=");

result.append((currentPage + cou));

result.append("'>" + (currentPage + cou) + "</a>");

result.append(blankStr);

}

result.append("</span>");

}

 

if (pageCount > INDEX_PAGE_NUM) {

result.append("<span class='pagelink'>");

if (currentPage < pageCount) {

result.append("<a href='" + fileName);

result.append(sufFix + "?" + reqParam + "&page=");

result.append((currentPage + 1) + "'>下一页</a>");

}

result.append(blankStr);

 

result.append("<a href='" + fileName);

result.append(sufFix + "?" + reqParam + "&page=");

result.append(pageCount + "'>末页</a>");

result.append("</span>");

}

 

return result.toString();

}

public static void main(String[] args){

System.out.println(getParamPageStr(2,1,3,"555.shtml",".shtml"));

}

}


分享到:
评论

相关推荐

    一个很好的分页类php分页类

    2. **实例化分页类**:将查询结果总数和每页记录数传递给分页类。 3. **设置当前页**:根据URL或请求参数设定当前页码。 4. **获取分页数据**:调用分页类的方法获取当前页的数据。 5. **渲染页面**:根据获取的...

    php封装的page分页类.zip

    这个"Page"分页类的实现可能包括以下几个核心组件: 1. **初始化**:类的构造函数接收必要的参数,如总记录数、每页显示的条目数、当前页数等,用于计算总的页数和其他相关属性。 2. **计算总页数**:根据总记录数...

    asp分页类,套用方便,收藏

    "asp分页类"就是用来实现这种功能的代码库或组件。 分页类通常包含以下几个核心知识点: 1. **参数处理**:分页类需要接收一些参数,如当前页码、每页显示条目数、总记录数等。这些参数的正确处理是分页功能的基础...

    Java公用分页类 Java公用分页类

    Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类

    asp.net 分页类

    ASP.NET 分页类是用于处理大量数据并分批次显示的关键技术,它允许用户在Web应用程序中轻松地浏览大型数据集,提高用户体验,并减轻服务器负担。相比于Visual Studio (VS) 自带的分页控件,自定义分页类提供了更高的...

    ASP分页通用类 asp分页

    在ASP(Active Server Pages)环境中,实现分页功能通常需要编写自定义的分页类。下面我们将详细探讨ASP分页的原理、分页类的构建以及如何在实际项目中应用。 首先,理解分页的基本原理。分页的核心思想是通过限制...

    asp源码-HHYY asp分页类(原印象分页类) v2.0 最终版.zip

    asp源码—HHYY asp分页类(原印象分页类) v2.0 最终版.zip asp源码—HHYY asp分页类(原印象分页类) v2.0 最终版.zip asp源码—HHYY asp分页类(原印象分页类) v2.0 最终版.zip asp源码—HHYY asp分页类(原印象分页类) ...

    万能的php分页类实例代码

    以上代码示例中,`Pagination`就是我们的分页类,它封装了分页逻辑,使得在实际项目中应用分页变得简单易行。通过深入理解并定制此类,我们可以应对各种复杂的分页需求,如自定义URL结构、添加翻页动画、支持无限...

    常用类 数据库连接类 分页类

    一个分页类通常包含获取总记录数、设置每页显示条数、计算总页数、生成分页链接等功能。例如,可以设计一个简单的分页类: ```php class Pagination { private $total_rows; private $per_page; private $...

    php分页类工具类

    这是一个功能强大,并且易于扩展的分页类,该类将分页的各个元素单独分开模块化,用户可以随心所欲的拼接出自己想要的分页效果,更是添加了控制分页样式的功能,可以让你独立设置分页各元素的样式,也集成了集中已经...

    高效asp分页类,带例子

    "高效asp分页类"就是针对这种情况设计的,旨在处理大数据集时保持快速响应,避免页面加载过慢或服务器压力过大。 高效asp分页类的核心在于优化了数据检索和页面渲染的过程,通常包括以下几个关键点: 1. **数据...

    分页 jsp 分页类 java

    首先,我们需要创建一个分页类,这个类将包含关于分页的基本信息,如当前页、总页数、每页显示的记录数以及总记录数等。以下是一个简单的分页类的示例: ```java public class Pagination { private int current...

    php分页类(通用)

    - **方法**:分页类的方法包括设置和获取属性值,计算总页数,生成分页链接,以及获取当前页数据的SQL语句等。 2. 分页类的核心功能 - **计算总页数**:根据总记录数和每页显示的条数来计算总页数。 ``` public...

    简单PHP分页类的实现(内含测试数据库及数据库操作类)

    下面将详细介绍分页类的工作原理、如何使用以及相关数据库操作。 首先,PHP分页类的核心功能是计算总页数、生成链接和获取每页的数据。它通常包括以下主要部分: 1. 计算总页数:根据查询语句获取所有记录的数量,...

    基于Servlet的抽象分页类

    "基于Servlet的抽象分页类"通常是指一个设计用于协助在Web应用中实现数据分页功能的类。分页是大型数据集展示时必要的功能,它帮助用户更有效地浏览和管理大量的信息,而无需一次性加载所有数据,提高了用户体验和...

    PHP超强分页类

    2. **样式调整**:可以通过调整类中的属性值来改变分页组件的外观,例如更改文字、图标等。 #### 六、总结 PHP超强分页类不仅提供了基础的分页功能,还支持自定义显示模式、AJAX分页等功能,使得开发者能够根据项目...

    asp.net 通用分页类

    `asp.net 通用分页类`就是为了解决这个问题而设计的,它允许开发者创建一个可复用的组件,以便在不同的数据展示页面上实现高效且灵活的分页功能。 首先,我们来看`C#`语言是如何实现分页逻辑的。在C#中,可以创建一...

    php智能分页类让你能快速的去设置页面的分页

    描述中提到“无需调试,没有繁琐的页面样式设置”,这表明这个分页类已经考虑到了易用性和灵活性。它可能包含了内置的样式,可以直接嵌入到现有的页面布局中,同时也可能允许自定义样式,以适应各种前端框架。 接...

    php完美分页类

    一款适合各种分页的分页类,可以直接根据构造函数的提示直接使用,分页导航直接调用最后的那个函数,非常完美的分页,考虑到各种情况.

    叶子ASP分页类1.2

    【叶子ASP分页类1.2】是一款专为ASP(Active Server Pages)开发的分页组件,主要用于解决在网页上显示大量数据时的分页问题。这个组件版本为1.2,更新日期为2007年10月23日,由开发者“叶子”进行维护和更新。 在...

Global site tag (gtag.js) - Google Analytics