Java Web的分页工具类

最近写一个java web项目,以前分页的工具类,都是基础架构的人写好了的。也没有去细看,现在遇到这个状况。

就整理一下思路,自己写了一个分页的工具类。写的不好之处,还望斧正。

下面是我的代码:

PageUtil.java

  1 package util;
  2
  3 import java.util.Map;
  4
  5 /**
  6  * 分页工具类
  7  * @author lyh
  8  *
  9  */
 10 public class PageUtil {
 11     private int total;    //总数
 12     private int element;  //每夜显示数
 13     private String url;   //访问的url
 14     private Map<String,Object> keys;      //记忆参数
 15     private int p;       //当前页数
 16     private int page;   //总页数
 17
 18     /**
 19      * 构造传参数
 20      * @param total
 21      * @param element
 22      * @param url
 23      * @param keys
 24      * @param p
 25      */
 26     public PageUtil(int total,int element,String url,Map<String,Object> keys,int p){
 27         this.total = total;
 28         this.element = element;
 29         this.url = url;
 30         this.keys = keys;
 31         this.p = p;
 32         if(this.total != 0 && this.total%this.element == 0){
 33             this.page = this.total/this.element;
 34         }else{
 35             this.page = this.total/this.element+1;
 36         }
 37     }
 38
 39     /**
 40      * 拼接分页访问的url
 41      * @param p
 42      * @param keys
 43      * @return 拼接好的带参数url
 44      */
 45     private String createFullUrl(int p,Map<String,Object> keys){
 46         StringBuffer buf = new StringBuffer(this.url);
 47         buf.append("?p="+p);
 48
 49         if(keys != null){
 50             buf.append(this.createParamUrl(keys));
 51         }
 52         return buf.toString();
 53     }
 54
 55     /**
 56      * 参数的url形式("&dhgks=12&...")
 57      * @param keys
 58      * @return 拼接好的参数url
 59      */
 60     private String createParamUrl(Map<String,Object> keys){
 61         StringBuffer buf = new StringBuffer();
 62
 63         if(keys != null){
 64             for(String key : keys.keySet()){
 65                 buf.append("&"+key+"="+keys.get(key));
 66             }
 67             return buf.toString();
 68         }else{
 69             return "";
 70         }
 71
 72     }
 73
 74     /**
 75      * 生成分页代码
 76      * @return
 77      */
 78     public String showPage(){
 79         StringBuffer buf = new StringBuffer("<div class=\"footpage\">");
 80
 81         if(this.page<=5){
 82             //5页显示
 83             for(int i=1;i<=this.page;i++){
 84                 if(i==this.p){
 85                     buf.append("<a href=\""+this.createFullUrl(i, this.keys)+"\" class=\"hidepage\">"+i+"</a>");
 86                 }else{
 87                     buf.append("<a href=\""+this.createFullUrl(i, this.keys)+"\" class=\"viewpage\">"+i+"</a>");
 88                 }
 89             }
 90         }else{
 91             //超出5页显示
 92             if(this.p==1){
 93                 //如果当前页是第一页的情况
 94                 for(int i=1;i<=5;i++){
 95                     if(i==this.p){
 96                         buf.append("<a href=\""+this.createFullUrl(i, this.keys)+"\" class=\"hidepage\">"+i+"</a>");
 97                     }else{
 98                         buf.append("<a href=\""+this.createFullUrl(i, this.keys)+"\" class=\"viewpage\">"+i+"</a>");
 99                     }
100                 }
101                 //超过5页部分省略
102                 buf.append("<span>...</span>");
103             }else{
104                 //当前页不是第一页
105                 //显示首页
106                 buf.append("<a href=\""+this.createFullUrl(1, this.keys)+"\" class=\"viewpage\">首页</a>");
107                 buf.append("<span>...</span>");
108                 int cou =0;
109
110                 //判断五页是否超出范围
111                 if((this.p+5)>this.page){
112                     cou = this.page;
113                 }else{
114                     cou = this.p+5;
115                 }
116
117                 for(int j =this.p;j<cou;j++){
118                     if(j==this.p){
119                         buf.append("<a href=\""+this.createFullUrl(j, this.keys)+"\" class=\"hidepage\">"+j+"</a>");
120                     }else{
121                         buf.append("<a href=\""+this.createFullUrl(j, this.keys)+"\" class=\"viewpage\">"+j+"</a>");
122                     }
123                 }
124
125                 //判断是否还有页需要省略
126                 if(cou != this.page){
127                     buf.append("<span>...</span>");
128                 }
129             }
130             //显示尾页
131             buf.append("<a href=\""+this.createFullUrl(this.page, this.keys)+"\" class=\"viewpage\">尾页</a>");
132
133         }
134
135         buf.append("到<input type=\"text\" id=\"go\"/>页<button onclick=\"javascript:if(document.getElementById(‘go‘).value.match(/^([0-9])*$/)) {window.location=‘"+this.url+"?p=__PAGE__"+this.createParamUrl(this.keys)+"‘.replace(‘__PAGE__‘,document.getElementById(‘go‘).value);} else {return false;}\">确定</button>");
136         buf.append("共"+this.page+"页");
137         buf.append("</div>");
138         return buf.toString();
139     }
140 }

使用方法直接实例化一个PageUtil的对象就可以了,参数从构造方法传入。

Java Web的分页工具类

时间: 2024-10-25 01:51:46

Java Web的分页工具类的相关文章

Java Web返回JSON工具类

Web项目中经常涉及到AJAX请求返回JSON和JSONP数据.JSON数据在服务器端和浏览器端传输,本质上就是传输字符串,不过这个字符串符合JSON语法格式.浏览器端会按照普通文本的格式接收JSON字符串,最终JSON字符串转成JSON对象通过JavaScript实现.目前部分浏览器(IE9以下浏览器没有提供)和常用的JS库都提供了JSON序列化和反序列化的方法,如jQuery的AJAX请求可以指定返回的数据格式,包括text.json.jsonp.xml.html等. Web服务器端只要把J

个人常用工具类:分页工具类

import java.io.Serializable; import java.util.List; // 分页工具类 public class PageBean implements Serializable { private static final long serialVersionUID = -8741766802354222579L; private int pageSize = 5; // 每页显示多少条记录 private int currentPage = 1; //当前第

分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解

[博客园cnblogs笔者m-yb原创, 转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708]https://www.cnblogs.com/m-yb/p/9986309.html分页功能的实现可以使用各种插件, 笔者今日闲来无事, 写了 分页工具类 前后台代码 Java JavaScript 的 实现及思路梳理.供大家参考.分页功能的需求一般有: 当前页/每页条数/总页数/总记录数/起始记录数/数

java中常用的工具类(三)

继续分享java中常用的一些工具类.前两篇的文章中有人评论使用Apache 的lang包和IO包,或者Google的Guava库.后续的我会加上的!谢谢支持IT江湖 一.连接数据库的综合类 Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53

Java常用正则表达式验证工具类RegexUtils.java

原文:Java常用正则表达式验证工具类RegexUtils.java 源代码下载地址:http://www.zuidaima.com/share/1550463379442688.htm Java 表单注册常用正则表达式验证工具类,常用正则表达式大集合. 1. 电话号码 2. 邮编 3. QQ 4. E-mail 5. 手机号码 6. URL 7. 是否为数字 8. 是否为中文 9. 身份证 10. 域名 11. IP .... 常用验证应有尽有! 这的确是您从事 web 开发,服务器端表单验证

c#分页工具类,完美实现List分页

using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace ProjectProgress.BLL { /// <summary> /// 分页工具类 /// </summary> /// <typeparam name="T"></typeparam> public class PagingUtil<T

java中常用的工具类(二)

下面继续分享java中常用的一些工具类,希望给大家带来帮助! 1.FtpUtil Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71

java中常用的工具类

一.String工具类 package com.itjh.javaUtil; import java.util.ArrayList; import java.util.List; /** * * String工具类. <br> * * @author 宋立君 * @date 2014年06月24日 */ public class StringUtil { private static final int INDEX_NOT_FOUND = -1; private static final St

分享万能java字符串编码转换工具类

代码下载地址:http://www.zuidaima.com/share/1795356301560832.htm 原文:分享万能java字符串编码转换工具类 package com.zuidaima.util; import java.io.UnsupportedEncodingException; /** * 转换字符串的编码 */ public class ChangeCharset { /** 7位ASCII字符,也叫作ISO646-US.Unicode字符集的基本拉丁块 */ publ