分页查询
分页查询工具类
public class PageBean<T> {
//页码
private int pageNum;
//总页数
private int pageCount;
//页大小
private int pageSize;
//总数据个数
private long totalSize;
//分页数据
private List<T> data;
//开始页码
private int startPage;
//结束页码
private int endPage;
public PageBean(int pageNum, int pageSize, long totalSize, List<T> data) {
this.pageNum = pageNum;
this.pageSize = pageSize;
this.totalSize = totalSize;
this.data = data;
//计算pageCount
pageCount= (int) (totalSize%pageSize==0?totalSize/pageSize:totalSize/pageSize+1);
//第一种情况
startPage=pageNum-4;
endPage=pageNum+5;
//第二种情况 页码小于5
if (pageNum<5){
startPage=1;
endPage=10;
}
//第三种情况 页码大于
if (pageNum>pageCount-5){
startPage=pageCount-9;
endPage=pageCount;
}
//第四种情况 总页数小于10
if (pageCount<10){
startPage=1;
endPage=pageCount;
}
}
public int getStartPage() {
return startPage;
}
public void setStartPage(int startPage) {
this.startPage = startPage;
}
public int getEndPage() {
return endPage;
}
public void setEndPage(int endPage) {
this.endPage = endPage;
}
public PageBean() {
}
public int getPageNum() {
return pageNum;
}
public void setPageNum(int pageNum) {
this.pageNum = pageNum;
}
public int getPageCount() {
return pageCount;
}
public void setPageCount(int pageCount) {
this.pageCount = pageCount;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public long getTotalSize() {
return totalSize;
}
public void setTotalSize(long totalSize) {
this.totalSize = totalSize;
}
public List<T> getData() {
return data;
}
public void setData(List<T> data) {
this.data = data;
}
@Override
public String toString() {
return "PageBean{" +
"pageNum=" + pageNum +
", pageCount=" + pageCount +
", pageSize=" + pageSize +
", totalSize=" + totalSize +
", data=" + data +
'}';
}
}
分页查询jsp页面
<%--
Created by IntelliJ IDEA.
User: wgy
Date: 2020/9/2
Time: 11:10
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>书籍列表</title>
<style type="text/css">
a{
text-decoration: none;
color: cornflowerblue;
}
a:hover{
text-decoration: underline;
}
.class1{
background-color: brown;
color: white;
}
</style>
</head>
<body>
<h2>书籍列表</h2>
<h3>当前登录用户:${user}</h3>
<form action="${pageContext.request.contextPath}/selectbookServlet" method="post">
<table>
<tr>
<td>
书名查询 :
</td>
<td>
<input type="text" name="search" value="${search}"><input type="submit" value="搜索">
</td>
</tr>
<tr>
<td>
作者查询 :
</td>
<td>
<input type="text" name="author" value="${author}"><input type="submit" value="搜索">
</td>
</tr>
<tr>
<td>
出版社查询 :
</td>
<td>
<input type="text" name="publisher" value="${publisher}"><input type="submit" value="搜索">
</td>
</tr>
</table>
</form>
<table border="1" width="100%">
<tr>
<th>编号</th>
<th>书名</th>
<th>作者</th>
<th>出版日期</th>
<th>出版社</th>
<th>isbn</th>
<th>价格</th>
<th>图片</th>
<th>类别</th>
<th>操作</th>
</tr>
<c:forEach var="book" items="${pageBean.data}">
<tr>
<td>${book.id}</td>
<td>${book.title}</td>
<td>${book.author}</td>
<td><fmt:formatDate value="${book.publicDate}" pattern="yyyy-MM-dd"></fmt:formatDate></td>
<td>${book.publisher}</td>
<td>${book.isbn}</td>
<td>${book.price}</td>
<td><img src="${pageContext.request.contextPath}/picture?pic=${book.picture}" width="50" height="50"></td>
<td>${book.cid}</td>
<td><a href="${pageContext.request.contextPath}/updatebookServlet?id=${book.id}">修改</a> <a href="${pageContext.request.contextPath}/delebookServlet?id=${book.id}">删除</a></td>
</tr>
</c:forEach>
</table>
<div>
<a href="${pageContext.request.contextPath}/selectbookServlet?pageNum=1&pageSize=${pageBean.pageSize}&search=${search}">首页</a>
<a href="${pageContext.request.contextPath}/selectbookServlet?pageNum=${pageBean.pageNum-1}&pageSize=${pageBean.pageSize}&search=${search}">上一页</a>
<c:forEach var="num" begin="${pageBean.startPage}" end="${pageBean.endPage}">
<c:if test="${pageBean.pageNum==num}">
<a class="class1" href="${pageContext.request.contextPath}/selectbookServlet?pageNum=${num}&pageSize=${pageBean.pageSize}&search=${search}">${num}</a>
</c:if>
<c:if test="${pageBean.pageNum!=num}">
<a href="${pageContext.request.contextPath}/selectbookServlet?pageNum=${num}&pageSize=${pageBean.pageSize}&search=${search}">${num}</a>
</c:if>
</c:forEach>
<c:if test="${pageBean.pageNum>=pageBean.pageCount}">
<a href="${pageContext.request.contextPath}/selectbookServlet?pageNum=${pageBean.pageCount}&pageSize=${pageBean.pageSize}&search=${search}">下一页</a>
</c:if>
<c:if test="${pageBean.pageNum<pageBean.pageCount}">
<a href="${pageContext.request.contextPath}/selectbookServlet?pageNum=${pageBean.pageNum+1}&pageSize=${pageBean.pageSize}&search=${search}">下一页</a>
</c:if>
<%
%>
<a href="${pageContext.request.contextPath}/selectbookServlet?pageNum=${pageBean.pageCount}&pageSize=${pageBean.pageSize}&search=${search}">尾页</a>
共【${pageBean.pageCount}/${pageBean.pageNum}】<input id="page" value="${pageNum}" type="number" name="page" min="1" max="${pageBean.pageCount}"><input type="button" value="跳转" onclick="judgePage()"><br/><br/>
<a href="${pageContext.request.contextPath}/addbookview"> <input value="添加书籍" type="button" width="50" height="20"> </a>
</div>
<script>
function judgePage() {
var n =document.getElementById("page").value;
window.location="${pageContext.request.contextPath}/selectbookServlet?pageNum="+n+"&pageSize=${pageBean.pageSize}&search=${search}";
localStorage.setItem("page",document.getElementById("page").value);
}
var page = localStorage.getItem("page");
console.log(page)
if(page){
document.getElementById("page").value = page;
}
</script>
</body>
</html>
分页查询servlet
package servlet;
import dao.BookShopDao;
import dao.UserDao;
import dao.impl.BookShopDaoImpl;
import dao.impl.UserDaoImpl;
import entity.Book;
import entity.User;
import service.BookService;
import service.impl.BookServiceImpl;
import utils.PageBean;
import utils.StringUtils;
import javax.servlet.RequestDispatcher;
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 javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.List;
/**
* 超超 2020/8/28 19:27
*/
@WebServlet(name = "selectbookServlet",value = "/selectbookServlet")
public class selectbookServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
HttpSession session = request.getSession();
String username = (String) session.getAttribute("user");
if (username==null){
response.sendRedirect("login.jsp");
return;
}
String pageNum = request.getParameter("pageNum");
String pageSize = request.getParameter("pageSize");
String search = request.getParameter("search");
String author = request.getParameter("author");
String publisher = request.getParameter("publisher");
String condtion="where";
if (!StringUtils.isEmpty(search)){
condtion+=" title like '%"+search+"%'";
}
if (!StringUtils.isEmpty(author)){
if (condtion.equals("where")){
condtion+=" author like '%"+author+"%'";
}else {
condtion+=" and author like '%"+author+"%'";
}
}
if (!StringUtils.isEmpty(publisher)){
if (condtion.equals("where")){
condtion+=" publisher like '%"+publisher+"%'";
}else {
condtion+=" and publisher like '%"+publisher+"%'";
}
}
int page_num=1;
int page_size=5;
if(!StringUtils.isEmpty(pageNum)){
page_num=Integer.parseInt(pageNum);
if(page_num<=0){
page_num=1;
}
}
if(!StringUtils.isEmpty(pageSize)){
page_size=Integer.parseInt(pageSize);
}
BookService bookService=new BookServiceImpl();
try {
if (condtion.equals("where")){
condtion="";
}
PageBean<Book> pageBean=bookService.queryByPage(page_num, page_size,condtion);
request.setAttribute("pageBean", pageBean);
request.setAttribute("author",author);
request.setAttribute("search",search);
request.setAttribute("publisher",publisher);
request.getRequestDispatcher("/booklist.jsp").forward(request, response);
} catch (Exception e) {
e.printStackTrace();
request.setAttribute("msg", "查询失败:"+e.getMessage());
request.getRequestDispatcher("/message.jsp").forward(request, response);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}