JSP分页技术实现与优化策略
3星 · 超过75%的资源 需积分: 9 8 浏览量
更新于2024-07-31
1
收藏 223KB DOC 举报
"本文主要介绍了JSP分页技术的实现,包括常见方法的优缺点以及推荐的高效分页策略。作者提供了Oracle和MySQL数据库中实现分页查询的示例SQL语句。"
在Web开发中,JSP分页技术是必不可少的,它允许用户在大数据集上进行高效的浏览。通常,分页技术可以分为几种不同的实现方式:
1. **数据缓存**:一种常见的方法是将查询结果存储在HttpSession或有状态bean中,然后在用户翻页时从缓存中获取数据。然而,这种方法存在两个主要问题:一是数据可能会过时,无法反映数据库中的最新信息;二是当数据量大时,初次加载所有数据会消耗大量时间和内存。
2. **每次查询一页**:另一种方法是在每次翻页时重新查询数据库,仅获取当前页的数据。这种方法通过`ResultSet`操作,如`rs.last(); rs.getRow()`来获取总记录数,`rs.absolute()`定位到当前页的起始记录。但是,对于某些数据库(如Oracle),这种实现可能仍需遍历整个结果集,导致性能下降。
3. **错误的ResultSet缓存**:直接缓存`ResultSet`是不推荐的,因为当`Statement`或`Connection`关闭时,`ResultSet`也会被关闭,长时间保持数据库连接是不合适的。
为了避免上述问题,一种更有效的分页策略是**分块查询**。这种方法在每次翻页时只从数据库中检索特定数量的数据(页面大小)。这样,尽管每次都需要查询数据库,但查询的数据量小,网络传输数据少。如果使用数据库连接池,还可以避免建立数据库连接的时间开销。
在数据库层面,Oracle支持使用ROWNUM伪列进行分页。例如,获取前10条记录的SQL语句是:
```sql
SELECT * FROM employee WHERE ROWNUM < 10;
```
然而,ROWNUM在查询后、排序前赋值,所以要按特定字段(如birthday)排序并获取第100到120条记录,需要如下写法:
```sql
SELECT * FROM (
SELECT my_table.*, ROWNUM AS my_rownum
FROM (
SELECT name, birthday FROM employee ORDER BY birthday
) my_table
WHERE ROWNUM < 120
) WHERE my_rownum >= 100;
```
对于MySQL,可以使用LIMIT子句实现分页:
```sql
SELECT name, birthday FROM employee ORDER BY birthday LIMIT 99, 20; -- 获取第100到120条记录
```
这个例子中,LIMIT的第一个参数是跳过的记录数(99),第二个参数是要获取的记录数(20)。
JSP分页技术的实现应侧重于效率和实时性,利用数据库的特性进行分页查询,以达到最佳性能。
153 浏览量
2009-11-21 上传
195 浏览量
130 浏览量
182 浏览量
2023-06-09 上传
101 浏览量
2023-07-16 上传
refreshneng
- 粉丝: 1
- 资源: 18
最新资源
- 图像预处理相关ppt
- 华为认证网络工程师考试题库
- C++学习网站列表.txt
- c语言试题机试题(填空)
- Linux那些事儿之我是U盘.pdf
- QTP使用指南——入门
- Linux那些事儿之我是USB+Core(v1.0).pdf
- IBM80x86实验word文档
- Linux那些事儿之我是Hub.pdf
- rbac基于角色的权限管理
- Embeded Linux Primer:A practicle,Real World Approach
- Linux那些事儿 之 我是Sysfs下.pdf
- spring开发指南 pdf
- 一个简单的c++计算器程序
- 严蔚敏 数据结构(C语言版)习题集答案
- 俄罗斯方块源代码(c语言)