PageBean.java
package com.cloud.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import java.util.List;
/**
* @author liutianlon
* @date 2019/7/2 15:41
* @description
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class PageBean<T> {
private int pageNum;
private int pageSize;
private int totalRecord;
private int totalPage;
private int startIndex;
private int start;
private int end;
private List<T> list;
public PageBean(int pageNum, int pageSize, int totalRecord) {
this.pageNum = pageNum;
this.pageSize = pageSize;
this.totalRecord = totalRecord;
if (totalRecord % pageSize == 0) {
this.totalPage = totalRecord / pageSize;
} else {
this.totalPage = totalRecord / pageSize + 1;
}
this.startIndex = (pageNum - 1) * pageSize + 1;
int len = 5;
this.start = 1;
this.end = len;
if (totalPage <= len) {
this.end = this.totalPage;
} else {
if (len % 2 == 0) {
this.start = pageNum - len / 2;
this.end = pageNum - 1 + len / 2;
} else {
this.start = pageNum - len / 2;
this.end = pageNum + len / 2;
}
if (start <= 0) {
this.start = 1;
this.end = len;
}
if (end > this.totalPage) {
this.end = totalPage;
this.start = end - len + 1;
}
}
}
}
UserDao.java
List<User> findAllUserWithPage(Map map);
UserMapper.xml
<select id="findAllUserWithPage" resultType="com.cloud.domain.User" parameterType="Map">
select id,
user_account as userAccount,
user_password as userPassword,
user_email as userEmail,
user_phone as userPhone,
status,
create_date as createDate,
update_date as updateDate,
ext1,
ext2
from baidu_cloud.t_user
LIMIT #{startIndex},#{pageSize}
</select>
UserService.java
@Override
public PageBean<User> findAllUserWithPage(int pageNum, int pageSize) throws IOException {
List<User> allUser = userDao.findAll();
int totalRecord = allUser.size();
PageBean pb = new PageBean(pageNum, pageSize, totalRecord);
int startIndex = pb.getStartIndex();
Map<String, Integer> map = new HashMap<>();
map.put("startIndex", startIndex);
map.put("pageSize", pageSize);
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
userDao = sqlSession.getMapper(UserDao.class);
pb.setList(userDao.findAllUserWithPage(map));
sqlSession.commit();
sqlSession.close();
return pb;
}
PagingServlet.java
package com.cloud.servlet;
import com.cloud.domain.PageBean;
import com.cloud.service.UserService;
import com.cloud.service.impl.UserServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author liutianlon
* @date 2019/7/2 16:23
* @description
*/
@WebServlet("/FindAllWithPage")
public class PagingServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int pageNum = Integer.valueOf(request.getParameter("pageNum"));
// int pageNum = 2;
int pageSize = 10;
UserService us = new UserServiceImpl();
PageBean pb = us.findAllUserWithPage(pageNum, pageSize);
System.out.println(pb);
request.setAttribute("pageBean", pb);
request.getRequestDispatcher("paging.jsp").forward(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
前端JSP:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@page isELIgnored="false" %>
<!DOCTYPE HTML>
<html>
<head>
<title>分页</title>
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
<script src="js/jquery.min.js"></script>
</head>
<body>
<div class="container">
<div align="center" class="row">
<table class="table table-hover">
<c:choose>
<c:when test="empty ${empty requestScope.pageBean.list}">
商品为空,请稍后再试!
</c:when>
<c:otherwise>
<thead>
<tr>
<th>#</th>
<th hidden>编号</th>
<th>账号</th>
<th>密码</th>
<th>邮箱</th>
<th>手机</th>
<th>状态</th>
<th>注册时间</th>
<th>更新时间</th>
<th>备注1</th>
<th>备注2</th>
<th>操作</th>
</tr>
</thead>
<c:forEach var="user" items="${requestScope.pageBean.list}">
<tbody>
<tr>
<th><input type="checkbox"/></th>
<th>${user.userAccount}</th>
<th>${user.userPassword}</th>
<th>${user.userEmail}</th>
<th>${user.userPhone}</th>
<th>${user.status}</th>
<th>${user.createDate}</th>
<th>${user.updateDate}</th>
<th>${user.ext1}</th>
<th>${user.ext2}</th>
<th><a href="#">修改</a> <a href="#">删除</a></th>
</tr>
</tbody>
</c:forEach>
</c:otherwise>
</c:choose>
</table>
<%-- 构建分页导航 --%>
共有${requestScope.pageBean.totalRecord}个员工,共${requestScope.pageBean.totalPage }页,当前为${requestScope.pageBean.pageNum}页
<br/>
<a href="${pageContext.request.contextPath}/FindAllWithPage?pageNum=1">首页</a>
<%--如果当前页为第一页时,就没有上一页这个超链接显示 --%>
<c:if test="${requestScope.pageBean.pageNum ==1}">
<c:forEach begin="${requestScope.pageBean.start}" end="${requestScope.pageBean.end}" step="1" var="i">
<c:if test="${requestScope.pageBean.pageNum == i}">
${i}
</c:if>
<c:if test="${requestScope.pageBean.pageNum != i}">
<a href="${pageContext.request.contextPath}/FindAllWithPage?pageNum=${i}">${i}</a>
</c:if>
</c:forEach>
<a href="${pageContext.request.contextPath}/FindAllWithPage?pageNum=${requestScope.pageBean.pageNum+1}">下一页</a>
</c:if>
<%--如果当前页不是第一页也不是最后一页,则有上一页和下一页这个超链接显示 --%>
<c:if test="${requestScope.pageBean.pageNum > 1 && requestScope.pageBean.pageNum < requestScope.pageBean.totalPage}">
<a href="${pageContext.request.contextPath}/FindAllWithPage?pageNum=${requestScope.pageBean.pageNum-1}">上一页</a>
<c:forEach begin="${requestScope.pageBean.start}" end="${requestScope.pageBean.end}" step="1" var="i">
<c:if test="${requestScope.pageBean.pageNum == i}">
${i}
</c:if>
<c:if test="${requestScope.pageBean.pageNum != i}">
<a href="${pageContext.request.contextPath}/FindAllWithPage?pageNum=${i}">${i}</a>
</c:if>
</c:forEach>
<a href="${pageContext.request.contextPath}/FindAllWithPage?pageNum=${requestScope.pageBean.pageNum+1}">下一页</a>
</c:if>
<%-- 如果当前页是最后一页,则只有上一页这个超链接显示,下一页没有 --%>
<c:if test="${requestScope.pageBean.pageNum == requestScope.pageBean.totalPage}">
<a href="${pageContext.request.contextPath}/FindAllWithPage?pageNum=${requestScope.pageBean.pageNum-1}">上一页</a>
<c:forEach begin="${requestScope.pageBean.start}" end="${requestScope.pageBean.end}" step="1" var="i">
<c:if test="${requestScope.pageBean.pageNum == i}">
${i}
</c:if>
<c:if test="${requestScope.pageBean.pageNum != i}">
<a href="${pageContext.request.contextPath}/FindAllWithPage?pageNum=${i}">${i}</a>
</c:if>
</c:forEach>
</c:if>
<%--尾页 --%>
<a href="${pageContext.request.contextPath}/FindAllWithPage?pageNum=${requestScope.pageBean.totalPage}">尾页</a>
</div>
</div>
</body>
</html>