`

java的web开发分页工具类

    博客分类:
  • java
阅读更多
分页处理和储存分页用工具类。

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * 储存分页处理工具类 在调用此类的方法之前需设置总页数(即得先从数据库查询到相应数据的数据量)
 * 
 * @author ahomeeye
 * @version 1.0
 */
public class Pagination implements Serializable {

	private static final long serialVersionUID = 1L;
	private int start; // start表示当前页开始的记录数,start=每页行数*(当前页数-1)
	private int end; // 当前页结束的记录行数
	private int totalCount; // 总行数
	private int rowsPerPage = 15; // 每页行数,默认15
	private int currentPage; // 当前页数
	private int pageListSize = 9;// 页码列表大小,默认9
	private List<Integer> pageNumList = new ArrayList<Integer>();

	public Pagination() {
		start = 0;
		end = 0;
		currentPage = 1;
		this.totalCount = 0;
	}

	public Pagination(int totalCount) {
		start = 0;
		end = 0;
		currentPage = 1;
		this.totalCount = totalCount;
	}

	public Pagination(int totalCount, int numPerPage) {
		start = 0;
		end = 0;
		this.totalCount = totalCount;
		currentPage = 1;
		if (numPerPage > 0) {
			rowsPerPage = numPerPage;
		}
	}

	/**
	 * 执行翻页动作
	 * 
	 * @param currentPage
	 *            要翻到的目标页码
	 * @return 返回翻页对象
	 */
	public Pagination doPagination(int currentPage) {
		gotoPage(currentPage);
		return this;
	}

	// 设置起始数
	public int getStart() {
		start = rowsPerPage * (currentPage - 1);
		return start;
	}

	// 得到起始数
	public void setStart(int start) {
		if (start < 0) {
			this.start = 0;
		} else if (start >= this.totalCount) {
			this.start = this.totalCount - 1;
		} else {
			this.start = start;
		}
	}

	// 设置当前页的最后一行的在总记录中的顺序(从0开始)
	public void setEnd(int end) {
		this.end = end;
	}

	// 得到当前页的最后一行的在总记录中的顺序(从0开始)
	public int getEnd() {
		if (rowsPerPage * currentPage > this.totalCount) {
			end = this.totalCount - 1;
		} else {
			end = rowsPerPage * currentPage - 1;
		}
		return end;
	}

	// 以下4个方法供控制器(struts)调用

	// 判断能否到第一页;只要能到上一页,肯定就有第一页
	public boolean firstEnable() {
		return previousEnable();
	}

	// 判断能否到上一页
	public boolean previousEnable() {
		return currentPage > 1;// 只要不是第一页,就能到上一页
	}

	// 判断能否到下一页
	public boolean nextEnable() {
		return currentPage * rowsPerPage < this.totalCount;
	}

	// 判断能否到最后一页;只要有下一页,就肯定有最后一页.
	public boolean lastEnable() {
		return nextEnable();
	}

	// 跳到第一页
	public void firstPage() {
		currentPage = 1;
	}

	// 跳到上一页
	public void previousPage(int cPage) {
		currentPage = (cPage - 1) > 0 ? (cPage - 1) : 1;
	}

	// 跳到下一页
	public void nextPage(int cPage) {
		currentPage = cPage + 1;
		if (currentPage * rowsPerPage > this.totalCount) {
			lastPage();
		}
	}

	// 跳到最后一页
	public void lastPage() {
		if (this.totalCount % rowsPerPage == 0) {
			currentPage = this.totalCount / rowsPerPage;
		} else {
			currentPage = this.totalCount / rowsPerPage + 1;
		}
	}

	// 跳到指定的某一页
	public void gotoPage(int pageNumber) {
		if (pageNumber <= 1) {
			currentPage = 1;
		} else if (getTotalCount() < this.getRowsPerPage()) {
			currentPage = 1;
		} else if (pageNumber * rowsPerPage >= this.totalCount) {
			lastPage();
		} else {
			currentPage = pageNumber;
		}
	}

	// 设置总行数
	public void setTotalCount(int totalCount) {
		this.totalCount = totalCount;
	}

	// 得到总行数
	public int getTotalCount() {
		return totalCount;
	}

	// 设置每页行数
	public void setRowsPerPage(int rowsPerPage) {
		this.rowsPerPage = rowsPerPage;
	}

	// 得到每页行数
	public int getRowsPerPage() {
		return rowsPerPage;
	}

	// 得到总页数
	public int getPages() {
		if (this.totalCount % rowsPerPage == 0)
			return this.totalCount / rowsPerPage;
		else
			return this.totalCount / rowsPerPage + 1;
	}

	// 得到当前页数
	public int getCurrentPage() {
		return currentPage;
	}

	// 设置当前页数
	public void setCurrentPage(int currentPage) {
		this.currentPage = currentPage;
	}

	public int getPageListSize() {
		return pageListSize;
	}

	// 设置页码列表大小
	public void setPageListSize(int pageListSize) {
		this.pageListSize = pageListSize;
	}

	// 得到页面列表
	public List<Integer> getPageNumList() {
		this.pageNumList.removeAll(this.pageNumList);// 设置之前先清空
		int totalPage = getPages();
		if (totalPage > this.pageListSize) {
			int halfSize = this.pageListSize / 2;
			int first = 1;
			int end = 1;
			if (this.currentPage - halfSize < 1) { // 当前页靠近最小数1
				first = 1;
				end = this.pageListSize;
			} else if (totalPage - this.currentPage < halfSize) { // 当前页靠近最大数
				first = totalPage - this.pageListSize + 1;
				end = totalPage;
			} else {
				first = this.currentPage - halfSize;
				end = this.currentPage + halfSize;
			}
			for (int i = first; i <= end; i++) {
				this.pageNumList.add(i);
			}
		} else {
			for (int i = 0; i < totalPage; i++) {
				this.pageNumList.add(i + 1);
			}
		}

		return pageNumList;
	}
}



0
2
分享到:
评论
3 楼 魔鬼的献祭 2016-08-11  
2 楼 ahomeeye 2011-09-22  
说明应该是:分页处理和储存分页用工具类。就只有一个类。
1 楼 hellostory 2011-09-19  
存储数据呢?分享下

相关推荐

    Java Web分页工具类

    PageUtils是一个Java工具类,用于简化分页逻辑的处理。它包含以下两个主要部分: 1. PageInfo 内部类:这是一个泛型类,封装了分页所需的信息,包括当前页码、页面大小、总页数、总记录数和当前页的记录列表。 2. ...

    java utils 工具类

    java 工具类,包含上传下载工具类,数据库工具类,验证码工具类,分页工具类,字符编码过滤工具类,字符串工具类 提醒:我已打包,在/WEB-INF/lib/itbofeng-utils.jar中,可以看到源码。 测试下载文件时修改servlet...

    SpringMVC基础上的web框架

    Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) 1.0.13 修改默认的beanName生成策略,controller参数扩展 1.0.14 分布式session使用zookeeper 1.0.15 ...

    分页组件工具

    java进行分页所用的分页组件工具类 使用方法: 第一步:将util文件夹复制到项目 的SRC文件下面 第二步:将mypage.tld文件复制到web-inf文件夹下面 第三步:打开需要分页的页面,在page指令下方添加导入标签库的代码...

    基于SpringMVC的一个web框架

    Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) 1.0.13 修改默认的beanName生成策略,controller参数扩展 1.0.14 分布式session使用zookeeper 1.0.15 ...

    基于Spring MVC的web框架 1.1.11

    Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) 1.0.13 修改默认的beanName生成策略,controller参数扩展 1.0.14 分布式session使用zookeeper 1.0.15 ...

    Java案例开发锦集

    目录 第一章 Java与Applet 案例一 图形按钮 案例二 模拟工具条 案例三 Applet与Applet在页内的通信 案例四 电子相册 案例五 百页窗效果 案例六 波浪彩虹文字 案例七 3D立体渐层文字...

    一个可以直接运行的基于SpringMVC的web框架1.1.12

    Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) 1.0.13 修改默认的beanName生成策略,controller参数扩展 1.0.14 分布式session使用zookeeper 1.0.15 ...

    可以直接运行的基于SpringMVC的web框架示例,也可以直接当公司框架

    Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) 1.0.13 修改默认的beanName生成策略,controller参数扩展 1.0.14 分布式session使用zookeeper 1.0.15 ...

    JAVA程序开发大全---上半部分

    本书系统全面地介绍了Java中的各项主流技术,以及基于这些技术的商业化应用程序的开发技巧,在讲解过程中以目前最为流行的开发工具MyEclipse为载体,全面系统地介绍了如何在MyEclipse中开发基于Struts、Hibernate、...

    JAVA上百实例源码以及开源项目

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    ws 2、jaas等java ee知识,这部分知识以jsf+ejb 3+jpa整合开发为重点,通过使用netbeans ide工具上手,带领读者逐步深入jsf+ejb 3+jpa整合开发。这部分内容是笔者讲授“疯狂java实训”的培训讲义,也是本书的重点...

    JAVA上百实例源码以及开源项目源代码

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    java开源包11

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    java开源包6

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    java开源包9

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    java开源包4

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    java开源包101

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    java开源包5

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

Global site tag (gtag.js) - Google Analytics