思想:当查出来的数据很多时(例如:超过10万),采用精简的默认的样式,也就是指只显示首尾页上一页 和下一页。当总页数不大于9页时,把所有的具体页码以按钮形式显示出来,页码按钮如果等于当前则显于背景色。当总页数大于9页,分页样式以另外的样式显示,当当前页小于3页或大于等于后两页时,显示前六页的按钮和后两页按钮,其他情况显示前两页和后两页按钮,中间显示当前页码的和它后5页的页码,并且支持页码跳转,废话不多说,献上部分实现代码;
//跳转的样式
String tiao="<form style=\"display:inline;color:gray;\"action="+url+" method=\"get\">"
+ " "
+ "<input name=\"curpage\" type=\"text\" style=\"width:30px;\"/>"
+ "<input type=\"hidden\"name=\"pagesize\" value="+pagesize+">"
+ " <input style=\"font-weight:bold;\"type=\"submit\" value=\"跳转\"/>"
+ "</form>";
//简单的样式,默认样式
String all=first+pre+next+last
+"<span>"+curpage+"/"
+sumPage+"一共有"+total+"条记录"
+"</span>"+tiao;
//样式一,如果总页数不大于9页,则输出所有页数
String allPage="";
if(sumPage<=9){
allPage = bindAllPage(1,pattern, sumPage,sumPage, allPage);
all=pre+allPage+next
+"<span>"+"当前第"+curpage+"页"+"/"
+"共"+sumPage+"页"+" 共"+total+"条记录"
+"</span>"+tiao;
}else{//样式二,当总页数大于9时显示
//第一、第二页
String one=bindAllPage(1,pattern, 2,sumPage, allPage);
//最后一页和倒数第一页
String floot=bindAllPage(sumPage-1,pattern, sumPage,sumPage, allPage);
if(curpage>2&&curpage<=sumPage-2){//当当前页小于后两页大于前两页时
allPage = bindAllPage(curpage,pattern, curpage+5,sumPage-2, allPage);