jsp中的 分頁
阿新 • • 發佈:2018-12-10
主要的功能就是分頁的處理方式,可 以上下頁方式,也可以居中當前頁碼的方式,還有以 一次翻一輪的方式 展示效果如下:
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">«</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">»</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>