主要的功能就是分页的处理方式,可 以上下页方式,也可以居中当前页码的方式,还有以 一次翻一轮的方式
展示效果如下:
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>