现在的位置: 首页 > 综合 > 正文

一种struts分页方法

2013年10月27日 ⁄ 综合 ⁄ 共 3629字 ⁄ 字号 评论关闭
分页处理的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;
        }

    }

    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

抱歉!评论已关闭.