首页 > 代码库 > 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的对象就可以了,参数从构造方法传入。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。