Chinaunix首页 | 论坛 | 博客
  • 博客访问: 58629
  • 博文数量: 11
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 140
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-20 18:55
文章分类

全部博文(11)

文章存档

2008年(11)

我的朋友
最近访客

分类: Java

2008-07-08 13:34:50

这是从一个PHP分页代码改的,没有异常处理,也没有利用java面向对象的特点,仅能帮助了解分页的逻辑和页码处理,供参考。源码中带有mysql中的数据库,方便调试,请下载。
下面是TestPage.jsp

<%@ page contentType="text/html; charset=gb2312" %>
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
<%
 //驱动程序名,比较旧了,如果你用mysql5,自己改。
 String driverName="org.gjt.mm.mysql.Driver";
 String userName="root";//数据库用户名
 String userPasswd="";//密码

 String dbName="bookstore";//数据库名

 String tableName="items"; //表名

//运行图:


//连接字符串

String url="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPasswd;
Class.forName(driverName).newInstance();
Connection connection=DriverManager.getConnection(url);
Statement statement = connection.createStatement();

//每页显示记录数
int PageSize = 8;
int StartRow = 0; //开始显示记录的编号
int PageNo=0;//需要显示的页数
int CounterStart=0;//每页页码的初始值
int CounterEnd=0;//显示页码的最大值
int RecordCount=0;//总记录数;
int MaxPage=0;//总页数
int PrevStart=0;//前一页
int NextPage=0;//下一页
int LastRec=0;
int LastStartRecord=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);
%>



分页显示记录


<%

//获取总记录数
ResultSet rs = statement.executeQuery("select count(*) from items" );
rs.next();
RecordCount = rs.getInt(1);

rs = statement.executeQuery("SELECT image_url,author,price,item_id FROM items ORDER BY item_id DESC LIMIT "
       +StartRow+", "+PageSize);

//获取总页数
MaxPage = RecordCount % PageSize;
if(RecordCount % PageSize == 0){
  MaxPage = RecordCount / PageSize;
}else{
   MaxPage = RecordCount/PageSize+1;
}
%>


 
   
    
 
分页显示记录
       <%="总共"+RecordCount+"条记录 - 当前页:"+PageNo+"/"+MaxPage %>
    




  
    
    
    
    
    
  

<%
int i = 1;
while (rs.next()) {
  int bil = i + (PageNo-1)*PageSize;
%>
 
    
    
    
    
    
  
<%
  i++;
}%>
记录序号图像路径作者价格图书编号
<%=bil %><%=rs.getString(1)%><%=rs.getString(2)%><%=rs.getString(3)%><%=rs.getString(4)%>

>


  
   


<%
   out.print("");
  //显示第一页或者前一页的链接
  //如果当前页不是第1页,则显示第一页和前一页的链接
  if(PageNo != 1){
    PrevStart = PageNo - 1;
    out.print("第一页 : ");
    out.print("前一页");
  }
  out.print("[");

   //打印需要显示的页码
   for(int c=CounterStart;c<=CounterEnd;c++){
   if(c      if(c == PageNo){
       if(c %PageSize == 0){
         out.print(c);
       }else{
          out.print(c+" ,");
       }
     }else if(c % PageSize == 0){
        out.print(""+c+"");
     }else{
        out.print(""+c+" ,");
     }
   }else{
     if(PageNo == MaxPage){
      out.print(c);
      break;
     }else{
        out.print(""+c+"");
     break;
   }
  }
}

out.print("]");;

if(PageNo < MaxPage){ //如果当前页不是最后一页,则显示下一页链接
    NextPage = PageNo + 1;
    out.print("下一页");
}

//同时如果当前页不是最后一页,要显示最后一页的链接
if(PageNo < MaxPage){
   LastRec = RecordCount % PageSize;
   if(LastRec == 0){
      LastStartRecord = RecordCount - PageSize;
   }
   else{
      LastStartRecord = RecordCount - LastRec;
   }

   out.print(":");
    out.print("最后一页");
  }
  out.print("
");
%>



<%
  rs.close();
  statement.close();
   connection.close();
%>

阅读(604) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~