1.概述
数据的分页显示是Web程序的基本技术。通过简单的超链接就可以实现数据在页面上的分页显示。本实例是通过在页面上输入课程类型,查询该类型的所有数据,然后再分页显示。
2.技术要点
本实例是使用结果集ResultSet将数据表中的记录全部加载到结果集中,然后利用结果集的absolute()方法跳转到指定的记录,作为本页的首记录。通过在链接的地址中附加参数传递当前应显示的页码。
3.具体实现
(1)创建数据库操作类,定义构造方法UserDao()加载数据库驱动,定义Connection()方法创建与数据库的连接,定义selectStatic()方法执行查询操作,定义closeConnection()方法关闭数据库。详细代码请参考源码,也可以查看实例“利用SQL语句实现分页”的实现过程。
(2)创建index.jsp页面。首先,通过JavaBean标签调用数据可靠操作类UserDao,并定义在分页输出数据中使用的参数。
<%@page contentType="text/html" pageEncoding="GBK" import="java.sql.*,java.util.*,java.lang.*"%> <jsp:useBean id="selectall" scope="page" class="com.pkh.dao.UserDao"></jsp:useBean> <%! int CountPage = 0; int CurrPage = 1; int PageSize = 5; int CountRow = 0; %>
然后,根据传递的参数获取当前显示的页码,执行查询结语句,获取到结果集并定位显示数据。
<% String StrPage = (String) request.getParameter("Page"); //获取当前页面 if (StrPage == null) { CurrPage = 1; } else{ CurrPage = Integer.parseInt(StrPage); } ResultSet Rs; //定义查询结果集变量 String SQL; //定义SQL语句变量 if (v != null && !v.equals("")) { SQL = "Select * From tb_ClassList Where CType='" + v + "'"; //编写查询语句 } else { SQL = "Select * From tb_ClassList"; } Rs = selectall.selectStatic(SQL); //执行查询语句 Rs.last(); int i = 0; CountRow = Rs.getRow(); //获取查询结果集中字段数 CountPage = (CountRow / PageSize); //计算数据可以分成几页 if (CountRow % PageSize > 0) CountPage++; Rs.first(); //获取第一条数据 if (CountRow > 0) { Rs.absolute(CurrPage * PageSize - PageSize + 1); //指定跳转页码 while (i < PageSize && !Rs.isAfterLast()) { //循环输出数据 %> <tr> <td align="center" nowrap bgcolor="#FFFFFF"><span class="style3"><%=Rs.getString("CID")%></span></td> </tr> <% Rs.next(); //执行下一条 i++; } selectall.closeConnection(); //关闭数据库 } %>
最后,创建上一页、下一页和最后一页超级链接,链接到index.jsp页面,指定Page作为栏目标识,将页数作为参数值。关键代码如下:
<tr> <td width="251" height="30"> [<%=CurrPage%>/<%=CountPage%>] 每页5条 共<%=CountRow%>条记录 </td> <td width="260"><div align="right"> <% if (CurrPage > 1) { %> <a href="index.jsp?Page=<%=CurrPage - 1%>&Values=<%=v%>">上一页</a> <% } %> <% if (CurrPage < CountPage) { %> <a href="index.jsp?Page=<%=CurrPage + 1%>&Values=<%=v%>">下一页</a> <% } %> <a href="index.jsp?Page=<%=CountPage%>&Values=<%=v%>">最后一页</a></div> </td> </tr>