JSTL实现分页

本文详细介绍了如何使用JSTL进行分页处理,包括不同页数下的分页展示逻辑,如只有一页时不显示分页,中间页码的显示规则,以及首页、末页和上下页的条件判断。示例展示了1到12页在不同位置时的分页显示状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最多显示左右三页间隔,首页和末页:如果在第一页 首页不可点击,如果在最后一页 末页不可点击,上一页下一页同理
1页 
当前任意页  1
2页 
当前任意页  1 2
3页 
当前任意页  1 2 3
4页 
当前任意页  1 2 3 4
5页 
当前任意页  1 2 3 4 5
6页 
当前第1页  1 2 3 4 ... 6
当前第2-5页 1 2 3 4 5 6
当前第6页  1 ... 3 4 5 6
7页 
当前第1页  1 2 3 4 ... 7
当前第2页  1 2 3 4 5 ... 7
当前第3-5页 1 2 3 4 5 6 7
当前第6页  1 ...  3 4 5 6 7
当前第7页  1 ... 4 5 6 7
8页
当前第1页  1 2 3 4 ... 8
当前第2页  1 2 3 4 5 ... 8
当前第3页  1 2 3 4 5 6 ... 8
当前第4-5页 1 2 3 4 5 6 7 8
当前第6页  1 ... 3 4 5 6 7 8
当前第7页  1 ... 4 5 6 7 8
当前第8页  1 ... 5 6 7 8
9页
当前第1页  1 2 3 4 ... 9
当前第2页  1 2 3 4 5 ... 9
当前第3页  1 2 3 4 5 6 ... 9
当前第4页  1 2 3 4 5 6 7 ... 9
当前第5页  1 2 3 4 5 6 7 8 9
当前第6页  1 ... 3 4 5 6 7 8 9
当前第7页  1 ... 4 5 6 7 8 9
当前第8页  1 ... 5 6 7 8 9
当前第9页  1 ... 6 7 8 9
10页

当前第1页  1 2 3 4 ... 10
当前第2页  1 2 3 4 5 ... 10
当前第3页  1 2 3 4 5 6 ... 10
当前第4页  1 2 3 4 5 6 7 ... 10
当前第5页  1 2 3 4 5 6 7 8 ... 10
当前第6页  1 ... 3 4 5 6 7 8 9 10
当前第7页  1 ... 4 5 6 7 8 9 10
当前第8页  1 ... 5 6 7 8 9 10
当前第9页  1 ... 6 7 8 9 10
当前第10页 1 ... 7 8 9 10
11页
当前第1页  1 2 3 4 ... 11
当前第2页  1 2 3 4 5 ... 11
当前第3页  1 2 3 4 5 6 ... 11
当前第4页  1 2 3 4 5 6 7 ... 11
当前第5页  1 2 3 4 5 6 7 8 ... 11
当前第6页  1 ... 3 4 5 6 7 8 9 ... 11
当前第7页  1 ... 4 5 6 7 8 9 10 11
当前第8页  1 ... 5 6 7 8 9 10 11
当前第9页  1 ... 6 7 8 9 10 11
当前第10页 1 ... 7 8 9 10 11
当前第11页 1 ... 8 9 10 11
12页
当前第1页  1 2 3 4 ... 12
当前第2页  1 2 3 4 5 ... 12
当前第3页  1 2 3 4 5 6 ... 12
当前第4页  1 2 3 4 5 6 7 ... 12
当前第5页  1 2 3 4 5 6 7 8 ... 12
当前第6页  1 ... 3 4 5 6 7 8 9 ... 12
当前第7页  1 ... 4 5 6 7 8 9 10 ... 12
当前第8页  1 ... 5 6 7 8 9 10 11 12
当前第9页  1 ... 6 7 8 9 10 11 12
当前第10页 1 ... 7 8 9 10 11 12
当前第11页 1 ... 8 9 10 11 12
当前第12页 1 ... 9 10 11 12

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:if test="${page.totalPages > 1}">
	<div class="pagination">
		<%-- first and previous --%>
		<c:choose>
			<c:when test="${page.pageNumber == 1 }">
				<span class="firstPage"></span>
			</c:when>
			<c:otherwise>
				<a class="firstPage" href="javascript:$.pageSkip(1)"></a>
			</c:otherwise>
		</c:choose>
		<c:choose>
			<c:when test="${page.pageNumber > 1}">
				<a class="previousPage" href="javascript:$.pageSkip(${page.pageNumber - 1 })"></a>
			</c:when>
			<c:otherwise>
				<span class="previousPage"></span>
			</c:otherwise>
		</c:choose>
		<%-- first and previous --%>
		<%-- segment --%>
		<c:choose>
			<c:when test="${page.pageNumber <= 5 }">
				<c:forEach var="i" begin="1" end="${page.pageNumber}">
					<c:choose>
						<c:when test="${page.pageNumber == i }">
							<span class="currentPage">${page.pageNumber}</span>
						</c:when>
						<c:otherwise>
							<a href="javascript:$.pageSkip(${i })">${i }</a>
						</c:otherwise>
					</c:choose>
            	</c:forEach>
			</c:when>
			<c:otherwise>  
	            <span class="pageBreak">...</span>
	            <c:forEach var="i" begin="${page.pageNumber - 3}" end="${page.pageNumber}">  
	                <c:choose>
						<c:when test="${page.pageNumber == i }">
							<span class="currentPage">${page.pageNumber}</span>
						</c:when>
						<c:otherwise>
							<a href="javascript:$.pageSkip(${i })">${i }</a>
						</c:otherwise>
					</c:choose>
	            </c:forEach>  
        	</c:otherwise> 
		</c:choose>
		<c:choose>  
	        <c:when test="${page.pageNumber >= page.totalPages - 4 || page.totalPages - 4 <= 0}">  
	            <c:forEach var="i" begin="${page.pageNumber + 1}" end="${page.totalPages}">  
	                <a href="javascript:$.pageSkip(${i })">${i }</a>
	            </c:forEach>  
	        </c:when>  
	        <c:otherwise>  
	            <c:forEach var="i" begin="${page.pageNumber + 1}" end="${page.pageNumber + 3}">  
	                <a href="javascript:$.pageSkip(${i })">${i }</a>
	            </c:forEach>
	            <span class="pageBreak">...</span>
	            <a href="javascript:$.pageSkip(${page.totalPages })">${page.totalPages}</a>
	        </c:otherwise>  
	    </c:choose>
	    <%-- segment --%>
	    <%-- next and last --%>
	    <c:choose>
			<c:when test="${page.pageNumber == page.totalPages }">
				<span class="nextPage"></span>
			</c:when>
			<c:otherwise>
				<a class="nextPage" href="javascript:$.pageSkip(${page.pageNumber + 1 })"></a>
			</c:otherwise>
		</c:choose>
		<c:choose>
			<c:when test="${page.pageNumber < page.totalPages }">
				<a class="lastPage" href="javascript:$.pageSkip(${page.totalPages })"></a>
			</c:when>
			<c:otherwise>
				<span class="lastPage"></span>
			</c:otherwise>
		</c:choose>
	    <%-- next and last --%>
	</div>

实现方案:
总页数page.totalPages
当前页码page.pageNumber

(1)当只有一页时不显示分页
(2)中间页码显示
如果page.pageNumber<=5,从2显示至page.pageNumber
如果page.pageNumber>5,显示省略号,然后从page.pageNumber-3显示至page.pageNumber
如果page.pageNumber<=page.totalPages-4或者page.totalPages-4<=0,从page.pageNumber+1显示至page.totalPages
如果page.pageNumber>page.totalPages-4,从page.pageNumber+1显示至page.pageNumber+3,然后显示省略号和page.totalPages


效果:















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值