//通用字段
public int pageSize = 1;
public int nowPage = 1;
public int allCount = 1;
public int allPage = 1;
/**
* 显示分页HTML
*/
protected void showPage()
{
setPageParam();
countAllPage();
//分页URL
String url = "?"+getRequest().getQueryString();
int location = url.lastIndexOf("&n=");
if(0<location)
{
url = url.substring(0,location);
}
url+="&n=";
StringBuilder sb = new StringBuilder();
sb.append("<li><a href='"+(url+1)+"'>首页</a></li>");
sb.append("<li><a href='"+(1<nowPage ? url+(nowPage-1) : "" )+"'><<</a></li>");
sb.append("<li><a href='"+(1<nowPage ? url+(nowPage-1) : "" )+"'>上一页</a></li>");
//中间部分 页码算法 2 3 4 5 6 ...
if(3 < nowPage)
{
sb.append("<li>...</li>");
}
if(2 == nowPage)
{
sb.append("<li><a href='"+(url+(nowPage-1))+"'>"+(nowPage-1)+"</a></li>");
}
if(2<nowPage)
{
sb.append("<li><a href='"+(url+(nowPage-2))+"'>"+(nowPage-2)+"</a></li>");
sb.append("<li><a href='"+(url+(nowPage-1))+"'>"+(nowPage-1)+"</a></li>");
}
sb.append("<li>"+nowPage+"</li>");
if(nowPage+1 == allPage)
{
sb.append("<li><a href='"+(url+(nowPage+1))+"'>"+(nowPage+1)+"</a></li>");
}
if(nowPage+2 <= allPage)
{
sb.append("<li><a href='"+(url+(nowPage+1))+"'>"+(nowPage+1)+"</a></li>");
sb.append("<li><a href='"+(url+(nowPage+2))+"'>"+(nowPage+2)+"</a></li>");
}
if(nowPage+2 < allPage)
{
sb.append("<li>...</li>");
}
sb.append("<li><a href='"+(allPage>nowPage ? url+(nowPage+1) : "" )+"'>下一页</a></li>");
sb.append("<li><a href='"+(allPage>nowPage ? url+(nowPage+1) : "" )+"'>>></a></li>");
sb.append("<li><a href='"+(url+allPage)+"'>末页</a></li>");
sb.append("<li>共"+allPage+"页</li>");
page = sb.toString();
}
效果:与DZ 论坛页码相似 首页 上一页 1 2 3 4 .... 下一页 尾页 共29页.