servlet实现分页技术
关键代码:
1 //==========================分页的功能============================== 2 int pageSize = 3; 3 int pageNow = 1; 4 int rowCount = 0; 5 int pageCount = 0; 6 String sPageNow = request.getParameter("pageNow"); 7 if(sPageNow != null){ 8 pageNow = Integer.parseInt(sPageNow); 9 } 10 Connection con = null; 11 java.sql.PreparedStatement ps = null; 12 ResultSet rs = null; 13 try { 14 //加载驱动程序 15 Class.forName("com.mysql.jdbc.Driver"); 16 17 //创建数据库url 18 String url = "jdbc:mysql://localhost:3307/spdb?useSSL=false"; 19 String user = "root"; 20 String password = "root"; 21 22 //建立连接 23 con = DriverManager.getConnection(url,user,password); 24 //查询,并返回结果 25 ps = con.prepareStatement("select count(*) from users"); 26 rs = ps.executeQuery(); 27 //计算rowCount 28 if(rs.next()){ 29 rowCount = rs.getInt(1); 30 } 31 //计算pageCount 32 if(rowCount%pageSize == 0){ 33 pageCount = rowCount/pageSize; 34 }else{ 35 pageCount = rowCount/pageSize+1; 36 } 37 //查询,并返回结果 38 ps = con.prepareStatement("select * from users limit "+(pageSize*(pageNow-1))+","+pageSize); 39 rs = ps.executeQuery(); 40 //以表格形式 显示返回的数据 41 out.println("<table border=1>"); 42 out.println("<tr><th>id</th><th>name</th><th>passwd</th><th>mail</th><th>grade</th></tr>"); 43 while(rs.next()){ 44 out.println("<tr>"); 45 out.println("<td>"+rs.getInt(1)+"</td>"); 46 out.println("<td>"+rs.getString(2)+"</td>"); 47 out.println("<td>"+rs.getString(3)+"</td>"); 48 out.println("<td>"+rs.getString(4)+"</td>"); 49 out.println("<td>"+rs.getInt(5)+"</td>"); 50 out.println("</tr>"); 51 } 52 out.println("</table>"); 53 //底部的页码超链接 54 if(pageNow != 1){ 55 out.println("<a href=MainFrame?pageNow="+(pageNow-1)+">上一页</a>"); 56 } 57 for(int i=pageNow; i<=pageNow+pageSize; i++){ 58 if(i <= pageCount){ 59 out.println("<a href=MainFrame?pageNow="+i+">"+i+"</a>"); 60 } 61 } 62 if(pageNow != pageCount){ 63 out.println("<a href=MainFrame?pageNow="+(pageNow+1)+">下一页</a>"); 64 }
效果截图:
注意:
LIMIT子句可以被用于限制被SELECT语句返回的行数。
LIMIT取一个或两个数字自变量,自变量必须是非负的整数常数(当使用已预备的语句时除外)。
使用两个自变量时,第一个自变量指定返回的第一行的偏移量,第二个自变量指定返回的行数的最大值。初始行的偏移量为0(不是1)。
使用一个自变量时,该值指定从结果集合的开头返回的行数。