/**
* 分页器(照片):上一页 1 ... 8 9 10 11 12 13 14 ... 16 下一页
* @param totalRows 总记录数
* @param pageSize 每页显示记录数
* @param start 开始记录数
* @param bizData 业务参数
* @param displayCount 跨度
* @param actionUrl 因为链接
* @return
*/
public static String generatePager(int totalRows, int pageSize, int start,
Map<Object, Object> bizData, int displayCount, String actionUrl) {
//参数检验
if (start <= 0 || start > totalRows || pageSize <= 0) {
return "";
}
//计算总页数
int totalPages = 1;
if (totalRows != pageSize) {
totalPages = (int) Math.ceil((double) totalRows / (double) pageSize);
}
//计算当前页
int currentPage = start / pageSize;
if (start % pageSize != 0) {
currentPage ++;
}
//计算左右跨度显示的起始页
int low = currentPage - displayCount > 0 ? currentPage - displayCount : 1;
int high = currentPage + displayCount;
StringBuilder pageBuilder = new StringBuilder(100);
//总记录数小于每页记录数,则只显示一页
if (totalRows <= pageSize) {
pageBuilder.append(new ATag("javascript:void(0);", new HashMap<Object, Object>(), "1", STYLE_ACTIVE));
//pageBuilder.append("1");
//当前页是中间某一页
} else {
//当前页不是第一页,则显示“上一页”
if (currentPage > 1) {
bizData.put("start", (currentPage - 2) * pageSize + 1);
pageBuilder.append(new ATag(actionUrl, bizData, "上一页", STYLE_NON_ACTIVE));
//pageBuilder.append(" 上一页 ");
}
if (low - 1 > 1) {
bizData.put("start", 1);
pageBuilder.append(new ATag(actionUrl, bizData, "1", STYLE_NON_ACTIVE));
//pageBuilder.append(" 1 ");
pageBuilder.append("<span>...</span>");
while(low < currentPage) {
bizData.put("start", (low - 1) * pageSize + 1);
pageBuilder.append(new ATag(actionUrl, bizData, "" + low++, STYLE_NON_ACTIVE));
//pageBuilder.append(" " + low++ + " ");
}
} else {
low = 1;
while(low < currentPage) {
bizData.put("start", (low - 1) * pageSize + 1);
pageBuilder.append(new ATag(actionUrl, bizData, "" + low++, STYLE_NON_ACTIVE));
//pageBuilder.append(" " + low++ + " ");
}
}
pageBuilder.append(new ATag("javascript:void(0);", new HashMap<Object, Object>(), "" + currentPage, STYLE_ACTIVE));
//pageBuilder.append(" " + currentPage + " ");
int temp = currentPage + 1;
if (totalPages - high > 1) {
while(temp <= high) {
bizData.put("start", (temp - 1) * pageSize + 1);
pageBuilder.append(new ATag(actionUrl, bizData, "" + temp++, STYLE_NON_ACTIVE));
//pageBuilder.append(" " + temp ++ + " ");
}
pageBuilder.append("<span>...</span>");
bizData.put("start", (totalPages - 1) * pageSize + 1);
pageBuilder.append(new ATag(actionUrl, bizData, "" + totalPages, STYLE_NON_ACTIVE));
//pageBuilder.append(" " + totalPages + " ");
} else {
while(temp <= totalPages) {
bizData.put("start", (temp - 1) * pageSize + 1);
pageBuilder.append(new ATag(actionUrl, bizData, "" + temp++, STYLE_NON_ACTIVE));
//pageBuilder.append(" " + temp ++ + " ");
}
}
//当前页不是最后一页,则显示“下一页”
if (currentPage < totalPages) {
bizData.put("start", currentPage * pageSize + 1);
pageBuilder.append(new ATag(actionUrl, bizData, "下一页", STYLE_NON_ACTIVE));
//pageBuilder.append(" 下一页 ");
}
}
return pageBuilder.toString();
}
分享到:
相关推荐
动态分页算法是数据库系统和Web应用中常用的一种技术,用于高效地处理大量数据并以分页的形式展示给用户。在Java开发中,实现动态分页通常涉及到对数据集的切片操作,以便只加载用户请求的部分数据。下面将详细阐述...
海量数据库的查询优化及分页算法方案 随着大规模数据库的出现,如何高效地从这些超大容量的数据库中提取数据、分析、统计以及进行数据分页已经成为一个亟待解决的难题。以下我们将探讨如何在有着1000万条数据的MS ...
Struts分页算法是Web应用开发中的重要组成部分,特别是在大型数据集展示时,为了提高用户体验,需要将数据分页展示。本算法遵循Model-View-Controller(MVC)设计模式,使得代码结构清晰,易于维护。 在Struts框架...
这个我人写的一个纯Java版的分页算法,与平台无关性,具有很好的通用性,同时附带完整的工程; 工程使用SQLServer2005,建表脚本在工程下的Setup中,根据你个人的数据库调整资源文件中的配置即可运行;同时这个算法...
二、分页算法 分页算法是指将查询结果分页显示的算法。常见的分页算法有: 1. LIMIT 语句 LIMIT 语句可以限制查询结果的数量,例如:SELECT * FROM table1 LIMIT 10 OFFSET 10。 2. ROW_NUMBER() 函数 ROW_...
本文将深入探讨模拟仿真请求分页调度算法,包括OPT(最佳页面替换算法)、FIFO(先进先出)、LRU(最近最少使用)、LFU(最不常用)以及CLOCK(时钟)这五种常见的算法,并介绍如何利用MFC(Microsoft Foundation ...
本篇将详细探讨分页算法、AspNetPager控件以及相关的SQL分页语句。 首先,我们来了解分页算法。分页算法的核心目标是将数据库中的大量数据分割成若干个小的、可管理的部分,每次只加载一部分到前端展示。常见的分页...
对oracle操作报表,能够对数据进行分裂分页算法
根据提供的标题、描述以及部分代码内容,我们可以总结出以下关于分页算法的知识点: ### 分页算法概述 分页算法是计算机科学中的一个重要概念,在Web开发中尤其常见。它的主要目的是将大量的数据按照一定的规则...
----------=====Java 分页算法 =====------------ 1.Struts+JDBC分页算法 1.1 创建分页控制类(如果使用kevinb.jar可以省略本步) --创建接口Pageable.java --创建实现类PageableResultSet.java 使用以这个实现类来...
### 分页算法在Java中的实现解析 #### 引言 分页是数据处理中的一个常见需求,尤其是在Web应用中,为了提升用户体验和减轻服务器压力,将大量数据分批展示是必要的。本文将深入分析一段Java代码,该代码实现了分页...
在网页开发中,分页算法是一项重要的技术,它使得大量数据可以被有效地组织和呈现,提高了用户体验。结合面向对象编程(OOP)思想,我们可以创建一个分页对象,以简化DAO(数据访问对象)层的代码,使得数据的分页...
在大数据处理领域,分页算法是至关重要的,尤其是在Java编程环境下。当我们在处理大量数据时,一次性加载所有数据到内存可能会导致性能问题甚至内存溢出。因此,分页查询成为了一个有效的解决方案,它允许我们每次只...
本文将详细讨论四种常见的分页存储算法:最佳置换算法(OPT)、先进先出算法(FIFO)、最近最久未用算法(LRU)以及简单Clock置换算法。 1. **最佳置换算法(OPT)**: 这是一种理论上的理想算法,它能预测未来,...
算法提取: 0.页码显示规则: 当前页为首页时不显示上一页; 上一页 1 2 3 … 20 下一页 当前页为尾页时不显示下一页; 上一页 1 … 17 18 19 20 下一页 1.页面总数(n) 显示全部页码:上一页 1 2 3 4 5 6 7 8...
本篇文章将深入探讨JSP中的分页算法,帮助开发者更好地理解和运用这一关键技能。 首先,理解分页的基本概念。分页是将大量的数据分割成多个小部分,每次只显示一部分,以提高页面加载速度和用户体验。在JSP中,我们...
### DREAMWEAVER的分页算法ASP #### 背景介绍 Dreamweaver是一款由Adobe公司开发的专业网页设计工具,它可以帮助开发者快速构建、编辑以及管理网站内容。随着互联网的发展,数据量逐渐增大,如何高效地展示大量...
Java 分页算法是Java开发中常见的一种数据处理技术,尤其在大数据量的Web应用中,为了提高用户体验,通常会将数据分成多页展示,而不是一次性加载所有数据。这里我们将详细探讨如何实现一个简单的Java分页算法。 ...