在JSP页面上经常会对项目进行分页,这个类就为了实现这个功能,实现原理很简单,这里就不再累赘了,具体请看注释.
import
java.util.Vector;
import java.util.Iterator;
import java.util.List;
public class PageHolder ... {
private boolean debug = true; //调试开关
private Vector items = new Vector(); //集合容器
private int pagesize = 0; //一页尺寸
private int totalpages = 0; //总页数
private int total = 0; //总条目数
private int lastpageitems = 0; //尾页条目数
private int currentpage = 0; //当前页号
private boolean haspre = false; //当前页有无前驱
private boolean hasnext = false; //当前页有无后继
private boolean isempty = true; //容器为空
//初始化函数
public void initPageHolder(Vector _items, int _pagesize) ...{
items = _items;
pagesize = _pagesize;
//如果要转入的集合非空
if (items.size() > 0) ...{
isempty = false;
currentpage = 1;
total = items.size();
lastpageitems = total % pagesize;
if (debug) ...{
System.out.println("lastpageitems: " + lastpageitems);
}
//如果分页余数为0,尾页满页,总页数即 除的结果
if (lastpageitems == 0) ...{
totalpages = total / pagesize;
if (debug) ...{
System.out.println("totalpages: " + totalpages);
}
}
//否则尾页不满页,总页数即除的结果加1
else ...{
totalpages = total / pagesize + 1;
if (debug) ...{
System.out.println("totalpages: " + totalpages);
}
}
//若总页数多于1页,则首页有后继
if (totalpages > 1) ...{
hasnext = true;
}
}
}
public Iterator getCurrentPage() ...{
//如果当前页是尾页
if (currentpage == totalpages) ...{
return items.subList(pagesize * (currentpage - 1), total).iterator();
}
else ...{
return items.subList(pagesize * (currentpage - 1), pagesize * currentpage).
iterator();
}
}
public Iterator getItemByPageID(int pageid) ...{
//如果ID超范围
if (pageid < 0 || pageid > totalpages) ...{
System.out.println("page id out of range , it should be between 1 to " +
totalpages);
return null;
}
else ...{
//把pageid设置成当前页
currentpage = pageid;
if (currentpage <= 1) ...{
haspre = false;
}
else ...{
haspre = true;
}
if (currentpage >= totalpages) ...{
hasnext = false;
}
else ...{
hasnext = true;
}
return getCurrentPage();
}
}
public int getCurrentPageID() ...{
return currentpage;
}
public int getTotalNumOfItems() ...{
return total;
}
public boolean isEmpty() ...{
return isempty;
}
public boolean hasPre() ...{
return haspre;
}
public boolean hasNext() ...{
return hasnext;
}
public int getTotalPages() ...{
return totalpages;
}
//main方法 --测试PageHolder类------------------------------------------------------
public static void main(String[] args) ...{
PageHolder ph = new PageHolder();
Vector<Integer> v = new Vector<Integer>();
for(int i = 1;i <= 10; i++)...{
v.add(new Integer(i));
}
System.out.println("===============================================");
System.out.println("item num of vector to hold: " + v.size());
ph.initPageHolder(v,3);
System.out.println("===============================================");
//遍历
for (int j = 1 ;j <= ph.getTotalPages(); j++) ...{
System.out.println(" Content of page: " + j);
Iterator it = ph.getItemByPageID(j);
System.out.println("hasnext : " + ph.hasNext());
System.out.println("haspre : " + ph.hasPre());
while (it.hasNext()) ...{
System.out.println(it.next().toString());
}
}
}
}
import java.util.Iterator;
import java.util.List;
public class PageHolder ... {
private boolean debug = true; //调试开关
private Vector items = new Vector(); //集合容器
private int pagesize = 0; //一页尺寸
private int totalpages = 0; //总页数
private int total = 0; //总条目数
private int lastpageitems = 0; //尾页条目数
private int currentpage = 0; //当前页号
private boolean haspre = false; //当前页有无前驱
private boolean hasnext = false; //当前页有无后继
private boolean isempty = true; //容器为空
//初始化函数
public void initPageHolder(Vector _items, int _pagesize) ...{
items = _items;
pagesize = _pagesize;
//如果要转入的集合非空
if (items.size() > 0) ...{
isempty = false;
currentpage = 1;
total = items.size();
lastpageitems = total % pagesize;
if (debug) ...{
System.out.println("lastpageitems: " + lastpageitems);
}
//如果分页余数为0,尾页满页,总页数即 除的结果
if (lastpageitems == 0) ...{
totalpages = total / pagesize;
if (debug) ...{
System.out.println("totalpages: " + totalpages);
}
}
//否则尾页不满页,总页数即除的结果加1
else ...{
totalpages = total / pagesize + 1;
if (debug) ...{
System.out.println("totalpages: " + totalpages);
}
}
//若总页数多于1页,则首页有后继
if (totalpages > 1) ...{
hasnext = true;
}
}
}
public Iterator getCurrentPage() ...{
//如果当前页是尾页
if (currentpage == totalpages) ...{
return items.subList(pagesize * (currentpage - 1), total).iterator();
}
else ...{
return items.subList(pagesize * (currentpage - 1), pagesize * currentpage).
iterator();
}
}
public Iterator getItemByPageID(int pageid) ...{
//如果ID超范围
if (pageid < 0 || pageid > totalpages) ...{
System.out.println("page id out of range , it should be between 1 to " +
totalpages);
return null;
}
else ...{
//把pageid设置成当前页
currentpage = pageid;
if (currentpage <= 1) ...{
haspre = false;
}
else ...{
haspre = true;
}
if (currentpage >= totalpages) ...{
hasnext = false;
}
else ...{
hasnext = true;
}
return getCurrentPage();
}
}
public int getCurrentPageID() ...{
return currentpage;
}
public int getTotalNumOfItems() ...{
return total;
}
public boolean isEmpty() ...{
return isempty;
}
public boolean hasPre() ...{
return haspre;
}
public boolean hasNext() ...{
return hasnext;
}
public int getTotalPages() ...{
return totalpages;
}
//main方法 --测试PageHolder类------------------------------------------------------
public static void main(String[] args) ...{
PageHolder ph = new PageHolder();
Vector<Integer> v = new Vector<Integer>();
for(int i = 1;i <= 10; i++)...{
v.add(new Integer(i));
}
System.out.println("===============================================");
System.out.println("item num of vector to hold: " + v.size());
ph.initPageHolder(v,3);
System.out.println("===============================================");
//遍历
for (int j = 1 ;j <= ph.getTotalPages(); j++) ...{
System.out.println(" Content of page: " + j);
Iterator it = ph.getItemByPageID(j);
System.out.println("hasnext : " + ph.hasNext());
System.out.println("haspre : " + ph.hasPre());
while (it.hasNext()) ...{
System.out.println(it.next().toString());
}
}
}
}