分页处理的bean类PageableResultSet.java的构造函数参数为一个ResultSet对象,即执行查询语句得到的ResultSet。其具体代码如下:
public class PageableResultSet extends ResultSet{
protected java.sql.ResultSet rs = null;
protected int rowsCount;
protected int pageSize;
protected int curPage;
protected String command = "";
public PageableResultSet(java.sql.ResultSet rs)
throws java.sql.SQLException {
if (rs == null)
throw new SQLException("given ResultSet is NULL", "user");
rs.last();//将指针移动到此 ResultSet 对象的最后一行
rowsCount = rs.getRow();//检索当前行编号
rs.beforeFirst();//将指针移动到此 ResultSet 对象的开头,正好位于第一行之前
this.rs = rs;
}
/**返回当前页号
*/
public int getCurPage() {
return curPage;
}
/**返回总页数
*/
public int getPageCount() {
if (rowsCount == 0)
return 0;
if (pageSize == 0)
return 1;
// calculate PageCount
double tmpD = (double) rowsCount / pageSize;
int tmpI = (int) tmpD;
if (tmpD > tmpI)
tmpI++;
return tmpI;
}
/**返回当前页的记录条数
*/
public int getPageRowsCount() {
if (pageSize == 0)
return rowsCount;
if (getRowsCount() == 0)
return 0;
if (curPage != getPageCount())
return pageSize;
return rowsCount - (getPageCount() - 1) * pageSize;
}
/**返回分页大小
*/
public int getPageSize() {
return pageSize;
}
/**返回总记录行数
*/
public int getRowsCount() {
return rowsCount;
}
/**转到指定页
*/
public void gotoPage(int page) {
if (rs == null)
return;
if (page < 1)
page = 1;
if (page > getPageCount())
page = getPageCount();
int row = (page - 1) * pageSize + 1;
try {
rs.absolute(row);//将指针移动到此 ResultSet 对象的给定行编号
curPage = page;
} catch (java.sql.SQLException e) {
}
}
/**
* 转到当前页的第一条记录
* @exception java.sql.SQLException 异常说明。
*/
public void pageFirst() throws SQLException {
int row = (curPage - 1) * pageSize + 1;
rs.absolute(row);
}
/**
* 转到当前页的最后一条记录
* @exception java.sql.SQLException 异常说明。
*/
public void pageLast() throws SQLException {
int row = (curPage - 1) * pageSize + getPageRowsCount();
rs.absolute(row);
}
/**设置分页大小
*/
public void setPageSize(int pageSize) {
if (pageSize >= 0) {
this.pageSize = pageSize;
curPage = 1;
}
}
protected java.sql.ResultSet rs = null;
protected int rowsCount;
protected int pageSize;
protected int curPage;
protected String command = "";
public PageableResultSet(java.sql.ResultSet rs)
throws java.sql.SQLException {
if (rs == null)
throw new SQLException("given ResultSet is NULL", "user");
rs.last();//将指针移动到此 ResultSet 对象的最后一行
rowsCount = rs.getRow();//检索当前行编号
rs.beforeFirst();//将指针移动到此 ResultSet 对象的开头,正好位于第一行之前
this.rs = rs;
}
/**返回当前页号
*/
public int getCurPage() {
return curPage;
}
/**返回总页数
*/
public int getPageCount() {
if (rowsCount == 0)
return 0;
if (pageSize == 0)
return 1;
// calculate PageCount
double tmpD = (double) rowsCount / pageSize;
int tmpI = (int) tmpD;
if (tmpD > tmpI)
tmpI++;
return tmpI;
}
/**返回当前页的记录条数
*/
public int getPageRowsCount() {
if (pageSize == 0)
return rowsCount;
if (getRowsCount() == 0)
return 0;
if (curPage != getPageCount())
return pageSize;
return rowsCount - (getPageCount() - 1) * pageSize;
}
/**返回分页大小
*/
public int getPageSize() {
return pageSize;
}
/**返回总记录行数
*/
public int getRowsCount() {
return rowsCount;
}
/**转到指定页
*/
public void gotoPage(int page) {
if (rs == null)
return;
if (page < 1)
page = 1;
if (page > getPageCount())
page = getPageCount();
int row = (page - 1) * pageSize + 1;
try {
rs.absolute(row);//将指针移动到此 ResultSet 对象的给定行编号
curPage = page;
} catch (java.sql.SQLException e) {
}
}
/**
* 转到当前页的第一条记录
* @exception java.sql.SQLException 异常说明。
*/
public void pageFirst() throws SQLException {
int row = (curPage - 1) * pageSize + 1;
rs.absolute(row);
}
/**
* 转到当前页的最后一条记录
* @exception java.sql.SQLException 异常说明。
*/
public void pageLast() throws SQLException {
int row = (curPage - 1) * pageSize + getPageRowsCount();
rs.absolute(row);
}
/**设置分页大小
*/
public void setPageSize(int pageSize) {
if (pageSize >= 0) {
this.pageSize = pageSize;
curPage = 1;
}
}
public boolean next() throws SQLException {
// TODO Auto-generated method stub
return rs.next();
}
分页action类PageAction.java的关键代码如下:
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.lyt.struts.action;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.sql.DataSource;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import bean.*;
import common.*;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;
import dao.ApplicationDAO;
/**
* MyEclipse Struts
* Creation date: 07-14-2007
*
* XDoclet definition:
* @struts.action validate="true"
*/
public class PageAction extends Action {
/*
* Generated Methods
*/
/**
* Method execute
* @param mapping
* @param form
* @param request
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.lyt.struts.action;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.sql.DataSource;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import bean.*;
import common.*;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;
import dao.ApplicationDAO;
/**
* MyEclipse Struts
* Creation date: 07-14-2007
*
* XDoclet definition:
* @struts.action validate="true"
*/
public class PageAction extends Action {
/*
* Generated Methods
*/
/**
* Method execute
* @param mapping
* @param form
* @param request