JAVA分页代码

001 package com.util;
002  
003 import java.io.Serializable;
004 import java.util.ArrayList;
005 import java.util.Enumeration;
006 import java.util.List;
007 import java.util.StringTokenizer;
008  
009 import javax.servlet.http.HttpServletRequest;
010  
011 /**
012  * 描述显示结果集的页面
013  */
014 public class Page implements Serializable {
015  
016     /**
017      * 空白页面
018      */
019     public static final Page EMPTY_PAGE = new Page(00);
020  
021     /**
022      * 结果集列表
023      */
024     List objects;
025     /**
026      * 开始记录号,从0开始
027      */
028     public int start;
029  
030     /**
031      * 结束记录号
032      */
033     public int end;
034  
035     /**
036      * 显示在页面开始记录号,从1开始
037      */
038     // public int viewStart;
039     /**
040      * 显示在页面结束记录号
041      */
042     // public int viewEnd;
043     /**
044      * 是否有上一页的开关
045      */
046     public boolean hasPrevious; // ok
047  
048     /**
049      * 上一页的页码
050      */
051     public int previousPageNumber; // ok
052  
053     /**
054      * 是否有下一页的开关
055      */
056     public boolean hasNext; // ok
057  
058     /**
059      * 下一页的页码
060      */
061     public int nextPageNumber; // ok
062  
063     /**
064      * 一共有多少行记录
065      */
066     public int total; // ok
067  
068     /**
069      * 一共有多少页
070      */
071     public int totalPage; // ok
072  
073     /**
074      * 当前是第几页
075      */
076     public int currentPageNumber; // ok
077  
078     /**
079      * 每页有多少行
080      */
081     public int pageSize; // ok
082  
083     /**
084      * 构造器,创建页面
085      *
086      * @param: l 结果集
087      * @param: s 开始记录号,从0开始
088      */
089     public Page(int total, int s) {
090         // objects = new ArrayList(l);
091         this.currentPageNumber = s / PageConfig.PAGE_SIZE + 1;
092         this.pageSize = PageConfig.PAGE_SIZE;
093         // System.out.println(pageSize+":size");
094         // this.total = objects.size();
095         this.total = total;
096         if (total == 0) {
097             this.currentPageNumber = 0;
098         else {
099             autoCalculate();
100         }
101     }
102  
103     public Page(int total, int s, int pageSize) {
104         this.pageSize = pageSize;
105         this.currentPageNumber = s;
106         this.total = total;
107         if (total == 0) {
108             this.currentPageNumber = 0;
109         else {
110             autoCalculate();
111         }
112     }
113  
114     public Page(ArrayList l, int s) {
115         objects = new ArrayList(l);
116         this.currentPageNumber = s / PageConfig.PAGE_SIZE + 1;
117         this.pageSize = PageConfig.PAGE_SIZE;
118         // System.out.println(pageSize+":size");
119         this.total = objects.size();
120         // this.total = total;
121         if (total == 0) {
122             this.currentPageNumber = 0;
123         else {
124             autoCalculate();
125         }
126     }
127  
128     /**
129      * 自动计算,根据当前页、页大小、总行数计算出其它属性的值
130      */
131     public void autoCalculate() {
132         start = (currentPageNumber - 1) * pageSize;
133         end = start + pageSize - 1;
134         if (end >= total) {
135             end = total - 1;
136         }
137         totalPage = (total + pageSize - 1) / pageSize;
138         if (currentPageNumber == 1) {
139             hasPrevious = false;
140             previousPageNumber = 1;
141         else {
142             hasPrevious = true;
143             previousPageNumber = currentPageNumber - 1;
144         }
145         if (currentPageNumber == totalPage) {
146             hasNext = false;
147             nextPageNumber = totalPage;
148         else {
149             hasNext = true;
150             nextPageNumber = currentPageNumber + 1;
151         }
152     }
153  
154     /**
155      * 获得结果集
156      *
157      * @return: List 结果集
158      */
159     public List getList() {
160         return objects;
161     }
162  
163     /**
164      * 获得显示在页面的开始记录号,从1开始
165      *
166      * @return: int 显示在页面的开始记录号
167      */
168     public int getStart() {
169         return start;
170     }
171  
172     /**
173      * 获得显示在页面的结束记录号
174      *
175      * @return: int 显示在页面的结束记录号
176      */
177     public int getEnd() {
178         return end;
179     }
180  
181     /**
182      * 是否有下一页
183      *
184      * @return: boolean 是否有下一页的开关
185      */
186     public boolean hasNextPage() {
187         return hasNext;
188     }
189  
190     /**
191      * 是否有上一页
192      *
193      * @return: boolean 是否有上一页的开关
194      */
195     public boolean hasPreviousPage() {
196         return start > 0;
197     }
198  
199     /**
200      * 获得上一页的页码
201      *
202      * @return: int 上一页的页码
203      */
204     public int getPreviousPageNumber() {
205         return previousPageNumber;
206     }
207  
208     /**
209      * 获得下一页的页码
210      *
211      * @return: int 下一页的页码
212      */
213     public int getNextPageNumber() {
214         return nextPageNumber;
215     }
216  
217     /**
218      * 获得结果集中记录总行数
219      *
220      * @return: int 一共有多少行记录
221      */
222     public int getTotal() {
223         return total;
224     }
225  
226     /**
227      * 获得总页数
228      *
229      * @return: int 一共有多少页
230      */
231     public int getTotalPage() {
232         return totalPage;
233     }
234  
235     /**
236      * 获得当前页码
237      *
238      * @return: int 当前页码
239      */
240     public int getCurrentPageNumber() {
241         return currentPageNumber;
242     }
243  
244     /**
245      * 获得每页多少行记录
246      *
247      * @return: int 页大小
248      */
249     public int getPageSize() {
250         return pageSize;
251     }
252  
253     /**
254      * 获得下一页在结果集中开始的记录号,从0开始
255      *
256      * @return: int 下一页在结果集中开始的记录号
257      */
258     public int getStartOfNextPage() {
259         return start + this.total;
260     }
261  
262     /**
263      * 获得上一页在结果集中开始的记录号,从0开始
264      *
265      * @return: int 下一页在结果集中开始的记录号
266      */
267     public int getStartOfPreviousPage() {
268         return Math.max(start - this.total, 0);
269     }
270  
271     /**
272      * 获得当前页包括的记录行数
273      *
274      * @return: int 当前页包括的记录行数
275      */
276     public int getSize() {
277         return this.total;
278     }
279  
280     /**
281      * 判断当前页面是否是空白页面,如果当前页面是空白页面, 返回true,否则,返回false
282      *
283      * @return: boolean 当前页面是否是空白页面
284      */
285     public boolean isEmpty() {
286         return this.total == 0;
287     }
288  
289     public String toAjaxString() {
290         return "[CurrentPageNumber:" this.getCurrentPageNumber() + "]"
291                 "[Total:" this.getTotal() + "]" "[PageSize:"
292                 this.getPageSize() + "]" "[TotalPage:"
293                 this.getTotalPage() + "]";
294     }
295  
296     public static String getParas(HttpServletRequest request,
297             String exceptionParamNames) {
298         String params = "";
299         Enumeration e = request.getParameterNames();
300         outer: while (e.hasMoreElements()) {
301             String key = (String) e.nextElement();
302             StringTokenizer st = new StringTokenizer(exceptionParamNames, ",");
303             while (st.hasMoreTokens()) {
304                 String exceptionName = st.nextToken();
305                 if (key.equals(exceptionName)) {
306                     continue outer;
307                 }
308             }
309             String value = request.getParameter(key);
310             params += "&" + key + "=" + value;
311         }
312         return params;
313     }
314 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值