在实际应用中,如果从数据库中查询的记录特别的多,甚至超过了显示屏的显示范围,这个时候可将结果进行分页显示。
假设总记录数为intRowCount,每页显示的数量为inPageSize,总页数为intPageCount,那么总页数的计算公式如下: 如果:(intRowCount%intPageSize)>0,则intPageCount=intRowCount/intPageSize+1 如果:(intRowCount%intPageSize)=0,则intPageCount=intRowCount/intPageSize 翻页后显示intPage页的内容,将记录指针移动到(intPage-1)*intPageSize+1
<%@ page import="java.sql.*" %> <%@ page contentType="text/html" pageEncoding="UTF-8" %> <html> <head> <meta http-equiv="Content-Type" content="text/html;charest=UTF-8"> <title>JSP分页浏览</title> </head> <body> <div align="center"> 分页显示记录内容 <hr> <table border="1" bgcolor="cccfff" align="center"> <tr> <th>学号</th> <th>班级</th> <th>姓名</th> <th>性别</th> <th>年龄</th> </tr> <% String DBDRIVER="org.gjt.mm.mysql.Driver"; //我用的mysql数据库 String DBURL="jdbc:mysql://localhost:3306/example"; String DBUSER="root"; String DBPASS="mysqladmin"; String sql="select * from paging"; int intPageSize; //一页显示的记录数 int intRowCount; //记录总数 int intPageCount; //总页数 int intPage; //待显示页码 int i; String strPage; intPageSize=5; //设置一页显示的记录数 //取得待显示页码 strPage=request.getParameter("page"); if(strPage==null){ //没有page这个属性 intPage=1; }else{ intPage=java.lang.Integer.parseInt(strPage); if(intPage<1){ intPage=1; } } Connection conn=null; Statement stmt=null; ResultSet rs=null; Class.forName(DBDRIVER); conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS); stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); rs=stmt.executeQuery(sql); rs.last(); //光标指向查询结果集的最后一条记录 intRowCount=rs.getRow(); //获取记录总数 intPageCount=(intRowCount+intPageSize-1)/intPageSize; //计算总页数 if(intPage>intPageCount){ //调整待显示的页码 intPage=intPageCount; } if(intPageCount>0){ rs.absolute((intPage-1)*intPageSize+1); //将记录指针定位在待显示页的第一天记录上 } //显示数据 i=0; while(i<intPageSize&&!rs.isAfterLast()){ %> <tr> <td><%=rs.getString("stuNumber") %></td> //从数据库读取记录 <td><%=rs.getString("stuBanji") %></td> <td><%=rs.getString("stuName") %></td> <td><%=rs.getString("stuSex") %></td> <td><%=rs.getString("stuAge") %></td> </tr> <% rs.next(); i++; } %> </table> <hr> <div align="center"> 第<%=intPage %>页 共<%=intPageCount %>页 <% if(intPage>1){ %> <a href="pageBreak.jsp?page=<%=intPage-1%>">上一页</a> <% } //下一页 if(intPage<intPageCount){ %> <a href="pageBreak.jsp?page=<%=intPage+1%>">下一页</a> <% } rs.close(); stmt.close(); conn.close(); %> </div> </div> </body> </html>
数据库代码为:
create database example; create table paging( stuNumber varchar(15), stuBanji varchar(10), stuName varchar(50), stuSex varchar(4), stuAge int ); INSERT INTO paging(stuNumber,stuBanji,stuName,stuSex,stuAge) VALUES ('2012040101207','24010105','鲍礼彬','男',23);