一个简单分页的实例

1.由前端页面发送Ajax请求至服务器端.
   
代码
  1.          function QueryList(no){   
  2.             var url="getXML.do";   
  3.             var pars="pageNo="+no;   
  4.             var ajax=new Ajax.Request(url,{   
  5.             method:'get',   
  6.             parameters:pars,   
  7.             onComplete:showResponse   
  8.             });   
  9.     
<script type="text/javascript">render_code();</script>

 

   

代码
  1.    //回调   
  2.    function showResponse(request){   
  3.   
  4. var parser=new MyXmlParser();   
  5. parser.load(request);   
  6. var dataList=parser.itemList;   
  7.         var pageList=parser.pageList;   
  8.         showTable(dataList,pageList);   
  9.   
<script type="text/javascript">render_code();</script>
   这里用到的是prototype-1.4.0.js中的Ajax对象.
  2.服务器端处理程序到数据库查询数据并生成xml档返回.
  
代码
  1.     StringBuffer resultXML = new StringBuffer();   
  2.         int pageNo = new Integer(request.getParameter("pageNo")).intValue();   
  3.            
  4.         try {   
  5.             resultXML.append("<?xml version='1.0' encoding='gb2312'?>");   
  6.             resultXML.append("<ajax-response>/n");   
  7.             resultXML.append("<root>/n");   
  8.   
  9.             Pagination page = new Pagination(request, 100);   
  10.             List list = this.getTestList(page.getStart(), page.getPageSize());   
  11.             for (int i = 0; i < list.size(); i++) {   
  12.                 TestBean bean = (TestBean) list.get(i);   
  13.                 resultXML.append("<data>/n");   
  14.                 resultXML   
  15.                         .append("/t<id>" + bean.getId().toString() + "</id>/n");   
  16.                 resultXML.append("/t<name>" + bean.getName() + "</name>/n");   
  17.                 resultXML.append("/t<sex>" + bean.getSex() + "</sex>/n");   
  18.                 resultXML.append("/t<age>" + bean.getAge().toString()   
  19.                         + "</age>/n");   
  20.                 resultXML.append("</data>/n");   
  21.             }   
  22.   
  23.             resultXML.append("<pagination>/n");   
  24.             resultXML.append("/t<total>" + page.getTotal() + "</total>/n");   
  25.             resultXML.append("/t<start>" + page.getStart() + "</start>/n");   
  26.             resultXML.append("/t<end>" + page.getEnd() + "</end>/n");   
  27.             resultXML.append("/t<pageno>" + page.getPageNo() + "</pageno>/n");   
  28.             resultXML.append("</pagination>/n");   
  29.   
  30.             resultXML.append("</root>/n");   
  31.             resultXML.append("</ajax-response>");   
  32.         } catch (Exception e) {   
  33.             e.printStackTrace();   
  34.         }   
  35.         writeResponse(request, response, resultXML.toString());   
  36.   
  37.     
<script type="text/javascript">render_code();</script>

 

3.在Ajax响应方法中对xml解析并生成表格显示到页面.

代码
  1.   //显示数据   
  2.          function showTable(dataList,pageList){   
  3.                     try{   
  4.                             //清单部分   
  5.                             var bodyPanel=$("bodyPanel");   
  6.                             var tab = document.createElement("table");   
  7.                             tab.className="datagrid";   
  8.                             tab.id="myTable";   
  9.                                
  10.                             bodyPanel.replaceChild(tab,bodyPanel.firstChild)   
  11.                                
  12.                             var headerrow = tab.insertRow(0);   
  13.                                 
  14.                             createNode(headerrow,'th','header','id');   
  15.                             createNode(headerrow,'th','header','姓名');   
  16.                             createNode(headerrow,'th','header','职业');   
  17.                             createNode(headerrow,'th','header','工资');   
  18.                                
  19.                             for(var i=0;i<dataList.length;i++){   
  20.                                 var row=tab.insertRow(i+1);   
  21.                                 row.className="rows";   
  22.                                 for(var j=0;j<4;j++){   
  23.                                     var col=row.insertCell(j);   
  24.                                     col.innerHTML=dataList[i][j];   
  25.                                 }   
  26.                             }   
  27.                                
  28.                                
  29.                             //分页部分   
  30.                             var total=parseInt(pageList[0][0]);   
  31.                             var start=parseInt(pageList[0][1]);   
  32.                             var end=parseInt(pageList[0][2]);   
  33.                             var current=parseInt(pageList[0][3]);   
  34.                                
  35.                             var c1_HTML='显示 '+(1+start)+' 到 '+end+' 笔,共 '+total+' 笔';   
  36.                             var c2_HTML='';   
  37.                                
  38.                             if(start>0){   
  39.                                 var prvNo=current-1;   
  40.                                 c2_HTML+='<a href="javascript:QueryList('+prvNo+')">[上一页] </a>';   
  41.                             }else{   
  42.                                 c2_HTML+='[上一页] ';   
  43.                             }   
  44.                             var totalPage=parseInt(total/10);   
  45.                             if(total%10!=0){   
  46.                                 totalPage++;   
  47.                             };   
  48.                             for(var i=1; i <=totalPage; i++){   
  49.                                     if(i == 2 && current-6 > 1){   
  50.                                         c2_HTML+='...';   
  51.                                         i = current- 6;   
  52.                                     } else if(i == current + 6 && current +6<totalPage){   
  53.                                         c2_HTML+='...';   
  54.                                         i = totalPage - 1;   
  55.                                     } else{   
  56.                                         if(current==i){   
  57.                                             c2_HTML+='['+current+'] ';   
  58.                                         }else{   
  59.                                             c2_HTML+='<a href="javascript:QueryList('+i+')">'+i+'</a>'+' ';   
  60.                                         }   
  61.                                     }   
  62.                             }   
  63.                                
  64.                             if(current<totalPage){   
  65.                                 var nextNo=current+1;   
  66.                                 c2_HTML+='<a href="javascript:QueryList('+nextNo+')">[下一页]</a>';   
  67.                             }else{   
  68.                                 c2_HTML+='[下一页]';   
  69.                             }   
  70.                             var pagintion = document.createElement("table");   
  71.                             pagintion.className="footer";   
  72.                             var rightDiv=document.createElement('div');   
  73.                             rightDiv.setAttribute("align","right");   
  74.                                
  75.                             var row=pagintion.insertRow(0);   
  76.                             var col_1=row.insertCell(0);   
  77.                             var col_2=row.insertCell(1);   
  78.                                
  79.                             col_1.innerHTML=c1_HTML;   
  80.                             rightDiv.innerHTML=c2_HTML;   
  81.                             col_2.appendChild(rightDiv);   
  82.                             var footPanel=$("footPanel");   
  83.                             footPanel.replaceChild(pagintion,footPanel.firstChild);   
  84.                         }catch(e){   
  85.                             alert("error");   
  86.                         }   
  87.                         highlightTableRows("myTable");   
  88.             }//end showTable   
  89.   
  90.     
<script type="text/javascript">render_code();</script>

 

其中还有用到的分页对象Pagination ,及页面的xml解析对象MyXmlParser这里就不贴code出来了.附件中有Demo.war包和project文件.感兴趣的朋友可以下载来看看.

测试环境如下:
JDK:1.5
开发工具:Eclipse3.1
部署服务器:Tomcat5.5

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,下面是一个 Java 示例代码,实现了分页查询的功能。 首先,你需要准备好数据库连接和执行 SQL 语句所需的工具。这里我们使用 JDBC 来连接数据库并执行查询。 ```java import java.sql.*; public class PagingExample { // JDBC 驱动名及数据库 URL static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost:3306/test"; // 数据库的用户名与密码,请根据自己的数据库设置填写 static final String USER = "root"; static final String PASS = "password"; public static void main(String[] args) { Connection conn = null; Statement stmt = null; try { // 注册 JDBC 驱动 Class.forName(JDBC_DRIVER); // 打开链接 System.out.println("连接数据库..."); conn = DriverManager.getConnection(DB_URL, USER, PASS); // 执行查询 System.out.println(" 实例化Statement 对象..."); stmt = conn.createStatement(); String sql; sql = "SELECT * FROM employees LIMIT 10 OFFSET 20"; ResultSet rs = stmt.executeQuery(sql); // 展开结果集数据库 while(rs.next()) { // 通过字段检索 int id = rs.getInt("id"); String name = rs.getString("name"); String job = rs.getString("job_title"); // 输出数据 System.out.print("ID: " + id); System.out.print(", 名字: " + name); System.out.print(", 职位: " + job); System.out.print("\n"); } // 完成后关闭 rs.close(); stmt.close(); conn.close(); } catch(SQLException se) { // 处理 JDBC 错误 se.printStackTrace(); } catch(Exception e) ### 回答2: 分页查询是指根据指定的条件查询数据库中的数据,并将查询结果按照固定的页数进行分页展示。我将用Java语言来实现这个功能。 首先,我们需要定义一个方法,传入参数包括页码、每页显示的数据条数和查询条件等。方法的返回值为一个包含查询结果的列表。 接下来,我们需要根据传入的页码和每页显示的数据条数计算出要查询的数据的起始索引和结束索引。可以利用公式:起始索引 = (页码 - 1) * 每页显示的数据条数,结束索引 = 起始索引 + 每页显示的数据条数。 然后,利用JDBC连接数据库,执行查询语句并将结果存储在ResultSet对象中。可以通过拼接SQL语句的方式,将查询条件、起始索引和结束索引传入数据库进行查询。 接下来,使用循环遍历ResultSet对象,将查询结果封装成Java对象,并添加到一个列表中。 最后,返回查询结果列表。 以下是一个简单的示例代码: ```java import java.sql.*; import java.util.ArrayList; import java.util.List; public class PaginationQuery { public static List<User> query(int currentPage, int pageSize, String condition) { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; List<User> userList = new ArrayList<>(); try { // 建立与数据库的连接 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password"); // 计算起始索引和结束索引 int startIndex = (currentPage - 1) * pageSize; int endIndex = startIndex + pageSize; // 构建SQL语句 String sql = "SELECT * FROM user WHERE " + condition + " LIMIT ?, ?"; // 预编译SQL语句 ps = conn.prepareStatement(sql); ps.setInt(1, startIndex); ps.setInt(2, endIndex); // 执行查询 rs = ps.executeQuery(); // 遍历ResultSet对象,将结果封装成Java对象 while (rs.next()) { User user = new User(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); // ... userList.add(user); } } catch (SQLException e) { e.printStackTrace(); } finally { // 关闭资源 try { rs.close(); ps.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } // 返回查询结果列表 return userList; } public static void main(String[] args) { int currentPage = 2; int pageSize = 10; String condition = "age > 18"; List<User> userList = query(currentPage, pageSize, condition); for (User user : userList) { System.out.println(user); } } } class User { private int id; private String name; // ... // 省略getter和setter方法 } ``` 以上就是用Java编写分页查询的简单示例。当我们调用query方法时,传入当前页码、每页显示的数据条数和查询条件,即可获取到符合条件的分页查询结果。 ### 回答3: 在Java中编写一个分页查询的方法,可以分为以下几个步骤: 1.获取总记录数:根据查询条件获取满足条件的记录总数,可以通过SQL语句或者其他途径获取。 2.计算总页数:根据每页显示的记录数和总记录数,可以计算出总页数。可以使用如下代码计算总页数: ```java int pageSize = 10; // 每页显示的记录数 int totalRecords = getTotalRecords(); // 获取总记录数 int totalPages = (int) Math.ceil((double) totalRecords / pageSize); // 计算总页数 ``` 3.处理当前页码:根据用户传入的页码,计算出需要查询的记录在数据库中的起始位置。可以使用如下代码计算出起始位置: ```java int currentPage = 1; // 用户指定的当前页码 int startIndex = (currentPage - 1) * pageSize; // 查询记录的起始位置 ``` 4.执行分页查询:根据起始位置和每页显示的记录数,执行数据库查询操作,获取当前页的记录。 ```java List<Record> records = getRecords(startIndex, pageSize); // 执行数据库查询操作,获取当前页的记录 ``` 5.返回查询结果:将查询结果返回给调用者,可以通过列表、分页对象或其他形式返回。 ```java return records; // 将查询到的记录返回 ``` 以上就是用Java编写一个简单分页查询的方法。可以根据具体需求进行修改和扩展,例如加入排序、查询条件等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值