`
feigme
  • 浏览: 155546 次
  • 性别: Icon_minigender_1
  • 来自: 球面世界
社区版块
存档分类
最新评论

分页公用类PaginationSupport

    博客分类:
  • Java
阅读更多

最近看了 robbin等大侠写的分页代码,深有感触 

robbin.iteye.com/blog/14657

虽然自己也写过分页,但是在代码的分离方面作的还是不够,尝试按照他们的方法改了下

java 代码
  1. package cn.feigme.pagination;   
  2.   
  3. import java.util.List;   
  4.   
  5. /**  
  6.  * @author feigme  
  7.  */  
  8. public class PaginationSupport {   
  9.        
  10.     //默認頁面顯示紀錄的數目   
  11.     public final static int PAGESIZE = 10;   
  12.        
  13.     //頁面實際顯示的紀錄數目   
  14.     private int pageSize = PAGESIZE;   
  15.        
  16.     //頁面上的索引數    
  17.     private int pageIndexCount = 5;   
  18.        
  19.     //總頁數   
  20.     private int pageCount ;   
  21.        
  22.     //紀錄實例集合   
  23.     private List items;   
  24.        
  25.     //總紀錄數   
  26.     private int totalCount;   
  27.        
  28.     //保存當前索引的紀錄數   
  29.     private int[] indexs = new int[0];   
  30.        
  31.     //紀錄起始位   
  32.     private int startIndex = 1;   
  33.        
  34.     /*********************構造函數*************************/  
  35.     //兩參數的構造函數   
  36.     public PaginationSupport(List items,int totalCount){   
  37.         setPageSize(PAGESIZE);   
  38.         setTotalCount(totalCount);   
  39.         setItems(items);   
  40.         setStartIndex(1);   
  41.     }   
  42.        
  43.     //三參數的構造函數   
  44.     public PaginationSupport(List items,int totalCount,int startIndex){   
  45.         setPageSize(PAGESIZE);   
  46.         setTotalCount(totalCount);   
  47.         setItems(items);   
  48.         setStartIndex(startIndex);   
  49.     }   
  50.        
  51.     //四條件的構造函數   
  52.     public PaginationSupport(List items,int totalCount,int startIndex,int pageSize){   
  53.         setPageSize(pageSize);   
  54.         setTotalCount(totalCount);   
  55.         setItems(items);   
  56.         setStartIndex(startIndex);   
  57.     }   
  58.        
  59.     //五條件的構造函數   
  60.     public PaginationSupport(List items,int totalCount,int startIndex,int pageSize,int pageIndexCount){   
  61.         setPageIndexCount(pageIndexCount);   
  62.         setPageSize(pageSize);   
  63.         setTotalCount(totalCount);   
  64.         setItems(items);   
  65.         setStartIndex(startIndex);         
  66.     }   
  67.   
  68.     /***********************get set方法**************************/  
  69.     public int[] getIndexs() {return indexs;}   
  70.     public void setIndexs(int[] indexs) {this.indexs = indexs;}   
  71.   
  72.     public List getItems() {return items;}   
  73.     public void setItems(List items) {this.items = items;}   
  74.   
  75.     public int getPageSize() {return pageSize;}   
  76.     public void setPageSize(int pageSize) {this.pageSize = pageSize;}   
  77.   
  78.     public int getStartIndex() {return startIndex;}   
  79.     public void setStartIndex(int startIndex) {   
  80.         if(startIndex >= this.pageCount) this.startIndex = this.pageCount;   
  81.         else if(startIndex<=0this.startIndex = 1;   
  82.         else this.startIndex = startIndex;   
  83.         if(getPageIndexCount()>this.pageCount){   
  84.             setPageIndexCount(this.pageCount);   
  85.         }   
  86.            
  87.         indexs = new int[getPageIndexCount()];   
  88.         int istart = this.startIndex-getPageIndexCount()/2+(getPageIndexCount()%2>0?0:1);;   
  89.         int iend = this.startIndex+getPageIndexCount()/2;   
  90.         if(istart<=0){   
  91.             istart =1;   
  92.             iend = getPageIndexCount();   
  93.         }   
  94.         if(iend>this.pageCount){   
  95.             iend = this.pageCount;   
  96.             istart = this.pageCount - getPageIndexCount()+1;   
  97.         }   
  98.         for (int i = 0; i < iend-istart+1; i++) {      
  99.              indexs[i]= istart+i;   
  100.         }    
  101.     }   
  102.   
  103.     public int getTotalCount() {return totalCount;}   
  104.     public void setTotalCount(int totalCount) {   
  105.         if(totalCount>0){   
  106.             this.totalCount = totalCount;   
  107.             this.pageCount = totalCount/pageSize + (totalCount%pageSize>0?1:0);   
  108.         }else{   
  109.             this.totalCount = 0;   
  110.         }   
  111.     }   
  112.   
  113.     public int getPageCount() {return pageCount;}   
  114.     public void setPageCount(int pageCount) {this.pageCount = pageCount ;}   
  115.   
  116.     public int getPageIndexCount() {return pageIndexCount;}   
  117.     public void setPageIndexCount(int pageIndexCount) {this.pageIndexCount = pageIndexCount;}   
  118.        
  119.     //下一頁   
  120.     public int getNextIndex() {      
  121.         int nextIndex = getStartIndex() + 1;    
  122.         if (nextIndex > pageCount)      
  123.             return pageCount;      
  124.         else     
  125.             return nextIndex;      
  126.     }      
  127.      
  128.     //上一頁   
  129.     public int getPreviousIndex() {      
  130.         int previousIndex = getStartIndex() - 1;      
  131.         if (previousIndex <= 0)      
  132.             return 1;      
  133.         else     
  134.             return previousIndex;      
  135.     }   
  136.        
  137.     //第一頁   
  138.     public int getFirstIndex(){   
  139.         return 1;   
  140.     }   
  141.        
  142.     //最後一頁   
  143.     public int getLastIndex(){   
  144.         return getPageCount();   
  145.     }   
  146.   
  147. }   

做了个简单的测试

java 代码
  1. public static void main(String[] args) {   
  2.   
  3.         List items = new ArrayList();   
  4.         for (int i = 0; i < 10; i++) {   
  5.             items.add("------------->" + i);   
  6.         }   
  7.   
  8.         int totalCount = 105;   
  9.         int pageSize = 10;   
  10.         int startIndex = 11;   
  11.         int pageIndexCount = 6;   
  12.   
  13.         PaginationSupport ps = new PaginationSupport(items, totalCount,   
  14.                 startIndex, pageSize, pageIndexCount);   
  15.   
  16.         for (int i = 0; i < ps.getItems().size(); i++) {   
  17.             System.out.println(ps.getItems().get(i));   
  18.         }   
  19.         System.out.println("共有" + ps.getTotalCount() + "條紀錄");   
  20.         System.out.println("當前第" + ps.getStartIndex() + "頁");   
  21.         System.out.println("共" + ps.getPageCount() + "頁");   
  22.         System.out.println("第一頁" + ps.getFirstIndex());   
  23.         System.out.println("上一頁" + ps.getPreviousIndex());   
  24.   
  25.         for (int i = 0; i < ps.getIndexs().length; i++) {   
  26.             System.out.println(ps.getIndexs()[i]);   
  27.         }   
  28.   
  29.         System.out.println("下一頁" + ps.getNextIndex());   
  30.         System.out.println("最後一頁" + ps.getLastIndex());   
  31.   
  32.     }  
写的比较匆忙,只把公用类给出来~
分享到:
评论
1 楼 aixinnature 2009-02-06  
写得很不错啊

相关推荐

    Java公用分页类 Java公用分页类

    Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类

    java分页工具类

    page.java java分页工具类

    java分页工具类(非常实用)

    "java分页工具类" Java分页工具类是Java语言中的一种常用工具类,用于实现分页功能。下面是该工具类的详细知识点: 1. 分页工具类的作用 分页工具类的主要作用是将大量数据分页显示,以便用户更方便地浏览和操作...

    公共分页工具类

    提供一个可以公用的分页工具类,适用于各种分页

    ASP分页通用类 asp分页

    在ASP(Active Server Pages)环境中,实现分页功能通常需要编写自定义的分页类。下面我们将详细探讨ASP分页的原理、分页类的构建以及如何在实际项目中应用。 首先,理解分页的基本原理。分页的核心思想是通过限制...

    mvc分页辅助类

    本文将深入探讨一个名为"Mvc分页辅助类"的知识点,这个辅助类是一个已经完全封装好的工具,可以直接在项目中使用。 标题中的"Mvc分页辅助类"指的是一个专门用于实现ASP.NET MVC应用程序中分页功能的类库。它通常...

    分页工具类分页工具类

    在IT领域,分页工具类是数据库操作和Web开发中常用的一种组件,它主要用于处理大量数据的展示,避免一次性加载所有数据导致的性能问题。在实际应用中,分页可以帮助用户更加高效地浏览和管理信息,提高用户体验。...

    php分页类工具类

    这是一个功能强大,并且易于扩展的分页类,该类将分页的各个元素单独分开模块化,用户可以随心所欲的拼接出自己想要的分页效果,更是添加了控制分页样式的功能,可以让你独立设置分页各元素的样式,也集成了集中已经...

    一个很好的分页类php分页类

    2. **实例化分页类**:将查询结果总数和每页记录数传递给分页类。 3. **设置当前页**:根据URL或请求参数设定当前页码。 4. **获取分页数据**:调用分页类的方法获取当前页的数据。 5. **渲染页面**:根据获取的...

    java分页设计

    根据实现机制的不同,常见的Java分页技术可以分为两大类: - **客户端分页**:通过JavaScript等前端技术实现在浏览器端对数据进行分页展示。这种方式简单易行,但可能会导致大量的数据在网络上传输。 - **服务端...

    php封装的page分页类.zip

    这个"Page"分页类的实现可能包括以下几个核心组件: 1. **初始化**:类的构造函数接收必要的参数,如总记录数、每页显示的条目数、当前页数等,用于计算总的页数和其他相关属性。 2. **计算总页数**:根据总记录数...

    e路JS分页样式类,e路JS分页样式类

    "e路JS分页样式类"是一个专门针对JavaScript实现的分页样式库,它提供了美观的界面和友好的用户体验。在这个主题中,我们将深入探讨JavaScript分页的实现原理、设计模式以及如何利用CSS来定制样式。 首先,...

    java 分页工具类 java 分页工具类

    java 分页工具类 java 分页工具类java 分页工具类 java 分页工具类java 分页工具类 java 分页工具类java 分页工具类 java 分页工具类

    Pager分页实体类

    公共的Pager分页实体类,封装一些常规方法,可直接使用。

    java分页工具类,以及基于Struts,Spring,mybatis,jsp中分页的调用及实现

    ### Java分页工具类及其在Struts、Spring、MyBatis和JSP中的应用 #### 一、Java分页概述 在开发Web应用程序时,为了提高用户体验并减轻服务器压力,通常会采用分页技术来展示大量的数据记录。本文将详细介绍一个...

    asp.net 分页类

    ASP.NET 分页类是用于处理大量数据并分批次显示的关键技术,它允许用户在Web应用程序中轻松地浏览大型数据集,提高用户体验,并减轻服务器负担。相比于Visual Studio (VS) 自带的分页控件,自定义分页类提供了更高的...

    asp分页类,套用方便,收藏

    "asp分页类"就是用来实现这种功能的代码库或组件。 分页类通常包含以下几个核心知识点: 1. **参数处理**:分页类需要接收一些参数,如当前页码、每页显示条目数、总记录数等。这些参数的正确处理是分页功能的基础...

    SSH集成+分页抽象类+自定义标签 == 分页数据效果

    `Page_Pro`可能是一个实现了分页功能的Java类或模块,包含了具体的分页算法和接口调用。 总的来说,本项目通过SSH框架的集成,实现了高效的后端业务处理。通过创建分页抽象类,我们优化了代码结构,提高了代码复用...

    强大的分页实体类以及页面代码(注释详细)

    本资源提供了“强大的分页实体类(page.java)”和“分页页面代码(page.jsp)”,这两个文件旨在简化分页实现过程,通过详细注释确保开发者能够快速理解和应用。 首先,我们来详细了解一下`page.java`。这是一个...

    分页 jsp 分页类 java

    首先,我们需要创建一个分页类,这个类将包含关于分页的基本信息,如当前页、总页数、每页显示的记录数以及总记录数等。以下是一个简单的分页类的示例: ```java public class Pagination { private int current...

Global site tag (gtag.js) - Google Analytics