jsp实现分页显示记录

àì夳堔傛蜴生んèń 2022-09-19 10:41 375阅读 0赞
  1. 最近这几天在做留言板的过程中,遇到了一个问题。先看一张截图:
  2. ![SouthEast][]
  3. 这是随便在一个新闻的留言页面截的图,假如留言条数太多,那整个页面得排好长好长,这就直接给用户造成了麻烦、不舒服的感受,所以,解决这个问题,通常采用分页显示的方法。
  4. 要把页面显示方式设计成这样的方式,通常需要用到这几个基本变量:pageSize(每个页面所显示的记录数)、pageCount(一共有多少个页面)、showPage(目前显示第几页)、recordCount(总的记录数),为了方便理解,画了一张图:
  5. ![SouthEast 1][]
  6. 如果想要把页面显示做成这样的效果,在这张图中pageSize=4pageCount=3,showPage=1,recordCount=12。思路是,如果要显示那个页面,就要先算出来每个页面**第一条记录**是所有记录中的第几条记录,假设每页的第一条记录是总记录中的第position条记录,那么position=(ShowPage - 1)×PageSize+1。比如上图这个例子,如果要显示第一页,就要计算出第一页中的第一条记录是总的记录中的第一条记录;如果要显示第二页,就要计算出第二页中的第一条记录是总的记录中的第四条记录;如果要显示第三页,就要计算出第一页中的第一条记录是总的记录中的第九条记录。
  7. JSP中的核心代码为如下(用的数据库为MySQL):
  8. <%! int pageSize=4;
  9. int pageCount;
  10. int showPage;
  11. %>
  12. <!-- 连接数据库并从数据库中调取记录-->
  13. <%
  14. Connection con;
  15. Statement sql;
  16. ResultSet rs;
  17. try{Class.forName("com.mysql.jdbc.Driver");
  18. }catch(ClassNotFoundException e){
  19. }
  20. try{con=DriverManager.getConnection("jdbc:mysql://localhost:3306/message board","root","123456");
  21. sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
  22. //返回可滚动的结果集
  23. rs=sql.executeQuery("select * from messageinfo");
  24. //将游标移到最后一行
  25. rs.last();
  26. //获取最后一行的行号
  27. int recordCount=rs.getRow();
  28. //计算分页后的总数
  29. pageCount=(recordCount%pageSize==0)?(lastRow/pageSize):(lastRow/pageSize+1);
  30. //获取用户想要显示的页数:
  31. String integer=request.getParameter("showPage");
  32. if(integer==null){
  33. integer="1";
  34. }
  35. try{showPage=Integer.parseInt(integer);
  36. }catch(NumberFormatException e){
  37. showPage=1;
  38. }
  39. if(showPage<=1){
  40. showPage=1;
  41. }
  42. if(showPage>=pageCount){
  43. showPage=pageCount;
  44. }
  45. //如果要显示第showPage页,那么游标应该移动到的position的值是:
  46. int position=(showPage-1)*pageSize+1;
  47. //设置游标的位置
  48. rs.absolute(position);
  49. //用for循环显示本页中应显示的的记录
  50. for(int i=1;i<=pageSize;i++){
  51. %>
  52. <table>
  53. <tr>
  54. <th><%=rs.getString("UserName") %></th>
  55. <td>发表于:<%=rs.getString("datetime") %></td>
  56. </tr>
  57. <tr >
  58. <th colspan="3"><textarea><%=rs.getString("content") %></textarea></th>
  59. </tr>
  60. </table>
  61. <%
  62. rs.next();
  63. }
  64. rs.close();
  65. con.close();
  66. }
  67. catch(Exception e){
  68. e.printStackTrace();}
  69. %>
  70. <br>
  71. 第<%=showPage %>页(共<%=pageCount %>页)
  72. <br>
  73. <a href="ShowMessages.jsp?showPage=1">首页</a>
  74. <a href="ShowMessages.jsp?showPage=<%=showPage-1%>">上一页</a>
  75. <% //根据pageCount的值显示每一页的数字并附加上相应的超链接
  76. for(int i=1;i<=pageCount;i++){
  77. %>
  78. <a href="ShowMessages.jsp?showPage=<%=i%>"><%=i%></a>
  79. <% }
  80. %>
  81. <a href="ShowMessages.jsp?showPage=<%=showPage+1%>">下一页</a>
  82. <a href="ShowMessages.jsp?showPage=<%=pageCount%>">末页</a>
  83. <!-- 通过表单提交用户想要显示的页数 -->
  84. <form action="" method="get">
  85. 跳转到第<input type="text" name="showPage" size="4">页
  86. <input type="submit" name="submit" value="跳转">
  87. </form>
  88. 运行结果如下(为了简化代码,已经将网页布局的相关代码去掉,此处仅指分页浏览功能):
  89. ![SouthEast 2][]

可以跳转到首页、上一页、下一页、末页,可以手动在数字上指定页数,也可以在输入框中输入要显示的页数。







发表评论

表情:
评论列表 (有 0 条评论,375人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JSP 显示数据 (Oracle)

    要实现分页,首先我们要做的就是如何来编写SQL语句,网上也有很多,大家可以搜一下.在这里,我们使用一种比较常用的方式来编写SQL语句。代码如下: ----分页显示

    相关 JSP显示数据

    最近在做一个小程序,用到了JSP的分页。虽然只是最简单的分页,但是还是花了我不少时间。这看似简单的功能,实现起来还是稍微有点麻烦。实现分页功能,需要知道数据的总个数,每页应该有

    相关 jsp+MySQL实现

    分页是JavaEE学习中我们常用的一个知识,在起初我的学习中,当时有许多不理解,从jsp的分页,再到servlet,然后hibernate中的分页,逐渐的熟悉理解这个知识。由于