对页码进行分页

Posted johnzzz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对页码进行分页相关的知识,希望对你有一定的参考价值。

 

  /**
     * 分页页码
     * @param totalcount 记录总数
     * @param num 每页记录数
     * @param index 当前页码
     * @param paramstr 参数串&隔开,如:a=1&b=2
     * @param instate 当第二页码与第一页不连续时,中间的替换字符串,空为不需要
     * @return
     */
    public static Map<String,Object> pages(int totalcount,int num,int index,String paramstr,String instate){
        
        int half=3;
        
        Map<String,Object> result=new HashMap<String,Object>();
        result.put("page", "");
        
        if(totalcount<1){
            result.put("code", "1");
            result.put("msg", "totalcount错误");
            return result;
        }
        
        if(num<1){
            result.put("code", "2");
            result.put("msg", "num错误");
            return result;
        }
        
        if(index<1)
            index=1;
        
        int total=totalcount/num;
        if(totalcount%num!=0)
            total+=1;
        
        if(index>total)
            index=total;
        
        int leftm=((index-half)-1)*-1;
        if(leftm<0)
            leftm=0;
        
        int rightm=(index+half)-total;
        if(rightm<0)
            rightm=0;
        
        int left=index-half;
        if(left<1)
            left=1;
        
        int right=index+half;
        if(right>total)
            right=total;
        
        List<Integer> plist=new ArrayList<Integer>();
        for(int i=left;i<=right;i++){
            plist.add(i);
        }
        
        int f=plist.get(0);
        int l=plist.get(plist.size()-1);
        
        int lend=f-rightm;
        if(lend<1)
            lend=1;
        
        
        for(int i=f-1;i>=lend;i--){
            plist.add(0, i);
        }
        
        
        int rend=l+leftm;
        if(rend>total)
            rend=total;
        
        
        for(int i=l+1;i<=rend;i++){
            plist.add(i);
        }
        
        
        if(instate.length()>0){
            
            f=plist.get(0);
            l=plist.get(plist.size()-1);
            if(f>1)
                plist.add(0,1);
            
            if(l<total)
                plist.add(total);
        
        }
        
        
        List<Map<String,Object>> pagelist=new ArrayList<Map<String,Object>>();
        Map<String,Object> pg=null;
        for(int i=0;i<plist.size();i++){
            
            if(instate.length()>0 && i==1){
                if(plist.get(i)>2){
                    pg=new HashMap<String,Object>();
                    pg.put("value", "");//参数传递
                    pg.put("page", instate);//页码显示内容
                    pg.put("btn", "0");//是否是页码按钮
                    pg.put("idx", "0");//是否当前页码
                    
                    pagelist.add(pg);
                }
            }
            
            pg=new HashMap<String,Object>();
            String vl=paramstr;
            if(vl.length()>0)
                vl+="&";
            
            vl+="page="+plist.get(i);
            pg.put("value", vl);
            pg.put("page", plist.get(i)+"");
            pg.put("btn", "1");
            pg.put("idx", "0");
            if(plist.get(i)==index)
                pg.put("idx", "1");
            
            pagelist.add(pg);
            
            if(instate.length()>0 && i==plist.size()-2){
                if(plist.get(i)<total-1){
                    pg=new HashMap<String,Object>();
                    pg.put("value", "");
                    pg.put("page", instate);
                    pg.put("btn", "0");
                    pg.put("idx", "0");
                    
                    pagelist.add(pg);
                }
            }
        }
        
        int pre=index-1;
        if(pre<1)
            pre=1;
        
        int next=index+1;
        if(next>total)
            next=total;
        
        Map<String,Object> map=new HashMap<String,Object>();
        map.put("pagelist", pagelist);//页码集合
        map.put("pagenum", num+"");//每页记录数
        map.put("index", index+"");//当前页码
        map.put("pre", pre+"");//当前页码上一页
        map.put("next", next+"");//当前页码下一页
        map.put("first", "1");//第一页
        map.put("last", total+"");//最后一页
        
        
        
        result.put("code", "0");
        result.put("msg", "");
        result.put("page", map);    
        
        return result;
    }

 

以上是关于对页码进行分页的主要内容,如果未能解决你的问题,请参考以下文章

javaEE 初步实现分页

关于vue+Element-ui项目分页刷新不停留在当前页码bug解决

jquery pagination分页 页码显示出来的原理

Web分页页码的制作

java jsp分页页码问题?

Servlet分页查询