首页 > 代码库 > Java Web的分页工具类

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=http://www.mamicode.com/""+this.createFullUrl(i, this.keys)+"\" class=\"hidepage\">"+i+"</a>"); 86                 }else{ 87                     buf.append("<a href=http://www.mamicode.com/""+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=http://www.mamicode.com/""+this.createFullUrl(i, this.keys)+"\" class=\"hidepage\">"+i+"</a>"); 97                     }else{ 98                         buf.append("<a href=http://www.mamicode.com/""+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=http://www.mamicode.com/""+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=http://www.mamicode.com/""+this.createFullUrl(j, this.keys)+"\" class=\"hidepage\">"+j+"</a>");120                     }else{121                         buf.append("<a href=http://www.mamicode.com/""+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=http://www.mamicode.com/""+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的对象就可以了,参数从构造方法传入。