这里我以从一个用户表中查询用户信息为例演示其用法:
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、如果你觉得分页工具栏不能满足你的要求,
q网管(Evp;育H9p,
可以用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:
.vf]Y5{p}BuC"W
返回分页大小
*
* @return int
*/
public int getPageSize() {
return pageSize;
}
/**
* getRowsCount:8NsAX教t$nT"TQ返回总记录行数
*
* @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;
}
}
分享到:
相关推荐
总结来说,面向对象的Java JDBC分页查询涉及到创建Page类来存储分页信息,构造Oracle兼容的SQL语句,以及使用PreparedStatement执行查询。在实际开发中,我们还需要关注性能优化、异常处理和代码的可维护性,确保...
在Java Web开发中,与Oracle数据库进行交互时,分页功能是常见的需求,尤其是在处理大量数据时,为了提高用户体验和加载速度,分批次地显示数据是必不可少的。本项目提供的源代码正是针对这一需求,提供了在Java Web...
其次,`ShowPage.java`是核心的分页类,它可能是用来封装分页参数和结果的。这个类可能会包含如当前页、总页数、每页记录数、总记录数等属性,并提供相应的 getter 和 setter 方法。此外,还可能包含执行分页查询的...
MySQL、SQL Server、Oracle 分页及 Java 分页统一接口实现 MySQL、SQL Server、Oracle 分页是关系数据库管理系统中最基本也是最常用的操作之一,而 Java 分页统一接口实现则是对数据库操作的抽象和封装。本文将对 ...
强大的分页类通常会考虑更多的实际需求,比如排序、过滤条件、统计信息等,并且可能具有高度可配置性,以适应不同的项目需求。 最后,"分页.rar"可能包含的是一个独立的分页解决方案,可能具有特定的优化或特性。...
以下是一个简单的Java分页示例: ```java public List<YourEntity> fetchPagedData(int pageNum, int pageSize) { String sql = "SELECT * FROM (SELECT a.*, ROWNUM rn FROM (SELECT * FROM your_table ORDER BY ...
在Oracle数据库中,SQL分页是一种非常...总的来说,Oracle的SQL分页实践涉及到数据库查询优化、索引策略以及Java应用程序中的数据访问层设计。理解并熟练运用这些方法,能帮助开发者构建高效、响应迅速的数据驱动应用。
在Java中,我们可以创建一个分页类,包含当前页码、每页记录数等属性,并提供计算起始位置和结束位置的方法。例如: ```java public class Pagination { private int currentPage; private int pageSize; ...
在Java编程中,连接Oracle数据库并实现分页显示是一项常见的任务。这涉及到对数据库的查询操作,特别是当数据量较大时,为了提高用户体验和系统性能,分页展示数据显得尤为重要。Oracle数据库支持多种方式进行分页,...
关于oracle 的分页、翻页的java源代码,结合JDBC连接数据库实现,比较基础的JDBC结合swing图形框架实现,适合Java初学者使用
本教程将深入探讨如何在Java中调用Oracle存储过程来执行分页查询。 首先,我们需要理解分页的基本概念。分页是将大结果集分割成多个小部分,每次只加载一部分数据到内存中,这样可以减少内存消耗,提高响应速度。在...
Oracle数据库提供了强大的存储过程功能,可以与Java后端配合,实现高效的分页查询。本篇文章将深入探讨如何利用Java与Oracle数据库过程相结合,实现在JSP页面上的分页展示。 首先,Oracle函数包是组织相关函数和...
本主题将深入探讨Oracle数据库级分页的原理以及如何在Java项目中应用。 首先,理解数据库级分页的含义。数据库级分页是指在数据库服务器端进行数据的分块处理,而不是一次性获取所有数据,然后在应用程序中进行分页...
总的来说,"SSH+ORACLE好用分页"表明了在Java Web开发中,通过SSH框架与Oracle数据库的集成,可以实现高效且便捷的数据分页功能。这种结合充分利用了SSH的灵活性和Oracle的高性能,为开发者提供了强大且可靠的开发...
在“ssh+oracle分页”这个主题中,我们将深入探讨如何利用这三个框架与Oracle数据库进行集成,并实现数据的分页显示。 1. **Struts框架**:Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架。...
这里提到的"对分页进行了封装,PageUtil.java工具类"是一个Java实现的分页辅助类,它的主要目标是简化分页查询的操作,提供更便捷的API给开发者使用。 `PageUtil.java`工具类可能包含了以下功能: 1. **参数处理**...
Java分页组件是Java开发中常见的一种工具,用于在处理大量数据时,将结果集分割成多页显示,以提高用户界面的响应速度和用户体验。Oracle数据库是企业级常用的数据库系统,它支持复杂的SQL查询和大数据量的处理。在...
Oracle是一种广泛应用的关系型数据库管理系统,而JSP(JavaServer Pages)则是用于创建动态网页的技术。在处理大量数据时,分页功能变得尤为关键,因为它能够有效地提高用户体验,避免一次性加载过多数据导致页面...
这是我自己改的分页代码 呵呵 写了将近一个星期 只有一个控制类和一个jsp页 方便阅读和修改 只要修改test.java里面的数据库连接和表名就可以用了 希望大家工作和学习顺利 里面的class12.jar这个包是因为我的数据库...
Java分页标签是Java Web开发中的一个重要概念,它主要用于处理大量数据的展示,尤其是在数据库查询结果需要在网页上以多页形式呈现时。这个技术可以让用户更方便地浏览和导航大量的信息,而不会一次性加载所有数据...