jsp分页问题

java 代码
 
  1. 这里我以从一个用户表中查询用户信息为例演示其用法:  
  2. 1.将PageResultSet.java文件编译成class文件并放入你的Web应用程序的WEB-INF/classes/com/youngor/util目录下,可以对包名做相应修改。  
  3.   
  4. 2.在你的Action类中:  
  5. 先从业务处理逻辑类中取出数据(ArrayList或Vector格式)  
  6. UserBO userBO=new UserBO();  
  7. Collection data=userBO.findUsers();//示例方法  
  8. 再得到当前页curPage和每页记录数pageSize  
  9. int curPage = Integer.parseInt(request.getParameter(“cur_page“));  
  10. int pageSize=15;  
  11. 然后生成PageResultSet对象  
  12. PageResultSet dataList = new PageResultSet(data, curPage, pageSize);  
  13. request.setAttribute("usersList", usersList);  
  14.   
  15. 3.在你的JSP页面中:  
  16.    <%  
  17.           PageResultSet pageResultSet=(PageResultSet)request.getAttribute("usersList");  
  18.    ArrayList usersList=(ArrayList)pageResultSet.getData();  
  19.    for(int i=0;i  
  20.    {  
  21.             UserEO userEO=(UserEO)usersList.get(i);%>  
  22.        
  23.         <%=userEO.getUsername()%>  
  24.         <%=userEO.getName()%>  
  25.         <%=userEO.getPhoneNumber()%>  
  26.         <%=userEO.getEmailBox()%>  
  27.         <%=userEO.getAddress()%>  
  28.         <%=userEO.getPostcode()%>  
  29.          
  30.     <%}%>  
  31.      
  32.    
  33.   
  34.   
  35. <%=pageResultSet.getToolBar("list_users.do")%>  
  36.   
  37.   
  38. 注意:  
  39. 1、如果你觉得分页工具栏不能满足你的要求,  
  40. q网管(Evp;育H9p,  
  41. 可以用PageResultSet类中的公共方法  
  42. first()、previous()、next()、last()定制自己的工具栏,并且,你还可以在PageResultSet中定义多个样式的工具栏;  
  43. 2、getToolBar(String url)方法接受带查询字符串的参数,比如“list_users.do?class_id=1“。  
  44.   
  45.   
  46.   
  47. //PageResultSet.java  
  48. package com.youngor.util;  
  49.   
  50. import java.util.*;  
  51. /** 
  52.  * 
  53.  
  54. Title: PageResultSet 
  55.  
  56.  * 
  57.  * 
  58.  
  59. Description:分页类 
  60.  
  61.  * 
  62.  * 
  63.  
  64. Copyright: Copyright (c) 2004 
  65.  
  66.  * 
  67.  * 
  68.  
  69. Company:youngor-studio(http://www.54youngor.com) 
  70.  
  71.  * @author:伍维波 
  72.  * @version 1.0 
  73.  */  
  74. public class PageResultSet {  
  75.     /** 
  76.      * 分页数据 
  77.      */  
  78.     private Collection data = null;  
  79.     /** 
  80.      * 当前页 
  81.      */  
  82.     private int curPage;  
  83.     /** 
  84.      * 每页显示的记录数 
  85.      */  
  86.     private int pageSize;  
  87.     /** 
  88.      * 记录行数 
  89.      */  
  90.     private int rowsCount;  
  91.     /** 
  92.      * 页数 
  93.      */  
  94.     private int pageCount;  
  95.     public PageResultSet(Collection data) {  
  96.         this.data = data;  
  97.         this.curPage = 1;  
  98.         this.pageSize = 10;  
  99.         this.rowsCount = data.size();  
  100.         this.pageCount = (int) Math.ceil((double) rowsCount / pageSize);  
  101.     }  
  102.     public PageResultSet(Collection data, int curPage) {  
  103.         this.data = data;  
  104.         this.curPage = curPage;  
  105.         this.pageSize = 10;  
  106.         this.rowsCount = data.size();  
  107.         this.pageCount = (int) Math.ceil((double) rowsCount / pageSize);  
  108.     }  
  109.     public PageResultSet(Collection data, int curPage, int pageSize) {  
  110.         this.data = data;  
  111.         this.curPage = curPage;  
  112.         this.pageSize = pageSize;  
  113.         this.rowsCount = data.size();  
  114.         this.pageCount = (int) Math.ceil((double) rowsCount / pageSize);  
  115.     }  
  116.     /** 
  117.      * getCurPage:返回当前的页数 
  118.      * 
  119.      * @return int 
  120.      */  
  121.     public int getCurPage() {  
  122.         return curPage;  
  123.     }  
  124.     /** 
  125.      * getPageSize: 
  126. .vf]Y5{p}BuC"W 
  127. 返回分页大小 
  128.      * 
  129.      * @return int 
  130.      */  
  131.     public int getPageSize() {  
  132.         return pageSize;  
  133.     }  
  134.   
  135.     /** 
  136.      * getRowsCount:8NsAX教t$nT"TQ返回总记录行数 
  137.      * 
  138.      * @return int 
  139.      */  
  140.     public int getRowsCount() {  
  141.         return rowsCount;  
  142.     }  
  143.     /** 
  144.      * getPageCount:返回总页数 
  145.      * 
  146.      * @return int 
  147.      */  
  148.     public int getPageCount() {  
  149.         return pageCount;  
  150.     }  
  151.     /** 
  152.      * 第一页 
  153.      * @return int 
  154.      */  
  155.     public int first() {  
  156.         return 1;  
  157.     }  
  158.     /** 
  159.      * 最后一页 
  160.      * @return int 
  161.      */  
  162.     public int last() {  
  163.         return pageCount;  
  164.     }  
  165.     /** 
  166.      * 上一页 
  167.      * @return int 
  168.      */  
  169.     public int previous() {  
  170.         return (curPage - 1 < 1) ? 1 : curPage - 1;  
  171.     }  
  172.     /** 
  173.      * 下一页 
  174.      * @return int 
  175.      */  
  176.     public int next() {  
  177.         return (curPage + 1 > pageCount) ? pageCount : curPage + 1;  
  178.     }  
  179.     /** 
  180.      * 第一页 
  181.      * @return boolean 
  182.      */  
  183.     public boolean isFirst() {  
  184.         return (curPage==1)?true:false;  
  185.     }  
  186.     /** 
  187.      * 第一页 
  188.      * @return boolean 
  189.      */  
  190.     public boolean isLast() {  
  191.         return (curPage==pageCount)?true:false;  
  192.     }  
  193.     /** 
  194.      * 获取当前页数据 
  195.      * @return Collection 
  196.      */  
  197.     public Collection getData() {  
  198.         Collection curData = null;  
  199.         if (data != null) {  
  200.             int start = (curPage - 1) * pageSize;  
  201.             int end = 0;  
  202.             if (start + pageSize > rowsCount)  
  203.                 end = rowsCount;  
  204.             else  
  205.                 end = start + pageSize;  
  206.             ArrayList arrayCurData = new ArrayList();  
  207.             ArrayList arrayData = null;  
  208.             Vector vectorCurData = new Vector();  
  209.             Vector vectorData = null;  
  210.             boolean isArray = true;  
  211.             if (data instanceof ArrayList) {  
  212.                 arrayData = (ArrayList) data;  
  213.                 isArray = true;  
  214.             } else if (data instanceof Vector) {  
  215.                 vectorData = (Vector) data;  
  216.                 isArray = false;  
  217.             }  
  218.             for (int i = start; i < end; i++) {  
  219.                 if (isArray) {  
  220.                     arrayCurData.add(arrayData.get(i));  
  221.                 } else {  
  222.                     vectorData.add(vectorData.elementAt(i));  
  223.                 }  
  224.             }  
  225.             if (isArray) {  
  226.                 curData = (Collection) arrayCurData;  
  227.             } else {  
  228.                 curData = (Collection) vectorCurData;  
  229.             }  
  230.         }  
  231.         return curData;  
  232.     }  
  233.     /** 
  234.      * 获取工具条 
  235.      * @return String 
  236.      */  
  237.     public String getToolBar(String fileName){  
  238.         String temp="";  
  239.         if(fileName.indexOf("?")==-1)  
  240.         {  
  241.             temp="?";  
  242.         }  
  243.         else  
  244.         {  
  245.             temp="&";  
  246.         }  
  247.         String str=" 
  248. ";  
  249.         str+=" 
  250.  
  251. ";  
  252.         if(isFirst())  
  253.             str+="首页 上一页 ";  
  254.         else  
  255.         {  
  256.             str+="首页 ";  
  257.             str+="上一页 ";  
  258.         }  
  259.         if(isLast())  
  260.             str+="下一页 尾页 ";  
  261.         else  
  262.         {  
  263.             str+="下一页 ";  
  264.             str+="尾页 ";  
  265.         }  
  266.         str+=" 共"+rowsCount+"条记录 ";  
  267.         str+=" 转到 
  268. ";  
  269.         return str;  
  270.     }  
  271. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值