1. 程式人生 > >jsp中的 分頁

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>