`
shuzheng5201314
  • 浏览: 204199 次
  • 来自: 北京
社区版块
存档分类
最新评论

java分页通用类

 
阅读更多

分页是个说简单就简单,说复杂页不复杂的功能。网上各种分页类多多少少都不符合自己的需求,还是自己写一个吧。

 

支持一个页面出现多个分页功能:

 

 

import javax.servlet.http.HttpServletRequest;

/**
 * 分页实用类
 * 
 * @author shuzheng
 * @version 2014/04/21
 * 
 */
public class Pager {
	
	/**
	 * 生成简单的分页页面内容
	 * 
	 * @param total 总记录数
	 * @param size 每页记录数
	 * @param step 最多显示分页页数
	 * @param page 当前页数
	 * @param request 请求request
	 * @return 分页的HTML代码
	 */
	public static String getSimplePages(int total, int size, int step, int page, HttpServletRequest request, String paramName) {
		// 根据request获取当前url,包括参数,如果有已存在名称未paramname的参数,剔除掉,后面会追加新的参数
		String url = request.getContextPath() + request.getServletPath();
		String query = request.getQueryString();
		if (query != null) {
			String params = "";
			String[] querys = query.split("&");
			for (int i = 0 ; i < querys.length ; i ++) {
				if (querys[i].startsWith(paramName))
					continue;
				if (params.equals(""))
					params += querys[i];
				else
					params += "&" + querys[i];
			}
			if (!params.equals(""))
				url += "?" + params;
		}
		// 结果html
		String pages = "";

		int pageCount = (int) Math.ceil((double) total / size);// 求总页数
		if (pageCount == 1) {
			return pages;
		}
		if (page > pageCount) {
			page = pageCount;// 如果分页变量大总页数,则将分页变量设计为总页数
		}
		if (page <= 0) {
			page = 1;// 如果分页变量小于1,则将分页变量设为1
		}
		
		// 显示上一页
		if (page > 1) {
			if (url.contains("?")) {
				pages = pages.concat("<a class=\"prev\" href=\"" + url + "&" + paramName + "=" + (page - 1) + "\">上一页</a>\n");
			} else {
				pages = pages.concat("<a class=\"prev\" href=\"" + url + "?" + paramName + "=" + (page - 1) + "\">上一页</a>\n");
			}
		} else {
			pages = pages.concat("<a class=\"prev\" href=\"javascript:;\" style=\"color:#ccc\">上一页</a>\n");
		}
		// 显示分页码
		int listBegin = (page - (int) Math.floor((double) step / 2));//从第几页开始显示分页信息
        if (listBegin < 1) {
            listBegin = 1;
        }
        //显示第1页
		if (listBegin >= 2) {
			if (url.contains("?")) {
				pages = pages.concat("<a href=\"" + url + "&" + paramName + "=1\">1</a> ... \n");
			} else {
				pages = pages.concat("<a href=\"" + url + "?" + paramName + "=1\">1</a> ... \n");
			}
		}
        //当前页数右侧还有未显示页码时
        if (pageCount - page >= page - listBegin) {
			for (int i = listBegin; i < (listBegin + step); i++) {
				if (i != page) {
					if (url.contains("?")) {
						pages = pages.concat("<a href=\"" + url + "&" + paramName + "=" + i + "\">" + i + "</a>\n");
					} else {
						pages = pages.concat("<a href=\"" + url + "?" + paramName + "=" + i + "\">" + i + "</a>\n");
					}
				} else {
					pages = pages.concat("<span class=\"current\">" + i + "</span>\n");
				}
			}
	        //显示最后1页
			if (listBegin + step <= pageCount) {
				if (url.contains("?")) {
					pages = pages.concat(" ... <a href=\"" + url + "&" + paramName + "=" + pageCount + "\">" + pageCount + "</a>\n");
				} else {
					pages = pages.concat(" ... <a href=\"" + url + "?" + paramName + "=" + pageCount + "\">" + pageCount + "</a>\n");
				}
			}
        } else {	// 显示最后剩余的几个页码
        	for (int i = (pageCount-step) + 1; i <= pageCount; i++) {
				if (i != page) {
					if (url.contains("?")) {
						pages = pages.concat("<a href=\"" + url + "&" + paramName + "=" + i + "\">" + i + "</a>\n");
					} else {
						pages = pages.concat("<a href=\"" + url + "?" + paramName + "=" + i + "\">" + i + "</a>\n");
					}
				} else {
					pages = pages.concat("<span class=\"current\">" + i + "</span>\n");
				}
			}
        }
		// 显示下一页
		if (page < pageCount) {
			if (url.contains("?")) {
				pages = pages.concat("<a class=\"next\" href=\"" + url + "&" + paramName + "=" + (page + 1) + "\">下一页</a>\n");
			} else {
				pages = pages.concat("<a class=\"next\" href=\"" + url + "?" + paramName + "=" + (page + 1) + "\">下一页</a>\n");
			}
		} else {
			pages = pages.concat("<a class=\"next\" href=\"javascript:;\" style=\"color:#ccc\">下一页</a>\n");
		}
		return pages;
	}
}

 

 

 

使用方法:

 

public String test() {
	// 分页
	int total = 10;			//总记录数
	int size = 1;			//每页记录数
	int step = 7;			//最多显示分页页数
	int p1 = StringUtil.toInt(request.getParameter("p1"));			//当前页数
	int p2 = StringUtil.toInt(request.getParameter("p2"));			//当前页数
	int p3 = StringUtil.toInt(request.getParameter("p3"));			//当前页数
	int p4 = StringUtil.toInt(request.getParameter("p4"));			//当前页数
	
	return Pager.getSimplePages(total, size, step, p1, request, "p1") + "\n\n<br/><br/>\n\n" + 
			Pager.getSimplePages(total, size, step, p2, request, "p2") + "\n\n<br/><br/>\n\n" + 
			Pager.getSimplePages(total, size, step, p3, request, "p3") + "\n\n<br/><br/>\n\n" + 
			Pager.getSimplePages(total, size, step, p4, request, "p4");
}

 

 

结果如图所示:

 



 

 

 

 

  • 大小: 30.2 KB
分享到:
评论

相关推荐

    java 通用分页 java 通用分页

    Java 通用分页详解 Java 通用分页是指在Java编程中对大量数据进行分页处理,以提高系统效率和性能。下面对Java通用分页的知识点进行详细说明: 1. 分页的必要性 在实际项目中,数据量可能非常大,直接查询所有...

    java 分页通用代码

    综上所述,Java实现分页通用代码主要包括创建Page对象、处理分页参数、编写分页SQL、填充Page对象及提供相关辅助方法。在实际项目中,这些组件可以抽象成一个通用的分页工具类或者服务,以提高代码复用性和可维护性...

    java web项目分页通用实现

    总结,Java Web项目中的分页通用实现涉及到数据库查询、参数传递、前后端交互等多个环节。通过封装分页组件,我们可以将这些复杂逻辑模块化,便于在不同的项目中复用,从而提升开发质量和效率。这个DEMO正是为了帮助...

    通用分页工具类PageInfo.java

    通用分页工具类PageInfo.java

    java通用分页代码实例.rar

    为了提高代码复用性,可以使用一些开源的Java分页库,如PageHelper(MyBatis的插件)、Spring Data JPA等。这些库通常提供了更高级的功能,如自动计算总页数、支持排序等。 4. **设计模式**: 一个通用的分页组件...

    java一个通用的分页方法

    ### Java通用分页方法解析与应用 在Java开发中,特别是在Web应用中,分页功能是数据展示中不可或缺的一部分。合理的分页不仅能够提升用户体验,还能优化服务器性能,避免一次性加载大量数据导致的延迟和资源消耗。...

    java 通用数字分页

    Java中的数字分页是Web应用开发中常见的需求,特别是在大数据量的展示场景下,为了提高用户体验,需要将数据分批次加载。Struts2框架作为Java Web开发中的热门选择,提供了强大的分页支持。本主题主要讲解如何在...

    JAVA写的通用分页

    本文将详细探讨"JAVA写的通用分页"这一主题,结合描述中的"通用高效分页存储过程实现",我们将深入理解Java分页的原理、实现方式以及优化策略。 首先,分页的基本概念是将大量数据分块展示,而不是一次性加载所有...

    Java 通用分页

    总结来说,Java实现通用分页涉及数据库查询、自定义分页类、封装分页服务等多个环节。合理利用数据库和应用程序的分页机制,能够有效地管理和展示大量数据,同时提升用户体验。在实际项目中,还需要考虑性能优化、...

    对分页进行了封装,PageUtil.java工具类

    这里提到的"对分页进行了封装,PageUtil.java工具类"是一个Java实现的分页辅助类,它的主要目标是简化分页查询的操作,提供更便捷的API给开发者使用。 `PageUtil.java`工具类可能包含了以下功能: 1. **参数处理**...

    java通用分页含使用文档

    Java通用分页是一个常见且重要的技术点,尤其在开发大型数据集展示的Web应用时,分页能够有效地提高用户体验并优化服务器性能。本资源提供的"java通用分页含使用文档"是一个jar包,旨在简化Java Web开发中的分页实现...

    java分页模板类<呕心沥血之作>

    自己写的分页类,是通用类,可以直接调用。在struts,spring中都没问题

    java 通用分页示例

    在Java开发中,分页是常见的功能,尤其是在处理大量数据时,为了提高用户体验,需要将数据分批展示。本示例结合Struts和Hibernate框架,通过自定义标签实现了通用的分页功能。以下是对这个主题的详细解释: 一、...

    java通用分页

    博文链接中的资源《Java通用分页》可能涵盖了关于如何使用这些工具和方法实现Java分页的详细步骤,包括示例代码和最佳实践。在阅读这篇博客时,我们可以学习到如何在实际项目中灵活运用这些分页策略,优化数据查询...

    通用java分页后端服务代码

    本资源提供了通用的Java分页后端服务代码,可以帮助开发者快速实现数据的分页查询功能。以下是相关知识点的详细说明: 1. **分页概念**:分页是一种将大量数据分成若干小块(页面)来显示的技术,以避免一次性加载...

    java分页原理详解

    下面是一个通用的分页公式: ``` 当前页索引 = 每页显示的记录数 * (当前页 - 1) ``` 其中,当前页索引代表当前页的起始记录索引,当前页代表当前页码,每页显示的记录数代表每页显示的记录数。 例如,如果每页显示...

    java web Pager通用分页组件(源码)

    java web通用分页组件发布了! 超级强悍的java web通用分页组件,只要简单的一条sql语句就可以轻松的实现分页,目前对oracle,SQL Server2005,SQL server200,mysql都做了实现,程序通过接口来封装,你可以实现对其他...

    通用分页Jar 配置文件

    "通用分页Jar 配置文件"通常是指一个可复用的Java库,它封装了分页逻辑,使得开发者可以在多个项目中方便地进行数据分页显示。这个库通常会包含配置文件、Java类和相关的资源文件,如TLD(Tag Library Descriptor)...

    java通用分页源码

    这个源码提供了一个详细的Java分页实现,非常适合Java开发者学习和参考。 在Java中,分页主要涉及到以下几个关键知识点: 1. **SQL查询**:分页的核心是SQL查询语句,通常使用`LIMIT`和`OFFSET`(MySQL)或者`...

    纯Java分页算法完整版本

    这个我人写的一个纯Java版的分页算法,与平台无关性,具有很好的通用性,同时附带完整的工程; 工程使用SQLServer2005,建表脚本在工程下的Setup中,根据你个人的数据库调整资源文件中的配置即可运行;同时这个算法...

Global site tag (gtag.js) - Google Analytics