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)。
使用一个自变量时,该值指定从结果集合的开头返回的行数。
posted @ 2016-04-11 14:15  oSHYo  阅读(635)  评论(0编辑  收藏  举报