这两天搞了一个分页,网站有些地方最好别用JS分页,对SEO不好,写个分页给页面用,先通过java代码拼字符串,没什么问题迁移到jstl公共页面上,代码如下:
java代码:
public static String getPagination(int currNo,int pageCount,String url){
StringBuilder sb = new StringBuilder();
sb.append("<ul>");
//上一页
if(currNo>1){
sb.append("<li class=\"pgNext link pre \"><a href=\""+url+(currNo-1)+"\" target=\"_self\" >上一页</a></li>");
}
//qpage
int qpage=5;
StringBuilder qpagesb = new StringBuilder();
int startPoint = currNo-qpage/2;
int endPoint = currNo+qpage/2;
//endPoint向后偏移(1-startPoint)保证qpage
if(startPoint<1){
endPoint = endPoint+(1-startPoint);
}
if(endPoint>pageCount){//startPage向前偏移endPoint-pageCount保证qpage
startPoint = startPoint-(endPoint-pageCount);
}
//end
if(startPoint<1){
startPoint = 1;
}
if(endPoint>=pageCount){
endPoint = pageCount;
}
//首页
if(startPoint>1){
qpagesb.append("<li class=\"pgNext link first\"><a href=\""+url+"\" target=\"_self\">1</a></li>");
if(startPoint-1!=1){
qpagesb.append("<li class=\"text\">...</li>");
}
}
qpagesb.append("<span class='qpages'>");
for(int i=startPoint;i<=endPoint;i++){
if(i==currNo){
qpagesb.append("<li class=\"page-number link pgCurrent\">"+i+"</li>");
}else{
qpagesb.append("<li class=\"page-number link\"><a href=\""+url+i+"\" target=\"_self\">"+i+"</a></li>");
}
}
qpagesb.append("</span>");
//尾页
if(pageCount>endPoint){
if(pageCount-endPoint!=1){
qpagesb.append("<li class=\"text\">...</li>");
}
qpagesb.append("<li class=\"page-number link page-number-last\"><a href=\""+url+pageCount+"\" target=\"_self\">"+pageCount+"</a></li>");
}
sb.append(qpagesb);
//去第几页
sb.append("<li class=\"text quickPager\">");
sb.append("<span class=\"fl\">第</span><div id=\"chatpage\"><input id=\"quickPager\" class=\"pagenum fl\" value=\""+currNo+"\" style=\"width: "+((""+currNo).length()+1)*10+"px;\"><a id=\"enter\" class=\"enter fl\" href=\"javascript:void(0)\"></a></div><span class=\"fl\"> /"+pageCount+" 页</span>");
sb.append("</li>");
//下一页
if(currNo<pageCount){
sb.append("<li class=\"pgNext link next\"><a href=\""+url+(currNo+1)+"\" target=\"_self\">下一页</a></li>");
}
//去第几楼
sb.append("<li class=\"text quickPager\">");
sb.append("<span class=\"fl\">到第</span><div id=\"chatpage\"><input id=\"quickFloor\" class=\"pagenum fl\" value=\"\" style=\"width: 20px;\"></div><span class=\"fl\"> / 楼</span>");
sb.append("</li>");
sb.append("</ul>");
return sb.toString();
}
jstl版本:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@include file="/WEB-INF/jsp/global/jstl.jsp"%>
<c:set var="currNo" value="${page.pageNumber}"></c:set>
<c:set var="pageCount" value="${page.totalPage}"></c:set>
<c:set var="qpage" value="5"></c:set>
<fmt:formatNumber type="number" var="tempNum" value="${(qpage-(qpage%2))/2}"/>
<c:set var="startPoint" value="${currNo-tempNum}"></c:set>
<c:set var="endPoint" value="${currNo+tempNum}"></c:set>
<c:if test="${startPoint<1}">
<c:set var="endPoint" value="${endPoint+(1-startPoint)}"></c:set>
</c:if>
<c:if test="${endPoint>pageCount}">
<c:set var="startPoint" value="${startPoint-(endPoint-pageCount)}"></c:set>
</c:if>
<c:if test="${startPoint<1}">
<c:set var="startPoint" value="1"></c:set>
</c:if>
<c:if test="${endPoint>=pageCount}">
<c:set var="endPoint" value="${pageCount}"></c:set>
</c:if>
<ul>
<c:if test="${currNo>1}">
<li class="pgNext link pre"><a href="${url}${currNo-1}" target="_self" >上一页</a></li>
</c:if>
<c:if test="${startPoint>1}">
<li class="pgNext link pre"><a href="${url}1" target="_self" >1</a></li>
<c:if test="${startPoint-1!=1}">
<li class="text">...</li>
</c:if>
</c:if>
<span class='qpages'>
<c:forEach begin="${startPoint}" end="${endPoint}" var="i">
<c:choose>
<c:when test="${currNo==i}">
<li class="page-number link pgCurrent">${i}</li>
</c:when>
<c:otherwise>
<li class="page-number link"><a href="${url}${i}" target="_self" >${i}</a></li>
</c:otherwise>
</c:choose>
</c:forEach>
</span>
<c:if test="${pageCount> endPoint}">
<c:if test="${pageCount-endPoint!=1}">
<li class="text">...</li>
</c:if>
<li class="page-number link page-number-last"><a href="${url}${pageCount}" target="_self" >${pageCount}</a></li>
</c:if>
<li class="text quickPager">
<span class="fl">第</span>
<div id="chatpage">
<input id="quickPager" class="pagenum fl" value="${currNo}" style="width: 40px;">
<a id="enter" class="enter fl" href="javascript:void(0)"></a>
</div>
<span class="fl"> ${pageCount} 页</span>
</li>
<c:if test="${currNo<pageCount}">
<li class="pgNext link next"><a href="${url}${currNo+1}" target="_self" >下一页</a></li>
</c:if>
<li class="text quickPager">
<span class="fl">到第</span>
<div id="chatpage">
<input id="quickFloor" class="pagenum fl" value="" style="width: 20px;">
</div>
<span class="fl"> / 楼</span>
</li>
</ul>