zoukankan      html  css  js  c++  java
  • 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的对象就可以了,参数从构造方法传入。

  • 相关阅读:
    Parse Notification for IOS
    微信回调:Activity 调用 finish()之后,该acitivity的实例并不为空
    Android Studio 使用微博SDK Demo的问题总结
    Android Activity切换动画
    分享那些坑
    TextColor java 代码
    奇怪的Bug: 点击事件穿透应用,激活桌面的另一个应用
    FragmentStatePagerAdapter VS FragmentPagerAdatper
    android:fillViewport="true"
    用两种方式获取Bitmap的不同结果
  • 原文地址:https://www.cnblogs.com/chengxuyuanxiaoye/p/3895132.html
Copyright © 2011-2022 走看看