http://blog.csdn.net/funcreal里有一个思路,看看

解决方案 »

  1.   

    ResultSet rs = (ResultSet)request.getAttribute("rs");
    ---------第一次到该页面之前,应该还到过其它的东东里面吧(比如说action)
    要不然怎么会第一次就有request.getAttribute("rs");
    翻页后rs为空。
      

  2.   

    回复人: JK_10000(JK) ( ) 信誉:100  2004-10-16 12:42:00  得分: 0  
     
     
       ResultSet rs = (ResultSet)request.getAttribute("rs");
    ---------第一次到该页面之前,应该还到过其它的东东里面吧(比如说action)
    要不然怎么会第一次就有request.getAttribute("rs");
    翻页后rs为空。------------------------------------是啊,这是从servlet send过来的sendResultSet(req,res,rs,"/ViewLog.jsp"); public void sendResultSet(HttpServletRequest req, HttpServletResponse res,java.sql.ResultSet rs, String target)
    throws ServletException, IOException {              
    req.setAttribute("rs", rs);
    RequestDispatcher rd = getServletContext().getRequestDispatcher(target);
    rd.forward(req, res);
        }
     
      

  3.   

    <a href="ViewLog.jsp?Pages=<%=1%>">第一页</a>
    <a href="ViewLog.jsp?Pages=<%=OnPage-1%>">上一页</a>----->>>>>>
    把这些连接从ViewLog.jsp改成那个servlet就是
      

  4.   

    就是嘛,你将数据存在request里面,当你第一次显示完页面以后request生命结束,里面的东西也同时消失了,当你第二次读时不就没有数据了,当然抱空指针了,放在session里面吧
      

  5.   

    你这段代码还有问题,你在第一页显示完以后就将resultSet关闭了,下面的页面怎么得到数据,即使不关闭 ,长期占用数据库连接也是不行的,所以应该在Servlet里面将数据全部读出来以后打包成对象集合存入Session中,以后从集合中取数,而不是从resultSet里面
      

  6.   

    应该在Servlet里面将数据全部读出来以后打包成对象集合存入Session中,以后从集合中取数,而不是从resultSet里面---------------------
    谢谢回复~   ^_^有这样的实例可以参考么?   *_*
      

  7.   

    <%@ page contentType="text/html;charset=gb2312" language="java" import="java.sql.*" errorPage="errorpage.jsp" %>
    <%!
    int EveryPage=10; //每页显示的记录数;
    int OnPage=1; //当前显示的页数;
    int Total=0; //记录的总数;
    int PageCount=0; //记录的总页数;
    %>
    <html>
    <head><title>察看日志</title>
    </head>
    <% 
       String userID = (String)session.getAttribute("userID"); 
       if(userID==null){response.sendRedirect("login.jsp");}
       
       ResultSet rs = (ResultSet)request.getAttribute("rs");
    %>
    <body>
    <%
    rs.last(); //移到最后一条记录;
    Total = rs.getRow(); //记录的总数;

    if(Total%EveryPage == 0)  //计算出总的页数PageCount;
    PageCount=Total/EveryPage;
    else
    PageCount=Total/EveryPage+1; String Pages=request.getParameter("Pages");    //取得文本框输入的值;
    if(Pages!=null)
    {
    OnPage=Integer.parseInt(Pages);//把Pages转换为整型;
    //根据输入的值,判断应显示的页;
    if(OnPage>PageCount)
    {
    OnPage=PageCount;
    }
    else if(OnPage<=0)
    {
    OnPage=1;
    }
    }
    rs.absolute((OnPage-1)*EveryPage+1);//指定指针的位置;
    %>
    <center>
    记录<%=Total%>条,共<%=PageCount%>页,当前在第<%=OnPage%></font>页
    </center>
    <br/>
    <table  align="center" border=1> 
    <tr>
            <td>操作者编号</font></td>
            <td>操作时间</font></td>
            <td>操作名称</font></td>
    </tr>
    <%
    //循环显示出记录;
    for(int i=1;i<=EveryPage;i++)
    {
    %>
    <tr>
    <td><%=rs.getString("OH")%></td>
    <td><%=rs.getString("OT")%></td>
            <td><%=rs.getString("OM")%></td>
    </tr>
    <%
    if(!rs.next())//到达最后的记录时退出for循环;
    break;
    }
    //关闭对象;
    rs.close();
    %>
    </table>
    </center>
    <%
    //当前显示的是不是第一页应该显示的东西;
    if(OnPage!=1)
    {
    %>
    <br/>
    <center>
    <a href="ViewLog.jsp?Pages=<%=1%>">第一页</a>
    <a href="ViewLog.jsp?Pages=<%=OnPage-1%>">上一页</a>
    </center>
    <%
    }
    //当前显示的是不是最后一页应该显示的东西;
    if(OnPage!=PageCount)
    {
    %>
    <center>
    <a href="ViewLog.jsp?Pages=<%=OnPage+%>">下一页</a>
    <a href="ViewLog.jsp?Pages=<%=PageCount%>">最后一页</a>
    </center>
    <%
    }
    %>
    </body>
    </html>
      

  8.   

    用huguangtao的代码吧.他的代码是对的....
      

  9.   

    回复人: cocohui(断了线的风) ( ) 信誉:100  2004-10-17 08:17:00  得分: 0  
     
     
       用huguangtao的代码吧.他的代码是对的....
      
     
    -------------------------不是吧?我怎么看和我写的没什么区别??都是不好用.....   *_*
      

  10.   

    你这段代码还有问题,你在第一页显示完以后就将resultSet关闭了,下面的页面怎么得到数据,即使不关闭 ,长期占用数据库连接也是不行的,所以应该在Servlet里面将数据全部读出来以后打包成对象集合存入Session中,以后从集合中取数,而不是从resultSet里面--------------------------
    打包成对象集合?这个应该怎么做??谁来教教我哦....谢谢先....
      

  11.   

    把rs.close();放到</html>标签的后面试试?
    </body>
    </html>
    <%
    rs.close();
    %>
      

  12.   

    把rs.close();放到</html>标签的后面试试?
    </body>
    </html>
    <%
    rs.close();
    %>
    -------------------------------------
    这样不行的.....数据是存在request里面,当第一次显示完页面以后request生命结束,里面的东西也同时消失了
      

  13.   

    你这段代码还有问题,你在第一页显示完以后就将resultSet关闭了,下面的页面怎么得到数据,即使不关闭 ,长期占用数据库连接也是不行的,所以应该在Servlet里面将数据全部读出来以后打包成对象集合存入Session中,以后从集合中取数,而不是从resultSet里面--------------------------
    打包成对象集合?这个应该怎么做??谁来教教我哦....谢谢先....----------------------------还没解决,小声地再问一次....
      

  14.   

    是ResultSet rs = (ResultSet)request.getAttribute("rs");的问题,你在这句下再加上:
    request.setAttribute("rs",rs);
    就可以了。
      

  15.   

    是ResultSet rs = (ResultSet)request.getAttribute("rs");的问题,你在这句下再加上:
    request.setAttribute("rs",rs);
    就可以了。----------------------------------------不行的说....