Web - 分页查询(limit).

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_42986107/article/details/83119925

分页查询: 每页显示10条数据.在这里插入图片描述

Servlet.java

@WebServlet("/findByPage")
public class PageServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html; charset=utf-8");
        // 初始页码数为第一页. 
        int pageNumber = 1;
        // 获取带过来的页码参数 .
        String pageNumber_str = request.getParameter("pageNumber");
        if(pageNumber_str!=null){
            pageNumber = Integer.parseInt(pageNumber_str);
        }
        // 每页显示的个数.
        int pageSize = 10;

        // 创建UserService对象 , 调用其方法.
        UserService us = new UserService();
        List<User> users = us.selectByPage(pageNumber,pageSize);

        // 获取数据库中总条数.
        int total = us.findTotal();
        int totalPage = (int) Math.ceil(total*1.0/pageSize);

        // 将数据放到域中.
        request.setAttribute("user",users);
        // 还需要将pageNumber 和 totalPage放在域中. 
        request.setAttribute("pageNumber",pageNumber);
        request.setAttribute("totalPage",totalPage);

        // i请求转发到list2.jsp页面.
        request.getRequestDispatcher("/list2.jsp").forward(request,response);
    }
}

UserDao.java

public class UserDao {
    // 分页查询 limit
    public List<User> selectByPage(int pageNumber, int pageSize) {
        // 创建QueryRunner对象.
        QueryRunner qr = new QueryRunner(DataSourceUtil.getDataSource());
        // 创建sql语句.
        String sql = "select * from user limit ?,? ";
        // 执行sql
        try {
            return qr.query(sql,new BeanListHandler<>(User.class),(pageNumber-1)*pageSize,pageSize);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    // 查询数据库中的总条数.
    public int findCount() {
        // 创建QueryRunner对象.
        QueryRunner qr = new QueryRunner(DataSourceUtil.getDataSource());
        // 创建sql语句.
        String sql = "select count(*) from user ";
        // 执行sql
        try {
            return ((Long)qr.query(sql,new ScalarHandler())).intValue();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

}

list2.jsp

<div class="text-center">
        <ul class="pagination pagination-lg">
            <%-- 如果时第一页  --%>
            <c:if test="${pageNumber==1}">
                <li class="disabled">
                    <a href="#" aria-label="Previous">
                        <span aria-hidden="true">&laquo;</span>
                    </a>
                </li>
            </c:if>
            <%-- 不是第一页. --%>
            <c:if test="${pageNumber!=1}">
                <li>
                    <a href="${ctx}/findByPage?pageNumber=${pageNumber-1}" aria-label="Previous">
                        <span aria-hidden="true">&laquo;</span>
                    </a>
                </li>
            </c:if>

            <c:forEach begin="1" end="${totalPage}" var="n">
                <%-- 是否是当前页 --%>
                <c:if test="${n==pageNumber}">
                    <li class="active"><a href="javascript:;">${n}</a></li>
                </c:if>
                <%-- 不是当前页 --%>
                <c:if test="${n!=pageNumber}">
                    <li><a href="${ctx}/findByPage?pageNumber=${n}">${n}</a></li>
                </c:if>
            </c:forEach>
            <%-- 如果是最后一页  --%>
            <c:if test="${pageNumber==totalPage}">
                <li>
                    <a href="#" aria-label="Next">
                        <span aria-hidden="true">&raquo;</span>
                    </a>
                </li>
            </c:if>
            <%-- 不是最后一页 点击的时候加1 --%>
            <c:if test="${pageNumber!=totalPage}">
                <li class="disabled">
                    <a href="${ctx}/findByPage?pageNumber=${pageNumber+1}" aria-label="Next">
                        <span aria-hidden="true">&raquo;</span>
                    </a>
                </li>
            </c:if>

        </ul>
    </div>

猜你喜欢

转载自blog.csdn.net/qq_42986107/article/details/83119925