jsp怎样实现分页?

榨菜大叔@ 2009-09-08 11:38:55
jsp怎样实现分页?请高手提示。
...全文
106 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
榨菜大叔@ 2009-12-15
  • 打赏
  • 举报
回复
谢谢!高手支持。
Betterjava 2009-09-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yanliang_xt 的回复:]
1、oracle里有rownum,sqlsever有top

2、可以通过记录游标的移动来取得。

3、可以通过循环,如:
Java code// 参数i是当前的页数 j 是每页的记录条数privateint getResult(ResultSet resultset,int i,int j)throws Exception
{
Object obj=null;
Object obj1=null;
enumer=null;//用来保存数据,里面全是一个一个字符串数组封装的记录 rowStr=null;//没有用到过。。。可删除 vctr.clear();
hshtbl.clear();
rsColNum=0;
rsRowNum=0;
rsTotalRowNum=0;if(resultset==null)return-1;
ResultSetMetaData resultsetmetadata;
resultsetmetadata= resultset.getMetaData();if(resultsetmetadata==null)return-1;try
{
rsColNum= resultsetmetadata.getColumnCount();//返回ResultSet中的列数for(int k=1; k<= (i-1)* j&& resultset.next(); k++)//让游标定位到第i页第一条数据之前 rsTotalRowNum++;//统计跨越了多少条记录for(int l=0; l< j&& resultset.next(); l++)//只要数据足够,就取j条数据 {
String as[]=new String[rsColNum+1];//每一个字符串数据就封装了一条记录,索引从1....rsColNumfor(int j1=1; j1<= rsColNum; j1++)//取出当前行的每一列数据//并保存到String数组中. {
as[j1]= resultset.getString(j1);if(as[j1]==null)//注意null情况 as[j1]=new String("");//为空就保存为空串 }
vctr.add(as);//添加到Vector中去. rsRowNum++;//每完成一行数据的装载就使当前标识行的数量加1 rsTotalRowNum++;//同时总行数也加1 }while(resultset.next())//所有记录条数统计完成 rsTotalRowNum++;//统计剩余的记录条数,完善总行数 enumer= vctr.elements();//把数据放到枚举里 String as1[]=new String[rsColNum+1];//从1开始方便存取for(int i1=1; i1<= rsColNum; i1++)
{//把所有的列名都保存在一个HashTable,大写形式. as1[i1]= resultsetmetadata.getColumnName(i1).toUpperCase();
hshtbl.put(as1[i1],new Integer(i1));
}return0;
}catch(Exception exception)
{
enumer=null;
}return-1;
}
[/Quote]

刚才引用错了...
Betterjava 2009-09-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 fpqshine 的回复:]
jsp怎样实现分页?请高手提示。
[/Quote]

Up
zhang380 2009-09-09
  • 打赏
  • 举报
回复
可以在dao层进行分页,或写一个分页bean,将分页算法全部写在该bean内,jsp只需每次分页调用该bean。
yanliang_xt 2009-09-08
  • 打赏
  • 举报
回复
1、oracle里有rownum,sqlsever有top

2、可以通过记录游标的移动来取得。

3、可以通过循环,如:

// 参数i是当前的页数 j 是每页的记录条数
private int getResult(ResultSet resultset, int i, int j)throws Exception
{
Object obj = null;
Object obj1 = null;
enumer = null; //用来保存数据,里面全是一个一个字符串数组封装的记录
rowStr = null; //没有用到过。。。可删除
vctr.clear();
hshtbl.clear();
rsColNum = 0;
rsRowNum = 0;
rsTotalRowNum = 0;
if(resultset == null)
return -1;
ResultSetMetaData resultsetmetadata;
resultsetmetadata = resultset.getMetaData();
if(resultsetmetadata == null)
return -1;
try
{
rsColNum = resultsetmetadata.getColumnCount(); //返回ResultSet中的列数
for(int k = 1; k <= (i - 1) * j && resultset.next(); k++) //让游标定位到第i页第一条数据之前
rsTotalRowNum++; //统计跨越了多少条记录
for(int l = 0; l < j && resultset.next(); l++) //只要数据足够,就取j条数据
{
String as[] = new String[rsColNum + 1]; //每一个字符串数据就封装了一条记录,索引从1....rsColNum
for(int j1 = 1; j1 <= rsColNum; j1++) //取出当前行的每一列数据
//并保存到String数组中.
{
as[j1] = resultset.getString(j1);
if(as[j1] == null) //注意null情况
as[j1] = new String(" "); //为空就保存为空串
}
vctr.add(as); //添加到Vector中去.
rsRowNum++; //每完成一行数据的装载就使当前标识行的数量加1
rsTotalRowNum++; //同时总行数也加1
}

while(resultset.next()) //所有记录条数统计完成
rsTotalRowNum++; //统计剩余的记录条数,完善总行数
enumer = vctr.elements(); //把数据放到枚举里
String as1[] = new String[rsColNum + 1]; //从1开始方便存取
for(int i1 = 1; i1 <= rsColNum; i1++)
{ //把所有的列名都保存在一个HashTable,大写形式.
as1[i1] = resultsetmetadata.getColumnName(i1).toUpperCase();
hshtbl.put(as1[i1], new Integer(i1));
}
return 0;
}
catch(Exception exception)
{
enumer = null;
}
return -1;
}

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧