web分页技术

page.java

package com.kiddie.collection;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class Page<T> {

	private List<T> list;// 装载数据的集合
	private int total;// 总记录数
	private int totalpage;// 总页数
	private int pagesize;// 每页显示的记录
	private int start;// 从第X条记录开始
	private int curpage;// 当前页面
	private int startpage;// 开始页面
	private int endpage;// 结束页面,用来判断还有没有下一页
	private int prepage;// 上一页
	private int nextpage;// 下一页

	public void setPagesize(int pagesize) {
		this.pagesize = pagesize;// 设置每页显示的记录数
		if (this.pagesize <= 0)// 这可能出现0页或者负数的每页记录数
			this.pagesize = 10;// 默认为10
		setTotalPage();
		// 改变了每页显示条数,开始的页面就要重新设置
		if ((this.start % this.pagesize) == 0) {
			this.curpage = this.start / this.pagesize;// 设置当前的页面
		} else {
			this.curpage = (this.start / this.pagesize) + 1;// 不够显示记录数也要多加一页
		}
		this.startpage = 1;// 设置起始页面
		this.endpage = totalpage;// 设置结束页面
		checkStartAndCurPage();
		setPreAndNextPage();
	}

	// 下一页
	public int nextPage() {
		if (curpage >= totalpage) {// 没有下一页
			this.curpage = totalpage;
		} else {// 有下一页
			this.curpage = this.curpage + 1;
		}
		this.start = this.curpage * pagesize;// 开始的记录数
		// 设置上一页,下一页
		setPreAndNextPage();
		checkStartAndCurPage();
		return this.curpage;
	}

	// 上一页
	public int prePage() {
		if (curpage == 1) {// 没有上一页
			this.curpage = 1;
		} else {
			this.curpage = this.curpage - 1;
		}
		this.start = this.curpage * pagesize;
		// 设置上一页,下一页
		checkStartAndCurPage();
		setPreAndNextPage();
		return this.curpage;
	}

	// 初始化要传入总记录数和当前页面
	public Page(int total, int curpage) {
		this.total = total;// 总记录数
		this.curpage = curpage;// 当前页面
		this.pagesize = 10;// 没有传入值,就默认每页显示10条
		this.start = (this.curpage - 1) * this.pagesize;// 数据库0条记录开始,所有页数-1
		this.startpage = 1;// 开始页面
		setTotalPage();
		this.endpage = totalpage;
		checkStartAndCurPage();
		setPreAndNextPage();
		list = new ArrayList<T>();
	}

	// 初始化要传入总记录数和当前页面,页面记录数
	public Page(int total, int curpage, int pagesize) {
		this.total = total;
		this.curpage = curpage;
		this.pagesize = pagesize;
		if (this.pagesize <= 0)
			this.pagesize = 10;
		this.start = (this.curpage - 1) * this.pagesize;
		this.startpage = 1;
		setTotalPage();
		this.endpage = totalpage;
		checkStartAndCurPage();
		setPreAndNextPage();
		list = new ArrayList<T>();
	}

	// 检查开始记录位置和当前页码是否超出了界限
	private void checkStartAndCurPage() {
		if (this.curpage > this.totalpage) {
			this.curpage = this.totalpage;
		}
		this.start = (this.curpage - 1) * this.pagesize;
		if (this.start < 0)//记录总量有可能是0
			this.start = 0;
	}

	private void setTotalPage() {
		if ((this.total % this.pagesize) == 0) {
			this.totalpage = this.total / this.pagesize;// 每页显示记录数变了,总页数也跟着变
		} else {
			this.totalpage = (this.total / this.pagesize) + 1;// 不够显示记录数也要多加一页
		}
	}

	private void setPreAndNextPage() {
		// 设置上一页,下一页
		if (this.curpage <= 1 && totalpage > 1) {// 总页数>1的情况
			this.prepage = 1;
			this.nextpage = this.curpage + 1;
		} else if (this.curpage <= 1 && totalpage <= 1) {// 总页数<=1的情况
			this.prepage = 1;
			this.nextpage = 1;
		} else if (this.curpage >= this.totalpage) {// 当前页数为总页数
			this.prepage = this.curpage - 1;
			this.nextpage = this.curpage;
		} else {// 普通情况
			this.prepage = this.curpage - 1;
			this.nextpage = this.curpage + 1;
		}
	}

	public List<T> getList() {
		return list;
	}

	public void setList(List<T> list) {
		this.list = list;
	}

	public int getTotal() {
		return total;
	}

	public int getTotalpage() {
		return totalpage;
	}

	public int getPagesize() {
		return pagesize;
	}

	public int getStart() {
		return start;
	}

	public int getCurpage() {
		return curpage;
	}

	public int getStartpage() {
		return startpage;
	}

	public int getEndpage() {
		return endpage;
	}

	public int getPrepage() {
		return prepage;
	}

	public int getNextpage() {
		return nextpage;
	}

	@Override
	public String toString() {
		return "Page [list=" + list + ", total=" + total + ", totalpage="
				+ totalpage + ", pagesize=" + pagesize + ", start=" + start
				+ ", curpage=" + curpage + ", startpage=" + startpage
				+ ", endpage=" + endpage + ", prepage=" + prepage
				+ ", nextpage=" + nextpage + "]";
	}

	public static void main(String[] args) {
		Random random = new Random();
		for(int i =0;i<=20;i++)
		{
			int total = random.nextInt(1000);
			int cur = random.nextInt(15);
			int size = random.nextInt(100);
		    System.out.println(new Page<Object>(total, cur, size)+"\n");
		    
		}
	}
}

在页面中使用Page类来装载所要显示的用户

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值