第一條記錄是所有記錄中的第幾條記錄,假設每頁的第一條記錄是總記錄中的第position條記錄,那麼position=(ShowPage - 1)×PageSize+1。比如這個例子,如果要顯示第一頁,就要計算出第一頁中的第一條記錄是總的記錄中的第一條記錄;如果要顯示第二頁,就要計算出第二頁中的第一條記錄是總的記錄中的第四條記錄;如果要顯示第三頁,就要計算出第一頁中的第一條記錄是總的記錄中的第九條記錄。
<%! int pageSize=4;int pageCount;int showPage;%><!-- 串連資料庫並從資料庫中調取記錄--><%Connection con;Statement sql;ResultSet rs;try{Class.forName("com.mysql.jdbc.Driver"); }catch(ClassNotFoundException e){}try{con=DriverManager.getConnection("jdbc:mysql://localhost:3306/message board","root","123456");sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);//返回可滾動的結果集 rs=sql.executeQuery("select * from messageinfo");//將遊標移到最後一行 rs.last();//擷取最後一行的行號 int recordCount=rs.getRow();//計算分頁後的總數 pageCount=(recordCount%pageSize==0)?(lastRow/pageSize):(lastRow/pageSize+1);//擷取使用者想要顯示的頁數:String integer=request.getParameter("showPage");if(integer==null){integer="1";}try{showPage=Integer.parseInt(integer);}catch(NumberFormatException e){showPage=1;}if(showPage<=1){showPage=1;}if(showPage>=pageCount){showPage=pageCount;}//如果要顯示第showPage頁,那麼遊標應該移動到的position的值是:int position=(showPage-1)*pageSize+1;//設定遊標的位置rs.absolute(position);//用for迴圈顯示本頁中應顯示的的記錄for(int i=1;i<=pageSize;i++){%><table><tr> <th><%=rs.getString("UserName") %></th><td>發表於:<%=rs.getString("datetime") %></td></tr><tr ><th colspan="3"><textarea><%=rs.getString("content") %></textarea></th></tr></table><%rs.next();}rs.close();con.close();}catch(Exception e){e.printStackTrace();}%><br>第<%=showPage %>頁(共<%=pageCount %>頁)<br><a href="ShowMessages.jsp?showPage=1">首頁</a><a href="ShowMessages.jsp?showPage=<%=showPage-1%>">上一頁</a><%//根據pageCount的值顯示每一頁的數字並附加上相應的超連結for(int i=1;i<=pageCount;i++){%><a href="ShowMessages.jsp?showPage=<%=i%>"><%=i%></a><%}%><a href="ShowMessages.jsp?showPage=<%=showPage+1%>">下一頁</a><a href="ShowMessages.jsp?showPage=<%=pageCount%>">末頁</a><!-- 通過表單提交使用者想要顯示的頁數 --><form action="" method="get">跳轉到第<input type="text" name="showPage" size="4">頁<input type="submit" name="submit" value="跳轉"></form>