基于servlet的分页查询

一.页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- 网页使用的语言 -->
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <!-- 指定字符集 -->
    <meta charset="utf-8">
    <title>用户信息管理系统</title>

    <!-- 1. 导入CSS的全局样式 -->
    <link href="${pageContext.request.contextPath}/css/bootstrap.min.css" rel="stylesheet">
    <!-- 2. jQuery导入,建议使用1.9以上的版本 -->
    <script src="${pageContext.request.contextPath}/js/jquery-2.1.0.min.js"></script>
    <!-- 3. 导入bootstrap的js文件 -->
    <script src="${pageContext.request.contextPath}/js/bootstrap.min.js"></script>
    <style>
        td, th {
            text-align: center;
        }

        span {
            font-size: 15px;
        }

        #page {
            text-align: center;
        }
        .inp{
            margin-bottom: 30px;
            margin-top: 40px;
        }

    </style>
</head>
<body>
<div class="container">
    <h3 style="text-align: center">用户信息列表</h3>
 
    <table border="1" class="table table-bordered table-hover">
        <tr class="success">
            <th>编号</th>
            <th>姓名</th>
            <th>性别</th>
            <th>年龄</th>
            <th>籍贯</th>
            <th>QQ</th>
            <th>邮箱</th>
            <th>操作</th>
        </tr>
        <c:forEach items="${page.list}" var="user" varStatus="status">
            <tr>
                <td>${status.count}</td>
                <td>${user.username}</td>
                <td>${user.gender}</td>
                <td>${user.age}</td>
                <td>${user.address}</td>
                <td>${user.QQ}</td>
                <td>${user.email}</td>
                <td><a class="btn btn-default btn-sm" href="${pageContext.request.contextPath}/fingById?id=${user.id}">修改</a>&nbsp;
                        <%--将id作为参数传递过去--%>
                    <a id="delete" class="btn btn-default btn-sm"
                       href="${pageContext.request.contextPath}/deleteUser?id=${user.id}">删除</a></td>
            </tr>
        </c:forEach>
        <tr>
            <td colspan="8" align="center"><a class="btn btn-primary"
                                              href="${pageContext.request.contextPath}/Jsp/add.jsp">添加联系人</a></td>
        </tr>
    </table>
    <nav id="page" aria-label="Page navigation">
        <ul class="pagination">
            <c:if test="${page.currentPage==1}">
                <li class="disabled">
            </c:if>
            <c:if test="${page.currentPage!=1}">
                <li>
            </c:if>

                <a href="${pageContext.request.contextPath}/fingPage?currentPage=${page.currentPage-1}&number=5"
                   aria-label="Previous">
                    <span aria-hidden="true">&laquo;</span>
                </a>
            </li>
            <c:forEach begin="1" end="${page.totalPage}" var="i" step="1">
                <c:if test="${page.currentPage == i}">
                    <li class="active">
                </c:if>
                <c:if test="${page.currentPage != i}">
                    <li>
                </c:if>
                     <a href="${pageContext.request.contextPath}/fingPage?currentPage=${i}&number=5">${i}</a></li>
            </c:forEach>
             <c:if test="${page.currentPage>=page.totalPage}">
                <li class="disabled">
             </c:if>
             <c:if test="${page.currentPage<page.totalPage}">
                <li>
             </c:if>
                <a href="${pageContext.request.contextPath}/fingPage?currentPage=${page.currentPage+1}&number=5"
                   aria-label="Next">
                    <span aria-hidden="true">&raquo;</span>
                </a>
            </li>
            <span>共计<font color="red">${page.totalCount}</font>条记录&nbsp;&nbsp;共<font
                    color="red">${page.totalPage}</font>页</span>
        </ul>
    </nav>
</div>
</body>
</html>

二.servlet

package cn.itcast.Servlet;

import cn.itcast.Utils.PageUtils;
import cn.itcast.service.Impl.UserServiceImpl;
import cn.itcast.service.UserService;

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;

@WebServlet("/fingPage")
public class FingPage extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        String currentPage = req.getParameter("currentPage");
        String number = req.getParameter("number");
        if (currentPage == null ||"".equals(currentPage)) {
            currentPage="1";
        }
        if(number==null || "".equals(number)){
            number="5";
        }
        int currentPages = Integer.parseInt(currentPage);
        if(currentPages<=0){
            currentPages=1;
        }
        int numbers=numbers = Integer.parseInt(number);
        UserService userService=new UserServiceImpl();
        PageUtils pageUtils = userService.paging(currentPages, numbers);
        if(currentPages>pageUtils.getTotalPage()){
            currentPages=pageUtils.getCurrentPage()-1;
            pageUtils = userService.paging(currentPages, numbers);
        }
        req.setAttribute("page",pageUtils);
        req.getRequestDispatcher("/Jsp/list.jsp").forward(req,resp);
    }
}

三、service层

@Override
    public PageUtils paging(Integer current, Integer number) {
        PageUtils pageUtils=new PageUtils();
        pageUtils.setCurrentPage(current);
        Integer allCount = userInfoDao.findAllCount();
        pageUtils.setTotalCount(allCount);
        Integer totalPage=(allCount % number)==0?allCount /number:allCount/number+1;
        pageUtils.setTotalPage(totalPage);
        List<UserInfo> list = userInfoDao.findPage(current, number);
        pageUtils.setList(list);
        return pageUtils;
    }

四、dao层

/**
     * 查询表中所有记录总条数
     * @return
     */
    @Override
    public Integer findAllCount() {
        String sql="select count(*) from userInfo";
        Integer row = template.queryForObject(sql, Integer.class);
        return row ;
    }

    /**
     * 分页查询的数据
     * @param currentPage
     * @param number
     * @return
     */
    @Override
    public List<UserInfo> findPage(Integer currentPage, Integer number) {
        String sql="select * from userInfo limit ?,?";
        List<UserInfo> list = template.query(sql, new BeanPropertyRowMapper<UserInfo>(UserInfo.class),(currentPage - 1) * number, number);
        return list;
    }

五、domain

package cn.itcast.Utils;

import java.io.Serializable;
import java.util.List;

/**
 * 分页功能的实现
 */
public class PageUtils<T> implements Serializable {
    static final long serialVersionUID = 42L;
    private Integer totalPage;//总页数
    private Integer totalCount;//总记录数
    private List<T> list;//存放数据的list集合
    private Integer currentPage;//当前页数

    public static long getSerialVersionUID() {
        return serialVersionUID;
    }

    public Integer getTotalPage() {
        return totalPage;
    }

    public void setTotalPage(Integer totalPage) {
        this.totalPage = totalPage;
    }

    public Integer getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(Integer totalCount) {
        this.totalCount = totalCount;
    }

    public List<T> getList() {
        return list;
    }

    public void setList(List<T> list) {
        this.list = list;
    }

    public Integer getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(Integer currentPage) {
        this.currentPage = currentPage;
    }

    @Override
    public String toString() {
        return "PageUtils{" +
                "totalPage=" + totalPage +
                ", totalCount=" + totalCount +
                ", list=" + list +
                ", currentPage=" + currentPage +
                '}';
    }
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值