这是从一个PHP分页代码改的,没有异常处理,也没有利用java面向对象的特点,仅能帮助了解分页的逻辑和页码处理,供参考。源码中带有mysql中的数据库,方便调试,请下载。
下面是TestPage.jsp
<%@pagecontenttype>
<%@pagelanguage>
<%@pageimport>
<%>%>//驱动程序名,比较旧了,如果你用mysql5,自己改。
StringdriverName="org.gjt.mm.mysql.Driver";
StringuserName="root";//数据库用户名
StringuserPasswd="";//密码
StringdbName="bookstore";//数据库名
StringtableName="items";//表名
//连接字符串
Stringurl="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPasswd;
Class.forName(driverName).newInstance();
Connectionconnection=DriverManager.getConnection(url);
Statementstatement=connection.createStatement();
//每页显示记录数
intPageSize=8;
intStartRow=0;//开始显示记录的编号
intPageNo=0;//需要显示的页数
intCounterStart=0;//每页页码的初始值
intCounterEnd=0;//显示页码的最大值
intRecordCount=0;//总记录数;
intMaxPage=0;//总页数
intPrevStart=0;//前一页
intNextPage=0;//下一页
intLastRec=0;
intLastStartRecord=0;//最后一页开始显示记录的编号
//获取需要显示的页数,由用户提交
if(request.getParameter("PageNo")==null){//如果为空,则表示第1页
if(StartRow==0){
PageNo=StartRow+1;//设定为1
}
}else{
PageNo=Integer.parseInt(request.getParameter("PageNo"));//获得用户提交的页数
StartRow=(PageNo-1)*PageSize;//获得开始显示的记录编号
}
//因为显示页码的数量是动态变化的,假如总共有一百页,则不可能同时显示100个链接。而是根据当前的页数显示
//一定数量的页面链接
//设置显示页码的初始值!!
if(PageNo%PageSize==0){
CounterStart=PageNo-(PageSize-1);
}else{
CounterStart=PageNo-(PageNo%PageSize)+1;
}
CounterEnd=CounterStart+(PageSize-1);
%>
<%>%>
//获取总记录数
ResultSetrs=statement.executeQuery("selectcount(*)fromitems");
rs.next();
RecordCount=rs.getInt(1);
rs=statement.executeQuery("SELECTimage_url,author,price,item_idFROMitemsORDERBYitem_idDESCLIMIT"
+StartRow+","+PageSize);
//获取总页数
MaxPage=RecordCount%PageSize;
if(RecordCount%PageSize==0){
MaxPage=RecordCount/PageSize;
}else{
MaxPage=RecordCount/PageSize+1;
}
%>
%>
<%>%>inti=1;
while(rs.next()){
intbil=i+(PageNo-1)*PageSize;
%>
%>
<%>%>i++;
}%>
>
<%>%>out.print("
//显示第一页或者前一页的链接
//如果当前页不是第1页,则显示第一页和前一页的链接
if(PageNo!=1){
PrevStart=PageNo-1;
out.print("
out.print("
}
out.print("[");
//打印需要显示的页码
for(intc=CounterStart;cif(c
if(c%PageSize==0){
out.print(c);
}else{
out.print(c+",");
}
}elseif(c%PageSize==0){
out.print("
}else{
out.print("
}
}else{
if(PageNo==MaxPage){
out.print(c);
break;
}else{
out.print("
break;
}
}
}
out.print("]");;
if(PageNo
out.print("
}
//同时如果当前页不是最后一页,要显示最后一页的链接
if(PageNo
if(LastRec==0){
LastStartRecord=RecordCount-PageSize;
}
else{
LastStartRecord=RecordCount-LastRec;
}
out.print(":");
out.print("
}
out.print("");
%>
<%>%>rs.close();
statement.close();
connection.close();
%>