内容较多时,可以增加首位页进行选择:
java代码块:
package testPage;
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 TestPageServlet
*/
@WebServlet("/TestPageServlet")
public class TestPageServlet extends HttpServlet {
private static final long serialVersionUID = 1L;/**
- @see HttpServlet#HttpServlet()
*/
public TestPageServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
- @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
-
response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
List list = new ArrayList();
int pageNo = 85;// 当前页码
int totalPage = 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) {
// 假设 显示窗口为 10个页码
if (totalPage < 10) {// 当总页码 小于等于10的时候==>全部显示
start = 1;
end = totalPage;
} else if (pageNo - 5 <= 1) {// 判断当处在 起始端边界时==>输出前10个页码
start = 1;
end = start + 9;
} else if (pageNo + 4 >= totalPage) {// 判断当处于 结束端 边界时==>从后向前
// 输出后10个页码
end = totalPage;
start = end - 9;
} else {
start = pageNo - 5;
end = pageNo + 4;
}
for (int i = start; i <= end; i++) {
list.add(i);
}} else if (isScroll.equals("1")) {// 向后翻一轮 // 先算出 当前的 end值 // 接受 参数 end 和 start String endStr = request.getParameter("end"); String startStr = request.getParameter("start"); if (endStr != null && !endStr.trim().equals("")) { end = Integer.parseInt(endStr); } // 将字符串类型转为int型 if (startStr != null && !startStr.trim().equals("")) { start = Integer.parseInt(startStr); } if (end + 10 > totalPage) {// 如果结束码+10大于总页码==>处于最后一页 //System.out.println("22222222222"+end); end = totalPage; // 结束码 就等于 总页数的页码 start = totalPage - 9; // 起始码与 结束码 相差 9 } else { // 相加不大于总页码 ==>不在最后一页==>可以进行一整页的 翻越 //System.out.println("1111111111111"+end); 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); } // 将字符串类型转为int型 if (startStr != null && !startStr.trim().equals("")) { start = Integer.parseInt(startStr); } if (start - 10 <1) {//说明==>处于第一页 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", totalPage); request.setAttribute("start", start); request.setAttribute("end", end); request.getRequestDispatcher("Testpage.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);
} - @see HttpServlet#HttpServlet()
}
前端块(.jsp文件):
加 首 尾 的 jsp代码
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>
- «
<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="TestPageServlet?pageNo=${no}">${no}</a></li> </c:if> </c:forEach> <c:if test="${end != totalPageNo}"><!-- 说明还没有到达最后的页码==>可以滚动 --> <li><a href="TestPageServlet?isScroll=1&start=${start}&end=${end}" aria-label="Next"> <span aria-hidden="true">»</span> </a></li> <li><a href="TestPageServlet?pageNo=${totalPageNo}" aria-label="Previous"> <span aria-hidden="true">尾页</span> </a></li> </c:if> </ul> </nav>