Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 670|回复: 0

Java Web中分页的个人感想

[复制链接]

该用户从未签到

发表于 2011-10-12 21:36:52 | 显示全部楼层 |阅读模式
最近刚刚学完Java Web的分页处理,数据库用的是SQLServer2000,关于SQLServer2000的分页处理,我个人感觉比MySql要烦琐很多,在网上有关于SQLServer的分页处理的SQL语句算法,我也尝试着用了一下,不过在我机器上的SQLServer2000总是报错,具体语句是:以下是引用片段:
  select top PAGESIZE * from components where id not in
  (select top (PAGESIZE*(CURRENTPAGE-1))
  id from components order by id)order by id
如:
以下是引用片段:
  select top 10 * from components where id not in
  (select top 10*10 id from components order by id)
  order by id
在我的机器上在“order”处总是出现语法错误,本人的数据库SQL语法并不很强,所以我想用另外一种途径解决,基本的思维和MySql中“select * from Articles where parentsID=0 limit pageNo, pageSize;”差不多,也就是在显示之前把信息分段提取出来,在把这一段信息划为一页的信息。在MySql中可以用SQL语句直接分好,但是在SQLServer2000中我的机器貌似很不争气,再加上我的技术有限,我只能寻找另外的途径解决,以下就是我的解决方法,当然这个方法不能和高手的方法相比,这只是我学业路程上的一点小小的探索。
如上面所说,我既然不能直接在数据库中把信息分段,然后我就在想,我能不能在把所有信息提取出来后,在ResultSet里把信息分段,比如我把3条信息分为一段,即:一页。所以我按照我的想法慢慢的做了出来:
在显示页面,比如show.jsp中接收页码即:
String strPageNo = request.getParameter("pageNo");
下面是对strPageNo的一些验证,然后把strPageNo强制转换付给int pageNo;再定义每一页显示的信息数量,比如
int pageSize = 3;
然后利用数据库查询把所有信息的数量查出来付给int totalRecords; 再计算总共有多少页:
int totalPages = totalRecords % pageSize == 0 ? totalRecords / pageSize : totalRecords / pageSize + 1;
下面就要对查询出的信息进行分页了,首先在查询之前要算出开始信息的位置:
int startPos = pageNo * pageSize - pageSize + 1;
下面是进行信息查询,把查询出来的滚动结果集付给ResultSet rs;接着把游标移到开始信息的位置即:
rs.absolute(startPos);
然后把游标移动到上一个:
rs.previous();
接着进行分段取信息:
for(int pages = 1; pages <= totalPages && pages < startPos + pageSize; pages++) {
   rs.next();
   //取出你要的信息
}
这就差不多了,剩下的关于代码健壮性的自己可以添加,本人技术有限,如果有错误的地方请指正,我会尽快改正,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-5-26 00:33 , Processed in 0.369895 second(s), 38 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表