最近写一个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