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的對象就可以了,參數從構造方法傳入。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM