java的web开发分页工具类_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java的web开发分页工具类

java的web开发分页工具类

 2011/9/19 20:59:59  ahomeeye  http://ahomeeye.iteye.com  我要评论(0)
  • 摘要:分页处理、储存工具类。importjava.io.Serializable;importjava.util.ArrayList;importjava.util.List;/***储存分页处理工具类在调用此类的方法之前需设置总页数(即得先从数据库查询到相应数据的数据量)**@authorahomeeye*@version1.0*/publicclassPaginationimplementsSerializable
  • 标签:Web 工具 Java Web开发 开发
分页处理、储存工具类。

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;
	}
}



上一篇: 关于Boolean 下一篇: dom4j解析XML忽略DTD请求
发表评论
用户名: 匿名