分页查询

分页查询

分页查询工具类

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>&nbsp;&nbsp;<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);

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值