<% 
    Connection conn = yy.getConn();//取得数据库连接
    Statement sqlStmt = conn.createStatement();//sql语句对象
    ResultSet sqlRst;//结果集对象
    String strSQL; //SQL语句
    int intPageSize;//一页显示的记录数
    int intRowCount;//记录总数
    int intPageCount;//总页数
    int intPage; //待显示页码
    String strPage;
    int i = 0;
    intPageSize = 20;//设置一页显示的记录数
    strPage = request.getParameter("page");
    if(strPage == null){//表明在QueryString中没有page这个参数,此时显示第一页数据
    intPage = 1;
    }
    else{//将字符串转成整形
intPage = Integer.parseInt(strPage);
if(intPage <1)  intPage = 1;
    }
    //创建一个可以滚动的只读的SQL语句对象
    sqlStmt = conn.createStatement   (java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
    //准备SQL语句
    strSQL = "select rownum,id,topic,content from news order by id desc";
    //执行SQL语句并获取结果集
    sqlRst = sqlStmt.executeQuery(strSQL);
    //获取记录总数
    sqlRst.last();
    intRowCount = sqlRst.getRow();
    //记算总页数
    intPageCount = (intRowCount + intPageSize - 1)/intPageSize;
    //调整待显示的页码
    if(intPage>intPageCount)  intPage = intPageCount;
    if(intPageCount > 0){
    //将记录指针定位到待显示的第一条记录上
    sqlRst.absolute((intPage - 1) * intPageSize + 1);
    //显示数据
    while(i < intPageSize && !sqlRst.isAfterLast()){
%>
    <TBODY>
        <TR>
          <TD align=left class="jnfont6"><a href="news_list.jsp?fid=<%=sqlRst.getString("id")%>"><%=sqlRst.getString("rownum")%>.<%=sqlRst.getString("topic")%></a></TD>
        </TR>
<%
sqlRst.next();
i++;
}
}
%>
        <TR>
          <TD vAlign=top>
            <P> </P>
            <TABLE width="100%" align=center border=0>
              <TBODY>
              <TR>
                <TD class=news>
                  <P> <BR>
                  </P></TD></TR>
              <TR>
                <TD align=middle><a href="index.jsp" class="jnfont6">返回首页 </a></TD>
<td class="jnfont6" align=right><div align="right">第<%=intPage%>页&nbsp;&nbsp;共<%=intPageCount%>页&nbsp;&nbsp;
                        <%if(intPage<intPageCount){%>
        <a href="news_more.jsp?page=<%=intPage+1%>">下一页</a>
        <%}%>
&nbsp;&nbsp;
  <%if(intPage>1){%>
        <a href="news_more.jsp?page=<%=intPage-1%>">上一页</a>
<%}%>
<%
sqlRst.close();
conn.close();
%>
</BODY></HTML>

解决方案 »

  1.   

    有什么错误没Page-->换成另外的变量看看.比如pageNum
      

  2.   

    一开始学做程序,要按着标准的开发步骤写,起码也应该做一个jsp和一个bean吧。分页很简单,
    不过你要把思路和实现的流程分开考虑,用mvc的观点去分析一个问题
    1 。 读取数据  写一个专门的类,负责从数据库中读取数据,并将数据封装到(arraylist ,或什么 集合变量里)2 。 分页计算,你这里就可以写在jsp里了,如果想使结构清晰,再写一个处理业务的bean
    进行 分页计算(当前页,最大页,等等)
         每一页显示的 数据是固定的,最好将当前页要显示的数据 再装到 一个 list里,取名叫currentList
    或什么的,表明这个集合变量里放的数据就是jsp页面要显示的,
       这样翻页操作一个比较抽象的概念就变成了 每次对currentList的操作
    3。jsp 界面什么都不需要计算只需要遍历 这个currentList 取出当前数据 并显示就可以了
     自己将条理弄清楚,你的问题自己就能调试好了,
     现在的代码有点乱,别人给你找出毛病,你对分页也还是不太懂
      

  3.   

    非常支持醉马的发言,楼主的程序就是一个满汉全席!,程序不应该是这样的,同时非常欣赏醉马的思想,如果方便加我:[email protected]
      

  4.   

    参数都传过去了?sql的构造有问题没?
      

  5.   

    明白是怎么回事了,原来的是我的页面在frame中显示的,所以查询的第一页面是正常的,但是点"下页"时,由于无法获取Page参数,所以就无法正常显示了.
    问题来了,现在如何实现在同一frame也能正常显示呢?
    各位一起研究研究.
      

  6.   

    建议楼主写个TAG 组件。。
    然后,可以重复使用。
    而且,这样的代码很不容易维护。。
      

  7.   

    自己搞个bean解决.谢谢各位鼎力支持.散分