`

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分页工具类

    本篇文章将详细探讨Java中的分页工具类及其核心实现原理。 首先,我们要理解什么是分页。分页是一种将大量数据分割成若干小部分(页)来展示的技术,每一页包含一定数量的数据,用户可以通过翻页来查看更多的记录。...

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

    综上所述,这个项目利用`PageUtil.java`工具类对分页进行了封装,简化了分页查询的过程,提高了开发效率。同时,通过`GroupAction`、`GroupService`、`GroupDao`以及`GroupMapper.xml`的协同工作,实现了从用户请求...

    java分页工具类,以及基于Struts,Spring,mybatis,jsp中分页的调用及实现

    ### Java分页工具类及其在Struts、Spring、MyBatis和JSP中的应用 #### 一、Java分页概述 在开发Web应用程序时,为了提高用户体验并减轻服务器压力,通常会采用分页技术来展示大量的数据记录。本文将详细介绍一个...

    分页工具类分页工具类

    在IT领域,分页工具类是数据库操作和Web开发中常用的一种组件,它主要用于处理大量数据的展示,避免一次性加载所有数据导致的性能问题。在实际应用中,分页可以帮助用户更加高效地浏览和管理信息,提高用户体验。...

    Java Web中分页标签的使用说明

    在实际开发中,选择合适的分页工具取决于项目需求和团队技术栈。源码阅读有助于深入理解分页机制,而熟练使用工具则能提高开发效率。无论选择哪种方式,掌握分页标签的使用都是提升Java Web应用性能的关键步骤。

    java分页工具类[非常简洁好用]

    Java分页工具类是开发中常见的一种实用工具,主要用于处理大量数据时的分页显示,以提高用户体验并减轻服务器压力。在Java世界里,我们通常会遇到如MyBatis、Hibernate等ORM框架,它们虽然提供了分页功能,但在某些...

    JAVA开发WEB分页封装办法实现

    本文将深入探讨如何在Java中实现Web分页封装,以便在实际项目中灵活应用。 首先,我们需要了解分页的基本概念。分页是将大量数据分割成较小、可管理的部分,每次只加载一部分到前端显示。这有助于减少网络传输的...

    Pager(通过的分页工具类)

    标题中的“Pager(通过的分页工具类)”显然指的是一个用于实现分页功能的Java类。在这个类中,开发者通常会封装分页操作的相关逻辑,以便在各种场景下复用。现在我们来详细探讨一下分页的基本概念、设计原则以及...

    分页工具类

    本文将详细介绍一个基于Java编写的分页工具类及其工作原理,同时提及它使用了自定义标签,并分析其可能存在的不足之处。 首先,分页工具类的主要作用是帮助我们处理数据库查询结果的分页显示。在Java Web应用中,...

    用案例学Java Web整合开发:Java+Eclipse+Struts 2+Ajax

    学习Java Web开发首先要掌握Java的基础语法、类、对象、接口、异常处理以及多线程等核心概念。在实际项目中,Java的Servlet和JSP(JavaServer Pages)是处理HTTP请求和生成动态内容的主要工具,它们为Web应用提供了...

    java实现部分工具类

    本资源提供的"java实现部分工具类"涵盖了几个关键方面,包括前端Bootstrap样式的应用、页面布局管理、数据列表的渲染与展示以及分页和文件上传功能的实现。以下将对这些知识点进行详细阐述。 1. **Bootstrap样式与...

    java自定义分页标签

    总之,自定义分页标签是Java Web开发中的重要技巧,它能提升用户体验,同时简化开发工作。通过以上步骤,我们可以根据需求创建多套风格各异的分页标签,例如模仿淘宝购物分页样式,满足不同项目的需求。在实际开发中...

    java web中的struts分页组件

    在Java Web开发中,Struts框架是一个非常流行的MVC(模型-视图-控制器)架构,用于构建可维护性和可扩展性高的企业级应用程序。SSH框架则是Struts、Spring和Hibernate三个开源框架的组合,提供了数据持久化、业务...

    JAVA项目必用工具类

    2. **PageUtils.java**:分页工具类。在处理大数据量时,分页查询是提高系统性能的常见策略。PageUtils可能提供了对数据库查询结果进行分页处理的方法,包括计算总页数、获取当前页数据等功能,通常与MyBatis或JPA等...

    分页缓存

    Ehcache本身提供了线程安全的保证,但如果是自定义的缓存实现,需要考虑并发读写的问题,可以使用`synchronized`关键字或`java.util.concurrent`包中的工具类。 7. **异常处理**:在处理缓存和数据库查询时,需要...

    Java实现真分页.自己领悟.

    在Java开发中,分页是常见的功能,尤其是在处理大量数据时,为了提高用户体验,需要将数据分批展示。"Java实现真分页.自己领悟."这个主题主要关注如何在Java Web应用中实现高效的分页机制。这里我们通过分析标题、...

    java web分页

    Java Web分页是Web开发中一个重要的技术,主要用于处理大数据量的展示问题,避免一次性加载所有数据导致页面响应慢或服务器资源浪费。本知识点将详细讲解Java Web分页的原理、实现方式以及常见工具。 一、分页原理 ...

Global site tag (gtag.js) - Google Analytics