最近写一个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 οnclick=\"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的对象就可以了,参数从构造方法传入。

转载于:https://www.cnblogs.com/chengxuyuanxiaoye/p/3895132.html

Java Web的分页工具类相关推荐

  1. ssm整合oracle分页,java实现ssm分页工具类及其使用方法

    分享一下我现在所使用的分页工具类,不像网上的那么规范 纯属自己总结根据逻辑敲出来的,基于mysql的limit来做分页.有不对的地方还望大佬指出,直接上代码 PageTools package com ...

  2. java分页的工具类,java分页工具类

    PageBean-分页 package com.soyea.util; import java.io.Serializable; import java.util.List; /** * 分页工具类 ...

  3. java ajax翻页_分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解

    [博客园cnblogs笔者m-yb原创, 转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708] htt ...

  4. java手动分页工具类

    开发中,碰到了一些奇葩的业务逻辑,无法使用框架自身的分页功能,想了很久最后还是决定自己手写一个分页工具类,以备后续参考和使用,下面直接上代码, /*** 手动分页类* @param datas* @p ...

  5. java项目常用的工具类

    前言 在开发过程中,我们会遇到很多繁琐或者棘手的问题,但是,这些问题往往会存在一些便捷的工具类,来简化我们的开发,下面是我工作中经常使用到的工具类 常用工具类 日期工具类 import java.te ...

  6. 一个Java Web后台任务执行工具的设计与实现

    一个Java Web后台任务执行工具的设计与实现 提到后台任务,最容易想到的恐怕就是Java 中的Timer或者大名鼎鼎的开源定时器Quartz,但是,从本质讲,他们都是定时器,以时间间隔严格的进行间 ...

  7. java图形验证码生成工具类

    转载自   java图形验证码生成工具类 生成验证码效果       ValidateCode.java 验证码生成类 package cn.dsna.util.images; import java ...

  8. PageUtils后端常用分页工具类

    工具类代码 package com.john.test.utils;import java.util.List;/*** @Author jiang* @Version 1.0* 分页工具类*/ pu ...

  9. java图片缩放工具类,一个JAVA图形缩放处置工具类

    一个JAVA图形缩放处理工具类 调用的例子 import java.io.FileOutputStream; import java.io.IOException; import javax.imag ...

最新文章

  1. C#访问远程主机资源的方法
  2. optee应用程序中malloc函数的原理介绍
  3. 技术动态 | 知识图谱上的实体链接
  4. VR究竟多奇幻?eSmart邀你共赴一场VR奇幻之旅!
  5. D1net阅闻:Google Analytics增AI自动化分析功能
  6. java程序性能优化_怎么做JAVA程序性能优化
  7. 云小课|聊一聊DRS的数据过滤特性
  8. 盗企鹅号发娱乐八卦稿60天收益7.5万元?腾讯回应了...
  9. python 迭代器的方法_python--魔法方法,属性和迭代器
  10. 剑指offer第二版(C++实现)
  11. 静态ip设置失败解决办法
  12. 高端啤酒正在失去年轻人
  13. Windows连接ssh时 Permissions for ‘.pem‘ are too open解决方法
  14. _EPROCESS结构简单了解!
  15. 如何打开一个嵌在PC端应用的web窗口的控制台?
  16. Microsoft office professional plus2010
  17. oracle++卸载grid,GRID卸载及重新安装
  18. Shell脚本编程入门
  19. 【Matlab系列】调频信号FM相干解调与非相干解调原理及其实现
  20. MySQL NOW() 是否包含夏令时

热门文章

  1. 创业负债累累 | 失败了的我还如何翻盘?是天台见! 我的故事还只是从这件事开始...
  2. 一个简单的BP神经网络matlab程序(附函数详解)
  3. 电脑任务栏跑到右边去了_手把手教你用U盘安装Win10系统?学会了再也不用去跑电脑店了...
  4. 零点起飞学php下载,零点起飞学PHP(附光盘)/零点起飞学编程
  5. 小分子php蛋白,如何研究小分子抑制蛋白降解途径? - 分子生物 - 小木虫 - 学术 科研 互动社区...
  6. matlab中cuda编程中分配grid和block dimension的时候的注意事项
  7. check whether edge in face indices.
  8. linux 修改php配置,PHP部署时的几个配置修改说明
  9. string类有可以调换方向的函数吗_关于String类的split()方法
  10. 推荐系统组队学习——WideDeep