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");
}

结果如图所示:

 



 


更多推荐

java分页通用类