ITPUB??ì3
12月微软Hyper-V虚拟化沙龙主题征集
ITPUB论坛 » Java企业开发 » JSP分页?

新一届的微软MVP评选已经开始,欢迎各位推荐!

标题: JSP分页?
离线 donald82
门外汉


精华贴数 0
个人空间 30
技术积分 472 (4182)
社区积分 63 (4448)
注册日期 2006-9-19
论坛徽章:2
BLOG每日发帖之星ITPUB新首页上线纪念徽章    
      

发表于 2008-9-4 16:38 
JSP分页?

<%@ page contentType="text/html; charset=gb2312" %>
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
<%
String driverName="oracle.jdbc.driver.OracleDriver";
String userName="ME";//数据库用户名
String userPasswd="ME";//密码

String dbName="ME";//数据库名
String tableName="TEST_AA"; //表名
//连接字符串
String url="jdbcracle:thin:@localhost:1521:ME";
Class.forName(driverName).newInstance();
Connection connection=DriverManager.getConnection(url,userName,userPasswd);
Statement statement = connection.createStatement();

//每页显示记录数
int PageSize = 15;
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; //获得开始显示的记录编号
}

//设置显示页码的初始值!!
  if(PageNo % PageSize == 0){
   CounterStart = PageNo - (PageSize - 1);
  }else{
   CounterStart = PageNo - (PageNo % PageSize) + 1;
  }
CounterEnd = CounterStart + (PageSize - 1);
out.print("PageNo="+PageNo+"CounterStart="+CounterStart+"CounterEnd="+CounterEnd);
%>

<html>
<head>
<title>分页显示记录</title>
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<%

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

rs = statement.executeQuery("SELECT  ID,LINE_NO,DESC,ENTER_DATE FROM TEST_AA  ORDER BY ENTER_DATE DESC";

//获取总页数
MaxPage = RecordCount % PageSize;
if(RecordCount % PageSize == 0){
  MaxPage = RecordCount / PageSize;
}else{
   MaxPage = RecordCount/PageSize+1;
}
%>
<body class="UsePageBg">
<table width="100%" border="0" class="InternalHeader">
<tr>
   <td width="24%"><font size=4>分页显示记录</font></td>
    <td width="76%">
       <font size=4><%="总共"+RecordCount+"条记录 - 当前页:"+PageNo+"/"+MaxPage %></font>
    </td>
</tr>
</table>

<br>
<table width="100%" border="0" class="NormalTableTwo">
  <tr>
    <td class="InternalHeader">记录序号</td>
    <td class="InternalHeader" >合同号</td>
    <td class="InternalHeader" >序号</td>
    <td class="InternalHeader" >描述间</td>
    <td class="InternalHeader" >输入时间</td>
  </tr>

<%
int i = 1;
while (rs.next()) {
   int bil = i + (PageNo-1)*PageSize;
   //out.print("bil="+bil);
   if(bil>(PageNo-1)*20 && bil<=PageNo*20)
    {
%>
<tr>
    <td class="NormalFieldTwo" ><%=bil %></td>
    <td class="NormalFieldTwo" ><%=rs.getString(1)%></td>
    <td class="NormalFieldTwo" ><%=rs.getString(2)%></td>
    <td class="NormalFieldTwo" ><%=rs.getString(3)%></td>
    <td class="NormalFieldTwo" ><%=rs.getString(4)%></td>
  </tr>
<%
    i++;
   }
}%>
</table>
<br>
<table width="100%" border="0" class="InternalHeader">
  <tr>
   <td><div align="center">
<%
   out.print("<font size=4>";
  //显示第一页或者前一页的链接
  //如果当前页不是第1页,则显示第一页和前一页的链接
  if(PageNo != 1){
    PrevStart = PageNo - 1;
    out.print("<a href=myPage.jsp?PageNo=1>第一页 </a>: ";
    out.print("<a href=myPage.jsp?PageNo="+PrevStart+">前一页</a>";
  }
  out.print("[";

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

out.print("]");;

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

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

   out.print(":");
    out.print("<a href=myPage.jsp?PageNo="+MaxPage+">最后一页</a>");
  }
  out.print("</font>");
%>
</div>
</td>
</tr>
</table>
<%
  rs.close();
  statement.close();
   connection.close();
%>
</body>
</html>

他只能取得第一页面正确的数据,
点击显示第二页的时候就取不到,
初步确定可能是这里出问题了:请指正一下

int i = 1;
while (rs.next()) {
   int bil = i + (PageNo-1)*PageSize;
   //out.print("bil="+bil);
   if(bil>(PageNo-1)*20 && bil<=PageNo*20)
    {
%>
<tr>
    <td class="NormalFieldTwo" ><%=bil %></td>
    <td class="NormalFieldTwo" ><%=rs.getString(1)%></td>
    <td class="NormalFieldTwo" ><%=rs.getString(2)%></td>
    <td class="NormalFieldTwo" ><%=rs.getString(3)%></td>
    <td class="NormalFieldTwo" ><%=rs.getString(4)%></td>
  </tr>
<%
    i++;
   }


__________________
路一直不是很好走................
人死之后会上天堂还是下地狱我不知道,反正我去火葬场
从现在起,努力灌水........
有计划的获得成功........
只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问