一种struts分页方法

分页处理的bean类PageableResultSet.java的构造函数参数为一个ResultSet对象,即执行查询语句得到的ResultSet。其具体代码如下:
public class PageableResultSet ... extends ResultSet {

protectedjava.sql.ResultSetrs=null;

protectedintrowsCount;

protectedintpageSize;

protectedintcurPage;

protectedStringcommand="";

publicPageableResultSet(java.sql.ResultSetrs)
throwsjava.sql.SQLException...{
if(rs==null)
thrownewSQLException("givenResultSetisNULL","user");

rs.last();
//将指针移动到此ResultSet对象的最后一行
rowsCount=rs.getRow();//检索当前行编号
rs.beforeFirst();//将指针移动到此ResultSet对象的开头,正好位于第一行之前

this.rs=rs;
}


/***//**返回当前页号
*/

publicintgetCurPage()...{
returncurPage;
}


/***//**返回总页数
*/

publicintgetPageCount()...{
if(rowsCount==0)
return0;
if(pageSize==0)
return1;
//calculatePageCount
doubletmpD=(double)rowsCount/pageSize;
inttmpI=(int)tmpD;
if(tmpD>tmpI)
tmpI
++;
returntmpI;
}


/***//**返回当前页的记录条数
*/

publicintgetPageRowsCount()...{
if(pageSize==0)
returnrowsCount;
if(getRowsCount()==0)
return0;
if(curPage!=getPageCount())
returnpageSize;
returnrowsCount-(getPageCount()-1)*pageSize;

}


/***//**返回分页大小
*/

publicintgetPageSize()...{
returnpageSize;
}


/***//**返回总记录行数
*/

publicintgetRowsCount()...{
returnrowsCount;
}


/***//**转到指定页
*/

publicvoidgotoPage(intpage)...{
if(rs==null)
return;
if(page<1)
page
=1;
if(page>getPageCount())
page
=getPageCount();
introw=(page-1)*pageSize+1;
try...{
rs.absolute(row);
//将指针移动到此ResultSet对象的给定行编号
curPage=page;
}
catch(java.sql.SQLExceptione)...{
}

}


/***//**
*转到当前页的第一条记录
*
@exceptionjava.sql.SQLException异常说明。
*/

publicvoidpageFirst()throwsSQLException...{
introw=(curPage-1)*pageSize+1;
rs.absolute(row);
}


/***//**
*转到当前页的最后一条记录
*
@exceptionjava.sql.SQLException异常说明。
*/

publicvoidpageLast()throwsSQLException...{
introw=(curPage-1)*pageSize+getPageRowsCount();
rs.absolute(row);
}


/***//**设置分页大小
*/

publicvoidsetPageSize(intpageSize)...{
if(pageSize>=0)...{
this.pageSize=pageSize;
curPage
=1;
}

}

public boolean next() throws SQLException {
// TODO Auto-generated method stub
return rs.next();
}

}

分页action类PageAction.java的关键代码如下:
/**/ /*
*GeneratedbyMyEclipseStruts
*Templatepath: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;

/***/ /**
*MyEclipseStruts
*Creationdate:07-14-2007
*
*XDocletdefinition:
*@struts.actionvalidate="true"
*/

public class PageAction extends Action ... {
/**//*
*GeneratedMethods
*/


/***//**
*Methodexecute
*
@parammapping
*
@paramform
*
@paramrequest
*
@paramresponse
*
@returnActionForward
*/

publicActionForwardexecute(ActionMappingmapping,ActionFormform,
HttpServletRequestrequest,HttpServletResponseresponse)
...{

ServletContextcontext
=servlet.getServletContext();
//从配置文件中得到数据源
DataSourcedataSource=(DataSource)context.getAttribute("db");
DBdb
=newDB(dataSource);
HttpSessionsession
=request.getSession();
try...{
request.setCharacterEncoding(
"gb2312");
}
catch(Exceptione)...{
e.printStackTrace();
}

UserBeanuser
=(UserBean)session.getAttribute("usr");
if(user==null)...{
returnmapping.findForward("invalidSession");
}

intstaffId=user.getID();
StringsappType
=request.getParameter("appType");


intappType=Integer.valueOf(sappType).intValue();
ResultSetrs
=ApplicationDAO.getBjsxRS(db,staffId,appType);

intpageNumber=1;
try...{
pageNumber
=Integer.parseInt(request.getParameter("pageNumber"));
}
catch(Exceptione)...{
pageNumber
=1;
}

PageableResultSetprs
=null;
try...{
prs
=newPageableResultSet(rs);
}
catch(Exceptione)...{
e.printStackTrace();
}

prs.setPageSize(
10);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值