转载自:java分页代码+css样式
下面是我自己修改的,将它写成一个工具类:
public class PageUtils {
public static final long EDIT_VIDEO_RECORD_NUMBER_PER_PAGE = 1;// 后台编辑视频页面一页最多显示的记录数
public static final long EDIT_VIDEO_BAR_TERM_NUMBER = 10;// 后台编辑视频的分页条的显示多少个阿拉佰数字让用户点
// 分页
/**
* 获取分页条 显示样式(1/4页)首页上一页1234下一页尾页
*
* @param totalNum
* 记录数量
* @param currentPage
* 当前页
* @param pageNumPerPage
* 每页显示记录数
* @param barTermNum
* 如"首页上一页1234下一页尾页"这里有只显示出1-4页,barTermNum就是四,可见的的分页项下标数
* @param param 除当前页数与每页的记录数以后的参数
* @return
*/
public static String getPageBar(long totalNum, long currentPage,
long pageNumPerPage, long barTermNum , String param) {
StringBuffer sb = new StringBuffer();
long pageCount = 0; // 页数
if(pageNumPerPage < 1){
return null;
}
sb.append("<input id=\"page\" name=\"page\" type=\"hidden\" />");
sb.append("<input id=\"pageNum\" name=\"pageNum\" type=\"hidden\" />");
String[] parametter;
if(param != null){//传进来的参数也加进去
parametter = param.split("&");
for (String eachParam : parametter) {
if(parametter == null){
continue;
}
String[] keyValue = eachParam.split("=");
if(keyValue != null && keyValue.length == 2){
sb.append("<input id=\""+ keyValue[0] + "\" name=\"" + keyValue[0] + "\" value=\"" + keyValue[1]+ "\" type=\"hidden\" />");
}
}
}
sb.append("<script>" + "function fenye(i,j){"
+ " document.getElementById('page').value = i;"
+ " document.getElementById('pageNum').value = j;"
+ " for(var i=0;;i++){"
+ " if(document.forms[i].page != null){"
+ " document.forms[i].submit();" + " break;" + " }"
+ " }" + "}"
+ " function goPage(j){pn = document.getElementById('go_page_number').value;fenye(pn,j);}"
+ "</script>");
// 计算分页总数
pageCount = totalNum / pageNumPerPage + (totalNum % pageNumPerPage == 0 ? 0 : 1);
// 当前页出局,跳转到首页
if (currentPage < 1) {
currentPage = 1;
}
else if(currentPage > pageCount){//尾页
currentPage = pageCount;
}
// 显示形如:(1/4页)
sb.append("<span>(" + currentPage + "/" + pageCount + "页)</span>");
// 显示-首页
if (currentPage >= 1) {
sb.append("<a href=\"javascript:void(0);\" οnclick=\"fenye('1','"
+ pageNumPerPage + "');\">首页</a>");
}
// 显示-上一页
if (currentPage == 1) {
sb.append("<a href=\"javascript:void(0);\" οnclick=\"fenye('1','"
+ pageNumPerPage + "');\">上一页</a>");
} else {
sb.append("<a href=\"javascript:void(0);\" οnclick=\"fenye('"
+ (currentPage - 1) + "','" + pageNumPerPage + "');\">上一页</a>");
}
// 显示-1234
long half = barTermNum / 2;//为了让点击的页码尽量显示在中间
long i = currentPage - half > 0 ? currentPage - half : 1;
for (int j = 1; j <= barTermNum && i <= pageCount; i++, j++) {
if (currentPage == i) {//使用on显示当前所处的页码
sb.append("<a class=\"on\" href=\"javascript:void(0);\" οnclick=\"fenye('"
+ i + "','" + pageNumPerPage + "');\" >" + i + "</a>");
} else {
sb.append("<a href=\"javascript:void(0);\" οnclick=\"fenye('"
+ i + "','" + pageNumPerPage + "');\">" + i + "</a>");
}
}
// 显示-下一页
if (pageCount <= 1) {
sb.append("<a href=\"javascript:void(0);\" οnclick=\"fenye('1','"
+ pageNumPerPage + "');\">下一页</a>");
} else if (currentPage == pageCount) {
sb.append("<a href=\"javascript:void(0);\" οnclick=\"fenye('"
+ (pageCount) + "','" + pageNumPerPage + "');\">下一页</a>");
} else {
sb.append("<a href=\"javascript:void(0);\" οnclick=\"fenye('"
+ (currentPage + 1) + "','" + pageNumPerPage + "');\">下一页</a>");
}
// 显示-尾页
if (pageCount <= 1) {
sb.append("<a href=\"javascript:void(0);\" οnclick=\"fenye('1','"
+ pageNumPerPage + "');\">尾页</a>");
} else if (currentPage == pageCount) {
sb.append("<a href=\"javascript:void(0);\" οnclick=\"fenye('"
+ (pageCount) + "','" + pageNumPerPage + "');\">尾页</a>");
} else {
sb.append("<a href=\"javascript:void(0);\" οnclick=\"fenye('"
+ (pageCount) + "','" + pageNumPerPage + "');\">尾页</a>");
}
sb.append(" 转<input type='text' size='2' name='go_page_number' id='go_page_number'/>页");
sb.append("<input type='button' value='GO' οnclick=\"goPage('" + pageNumPerPage + "');\"/>");
return sb.toString();
}
public static void main(String[] argv) {
// 测试数据,实际使用时,使用数据库查出总记录数total,当前页currentPage是从页面传过来的变量值
long total = 100;
long currentPage = 1;
String pageBar = PageUtils.getPageBar(total, currentPage,
PageUtils.EDIT_VIDEO_RECORD_NUMBER_PER_PAGE,//可以分离在常量类里
PageUtils.EDIT_VIDEO_BAR_TERM_NUMBER,null);
System.out.println(pageBar);
}
}
css还是用转载的文章,我自己不怎么会css和js
.page {
clear:both;
padding:10px 0;
line-height:19px;
height:19px;
}
.page span,.page a {
float:left;
margin-left:5px;
color:#666;
}
.page .lis {
float:right;
}
.page a {
border:1px solid #cccccc;
padding:0px 7px;
}
.page .on {
background:#c30101;
color:#fff;
border:1px solid #c30101;
}
这个与servlet分开,很好地应用到自己的controllor类