这里我以从一个用户表中查询用户信息为例演示其用法:
1.将pageresultset.java文件编译成class文件,并放入你的web
应用程序的web-inf/classes/com/youngor/util目录下,可以对包名做相应修改。
2.在你的action类中:
先从业务处理逻辑类中取出数据(arraylist或vector格式)
userbo userbo=new userbo();
collection data=userbo.findusers();//示例方法
再得到当前页curpage和每页记录数pagesize
int curpage = integer.parseint(request.getparameter(“cur_page“));
int pagesize=15;
然后生成pageresultset对象
pageresultset datalist = new pageresultset(data, curpage, pagesize);
request.setattribute("userslist", userslist);
3.在你的jsp页面中:
<%
pageresultset pageresultset=(pageresultset)request.getattribute("userslist");
arraylist userslist=(arraylist)pageresultset.getdata();
for(int i=0;i<userslist.size();i++)
{
usereo usereo=(usereo)userslist.get(i);%>
<tr>
<td><a href="view_user.do?id=<%=usereo.getid()%>"><%=usereo.getusername()%></a></td>
<td><%=usereo.getname()%></td>
<td><%=usereo.getphonenumber()%></td>
<td><%=usereo.getemailbox()%></td>
<td><%=usereo.getaddress()%></td>
<td><%=usereo.getpostcode()%></td>
</tr>
<%}%>
</table></td>
</tr>
</table>
<!– 显示分页工具栏 –>
<%=pageresultset.gettoolbar("list_users.do")%>
注意:
1、如果你觉得分页工具栏不能满足你的要求,可以用pageresultset类中的公共方法
first()、previous()、next()、last()定制自己的工具栏,并且,你还可以在pageresultset中定义多个样式的工具栏;
2、gettoolbar(string url)方法接受带查询字符串的参数,比如“list_users.do?class_id=1“。
//pageresultset.java
package com.youngor.util;
import java.util.*;
/**
* <p>title: pageresultset</p>
*
* <p>description:分页类 </p>
*
* <p>copyright: copyright (c) 2004</p>
*
* <p>company:youngor-studio(http://www.54youngor.com) </p>
* @author:伍维波
* @version 1.0
*/
public class pageresultset {
/**
* 分页数据
*/
private collection data = null;
/**
* 当前页
*/
private int curpage;
/**
* 每页显示的记录数
*/
private int pagesize;
/**
* 记录行数
*/
private int rowscount;
/**
* 页数
*/
private int pagecount;
public pageresultset(collection data) {
this.data = data;
this.curpage = 1;
this.pagesize = 10;
this.rowscount = data.size();
this.pagecount = (int) math.ceil((double) rowscount / pagesize);
}
public pageresultset(collection data, int curpage) {
this.data = data;
this.curpage = curpage;
this.pagesize = 10;
this.rowscount = data.size();
this.pagecount = (int) math.ceil((double) rowscount / pagesize);
}
public pageresultset(collection data, int curpage, int pagesize) {
this.data = data;
this.curpage = curpage;
this.pagesize = pagesize;
this.rowscount = data.size();
this.pagecount = (int) math.ceil((double) rowscount / pagesize);
}
/**
* getcurpage:返回当前的页数
*
* @return int
*/
public int getcurpage() {
return curpage;
}
/**
* getpagesize:返回分页大小
*
* @return int
*/
public int getpagesize() {
return pagesize;
}
/**
* getrowscount:返回总记录行数
*
* @return int
*/
public int getrowscount() {
return rowscount;
}
/**
* getpagecount:返回总页数
*
* @return int
*/
public int getpagecount() {
return pagecount;
}
/**
* 第一页
* @return int
*/
public int first() {
return 1;
}
/**
* 最后一页
* @return int
*/
public int last() {
return pagecount;
}
/**
* 上一页
* @return int
*/
public int previous() {
return (curpage – 1 < 1) ? 1 : curpage – 1;
}
/**
* 下一页
* @return int
*/
public int next() {
return (curpage + 1 > pagecount) ? pagecount : curpage + 1;
}
/**
* 第一页
* @return boolean
*/
public boolean isfirst() {
return (curpage==1)?true:false;
}
/**
* 第一页
* @return boolean
*/
public boolean islast() {
return (curpage==pagecount)?true:false;
}
/**
* 获取当前页数据
* @return collection
*/
public collection getdata() {
collection curdata = null;
if (data != null) {
int start = (curpage – 1) * pagesize;
int end = 0;
if (start + pagesize > rowscount)
end = rowscount;
else
end = start + pagesize;
arraylist arraycurdata = new arraylist();
arraylist arraydata = null;
vector vectorcurdata = new vector();
vector vectordata = null;
boolean isarray = true;
if (data instanceof arraylist) {
arraydata = (arraylist) data;
isarray = true;
} else if (data instanceof vector) {
vectordata = (vector) data;
isarray = false;
}
for (int i = start; i < end; i++) {
if (isarray) {
arraycurdata.add(arraydata.get(i));
} else {
vectordata.add(vectordata.elementat(i));
}
}
if (isarray) {
curdata = (collection) arraycurdata;
} else {
curdata = (collection) vectorcurdata;
}
}
return curdata;
}
/**
* 获取工具条
* @return string
*/
public string gettoolbar(string filename){
string temp="";
if(filename.indexof("?")==-1)
{
temp="?";
}
else
{
temp="&";
}
string str="<form method=post name=frmpage action="+filename+">";
str+="<p align=center>";
if(isfirst())
str+="首页 上一页 ";
else
{
str+="<a href="+filename+temp+"cur_page=1>首页</a> ";
str+="<a href="+filename+temp+"cur_page="+(curpage-1)+">上一页</a> ";
}
if(islast())
str+="下一页 尾页 ";
else
{
str+="<a href="+filename+temp+"cur_page="+(curpage+1)+">下一页</a> ";
str+="<a href="+filename+temp+"cur_page="+pagecount+">尾页</a> ";
}
str+=" 共<b>"+rowscount+"</b>条记录 ";
str+=" 转到<select name=page onchange=\"location="+filename+temp+"cur_page=+this.options[this.selectedindex].value\">";
for(int i=1;i<=pagecount;i++)
{
if(i==curpage)
str+="<option value="+i+" selected>第"+i+"页</option>";
else
str+="<option value="+i+">第"+i+"页</option>";
}
str+="</select></p></form>";
return str;
}
}
