jsp中的 分页

主要的功能就是分页的处理方式,可 以上下页方式,也可以居中当前页码的方式,还有以 一次翻一轮的方式
展示效果如下:
在这里插入图片在这里插入图片描述描述

 package testPage;
    /*
    这是一个分页的 jsp中的 java代码块(一些处理逻辑)
    */
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class TestPageNoServlet
 */
@WebServlet("/testPageNo")
public class TestPageNoServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public TestPageNoServlet() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		List<Integer> list = new ArrayList<Integer>();
		int pageNo = 88;
		int totalPageNo = 90;
		int start = 1;
		int end = 1;
		String pageNoParam = request.getParameter("pageNo");
		if (pageNoParam != null) {// 如果 页码参数不为空, 则 覆盖默认页码 1
			pageNo = Integer.parseInt(pageNoParam);
		}
		String isScroll = request.getParameter("isScroll");
		if (isScroll == null) {
			// 假定 页码 区间大小 为 5
			if (totalPageNo < 10) {// 总 页码数 小于 页码 序列 区间大小 ==> 显示全部页码
				start = 1;
				end = totalPageNo;
			} else if (pageNo - 5 <= 1) {// 要访问的页码 靠近 左边界 时 , 从第一页 向右 推 10个页码
				start = 1;
				end = start + 9;
			} else if (pageNo + 4 >= totalPageNo) {// 要访问的页码 靠近 右边界 时, 从 末尾 页 向
													// 前 倒推 10 个页码
				end = totalPageNo;
				start = end - 9;
			} else {// 正常情况(不涉及越界)
				start = pageNo - 5; // 向左 推5页
				end = pageNo + 4; // 向 右 推4页
			}
			for (int i = start; i <= end; i++) {
				list.add(i);
			}

		} else if (isScroll.equals("1")) {// 向后翻 一轮
			String endStr = request.getParameter("end");
			String startStr = request.getParameter("start");
			if (endStr != null && !endStr.trim().equals("")) {
				end = Integer.parseInt(endStr);

			}
			if (startStr != null && !startStr.trim().equals("")) {
				start = Integer.parseInt(startStr);

			}
			if (end + 10 > totalPageNo) { // 向后 翻一轮, 主要保证 end 不越界
				end = totalPageNo;
				start = end - 9;
			} else {
				start += 10;
				end += 10;
			}
			pageNo = (start + end) / 2 + 1;
			for (int i = start; i <= end; i++) {
				list.add(i);
			}

		} else {// 向前翻一轮
			String endStr = request.getParameter("end");
			String startStr = request.getParameter("start");
			if (endStr != null && !endStr.trim().equals("")) {
				end = Integer.parseInt(endStr);

			}
			if (startStr != null && !startStr.trim().equals("")) {
				start = Integer.parseInt(startStr);

			}
			if (start - 10 < 1) { // 向后 翻一轮, 主要保证 end 不越界
				start = 1;
				end = start + 9;
			} else {
				start -= 10;
				end -= 10;
			}
			pageNo = (start + end) / 2 +1;
			for (int i = start; i <= end; i++) {
				list.add(i);
			}
		}

		request.setAttribute("pageList", list);
		request.setAttribute("curr_no", pageNo);
		request.setAttribute("totalPageNo", totalPageNo);
		request.setAttribute("start", start);
		request.setAttribute("end", end);
		//request.getRequestDispatcher("/WEB-INF/page/pageNoTest.jsp").forward(request, response);
		request.getRequestDispatcher("pageNoTest.jsp").forward(request, response);

	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

这是jsp分页的 前端代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>页码测试</title>
<link rel="shortcut icon" href="image/zk.ico" type="image/x-icon" />
<link href="css/bootstrap.min.css" rel="stylesheet">
<script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
</head>
<body>
	<nav aria-label="Page navigation">
		<ul class="pagination">

			<c:if test="${start != 1 }">
				<li><a href="testPageNo?pageNo=1"
					aria-label="Previous"> <span aria-hidden="true">首页</span>
				</a></li>
				<li><a href="testPageNo?isScroll=-1&start=${start}&end=${end}"
					aria-label="Previous"> <span aria-hidden="true">&laquo;</span>
				</a></li>
			</c:if>
            <c:if test="${curr_no != 1 }">
                <li><a href="testPageNo?pageNo=${curr_no-1}"
					aria-label="Previous"> <span aria-hidden="true">上一页</span>
				</a></li>
            </c:if>
			<c:forEach items="${pageList}" var="no">
				<c:if test="${curr_no == no}">
					<li class="active"><a href="javascript:void(0);">${no}</a></li>
				</c:if>

				<c:if test="${curr_no != no}">
					<li><a href="testPageNo?pageNo=${no}">${no}</a></li>
				</c:if>

			</c:forEach>
			 <c:if test="${curr_no != totalPageNo }">
                <li><a href="testPageNo?pageNo=${curr_no+1}"
					aria-label="Previous"> <span aria-hidden="true">下一页</span>
				</a></li>
            </c:if>
			<c:if test="${end != totalPageNo }">
				<li><a href="testPageNo?isScroll=1&start=${start}&end=${end}"
					aria-label="Next"> <span aria-hidden="true">&raquo;</span>
				</a></li>
				<li><a href="testPageNo?pageNo=${totalPageNo}"
					aria-label="Previous"> <span aria-hidden="true">尾页</span>
				</a></li>
			</c:if>


		</ul>
	</nav>
</body>
</html>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值