java分页通用类

分页是个说简单就简单,说复杂页不复杂的功能。网上各种分页类多多少少都不符合自己的需求,还是自己写一个吧。

 

支持一个页面出现多个分页功能:

Java代码 

import javax.servlet.http.HttpServletRequest;


/**
 * 分页实用类
 * 
 * @author shuzheng
 * @version 2014/04/21
 * 
 */
public class Pager {

/**
* 生成简单的分页页面内容

* @param total 总记录数
* @param size 每页记录数
* @param step 最多显示分页页数
* @param page 当前页数
* @param request 请求request
* @return 分页的HTML代码
*/
public static String getSimplePages(int total, int size, int step, int page, HttpServletRequest request, String paramName) {
// 根据request获取当前url,包括参数,如果有已存在名称未paramname的参数,剔除掉,后面会追加新的参数
String url = request.getContextPath() + request.getServletPath();
String query = request.getQueryString();
if (query != null) {
String params = "";
String[] querys = query.split("&");
for (int i = 0 ; i < querys.length ; i ++) {
if (querys[i].startsWith(paramName))
continue;
if (params.equals(""))
params += querys[i];
else
params += "&" + querys[i];
}
if (!params.equals(""))
url += "?" + params;
}
// 结果html
String pages = "";


int pageCount = (int) Math.ceil((double) total / size);// 求总页数
if (pageCount == 1) {
return pages;
}
if (page > pageCount) {
page = pageCount;// 如果分页变量大总页数,则将分页变量设计为总页数
}
if (page <= 0) {
page = 1;// 如果分页变量小于1,则将分页变量设为1
}

// 显示上一页
if (page > 1) {
if (url.contains("?")) {
pages = pages.concat("<a class=\"prev\" href=\"" + url + "&" + paramName + "=" + (page - 1) + "\">上一页</a>\n");
} else {
pages = pages.concat("<a class=\"prev\" href=\"" + url + "?" + paramName + "=" + (page - 1) + "\">上一页</a>\n");
}
} else {
pages = pages.concat("<a class=\"prev\" href=\"javascript:;\" style=\"color:#ccc\">上一页</a>\n");
}
// 显示分页码
int listBegin = (page - (int) Math.floor((double) step / 2));//从第几页开始显示分页信息
        if (listBegin < 1) {
            listBegin = 1;
        }
        //显示第1页
if (listBegin >= 2) {
if (url.contains("?")) {
pages = pages.concat("<a href=\"" + url + "&" + paramName + "=1\">1</a> ... \n");
} else {
pages = pages.concat("<a href=\"" + url + "?" + paramName + "=1\">1</a> ... \n");
}
}
        //当前页数右侧还有未显示页码时
        if (pageCount - page >= page - listBegin) {
for (int i = listBegin; i < (listBegin + step); i++) {
if (i != page) {
if (url.contains("?")) {
pages = pages.concat("<a href=\"" + url + "&" + paramName + "=" + i + "\">" + i + "</a>\n");
} else {
pages = pages.concat("<a href=\"" + url + "?" + paramName + "=" + i + "\">" + i + "</a>\n");
}
} else {
pages = pages.concat("<span class=\"current\">" + i + "</span>\n");
}
}
       //显示最后1页
if (listBegin + step <= pageCount) {
if (url.contains("?")) {
pages = pages.concat(" ... <a href=\"" + url + "&" + paramName + "=" + pageCount + "\">" + pageCount + "</a>\n");
} else {
pages = pages.concat(" ... <a href=\"" + url + "?" + paramName + "=" + pageCount + "\">" + pageCount + "</a>\n");
}
}
        } else { // 显示最后剩余的几个页码
        for (int i = (pageCount-step) + 1; i <= pageCount; i++) {
if (i != page) {
if (url.contains("?")) {
pages = pages.concat("<a href=\"" + url + "&" + paramName + "=" + i + "\">" + i + "</a>\n");
} else {
pages = pages.concat("<a href=\"" + url + "?" + paramName + "=" + i + "\">" + i + "</a>\n");
}
} else {
pages = pages.concat("<span class=\"current\">" + i + "</span>\n");
}
}
        }
// 显示下一页
if (page < pageCount) {
if (url.contains("?")) {
pages = pages.concat("<a class=\"next\" href=\"" + url + "&" + paramName + "=" + (page + 1) + "\">下一页</a>\n");
} else {
pages = pages.concat("<a class=\"next\" href=\"" + url + "?" + paramName + "=" + (page + 1) + "\">下一页</a>\n");
}
} else {
pages = pages.concat("<a class=\"next\" href=\"javascript:;\" style=\"color:#ccc\">下一页</a>\n");
}
return pages;
}
}

使用方法:

 

Java代码 
public String test() {
// 分页
int total = 10; //总记录数
int size = 1; //每页记录数
int step = 7; //最多显示分页页数
int p1 = StringUtil.toInt(request.getParameter("p1")); //当前页数
int p2 = StringUtil.toInt(request.getParameter("p2")); //当前页数
int p3 = StringUtil.toInt(request.getParameter("p3")); //当前页数
int p4 = StringUtil.toInt(request.getParameter("p4")); //当前页数

return Pager.getSimplePages(total, size, step, p1, request, "p1") + "\n\n<br/><br/>\n\n" + 
Pager.getSimplePages(total, size, step, p2, request, "p2") + "\n\n<br/><br/>\n\n" + 
Pager.getSimplePages(total, size, step, p3, request, "p3") + "\n\n<br/><br/>\n\n" + 
Pager.getSimplePages(total, size, step, p4, request, "p4");
}

结果如图所示:

 



 


  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完全本人原创,敬请改进,盗版不纠! CLASS: com.liangyu.biz.PageShow (业务逻辑) param: PageShow: private Page 实体 Method: private void page(); 给 Page 中的 param pageCount (总页数) 赋值 public List showPage(int pageSize,int page,ArrayList<Object> list) 得到当前分页的内容 public boolean checkList() 检测当前分页内容是否为空 public Page getP() 取得当前分页实体对象 public void setP(Page p) 设置当前分页实体对象 CLASS: com.liangyu.po.Page (实体) param: private int pageSize; //页大小 private int pageCount; //总页数 private ArrayList<Object> list=new ArrayList<Object>(); //数据总内容 private int page; //当前页码 private int dataCount; //数据总行数 简述 此包可根据需要不同设置 在线分页 与 离线分页 使用在线分页 办法 直接调用 public List showPage(int pageSize,int page,ArrayList<Object> list) 方法即可。 使用离线分页 办法 调用 public boolean checkList() 判断 当前实体 中 param: list 是否为空 空则返回 false 不为空 则返回 true 如果空 则将 数据库中查询出来的 ArrayList 作为 参数 传给public List showPage(int pageSize,int page,ArrayList<Object> list) 方法即可。如果不为空 则调用 public Page getP() 得到实体之后 调用 public ArrayList<Object> getList() 方法 得到 实体中的 数据集合 作为参数 传给 public List showPage(int pageSize,int page,ArrayList<Object> list) 方法即可。 得到总页数 办法 使用 public Page getP() 方法得到实体之后 使用 public int getPageCount() 方法得到总页数 注意 在使用 此包时 只能存在一个 com.liangyu.po.Page (实体) 对象

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值