通过servlet实现分页

一、首先要查询出要分页的内容.用会话存储

request.setAttribute("content",lst);

二、由于每次点击页面时都要知道当前是第几页,所以要将这个变量存储在会话里面

request.setAttribute("pageNum",pageNum);//pageNum是用户点击时存储的页面数

三、求出一共有多少页maxPage,当查询出来的所有数据条数与你自己设定的每页条目数计算

if (pageCount % 4 == 0) {
        maxPage = pageCount / 4;//pageCount = lst.size();lst是查询出来的集合
    } else {
        maxPage = pageCount / 4 + 1;
    }
  然后存储在会话里面
    request.setAttribute("pageNum",pageNum);//maxPage是我自己定义的最大页面数
  • 页面设计(在JSP中实现)
    页面设计里面,我们只需要传递变量,也就是当前第几页这个变量
 下一页pageNum = ${pageNum+1}
   上一页pageNum = ${pageNum+1}
   首页pageNum = ${0}
   尾页pageNum = ${maxPage-1}

a.处理第一页时不能点击上一页

if test="${pageNum>0}">
    "GoodsServlet?pageNum=${pageNum-1 }">[上一页]
   if>
   if test="${pageNum==0}">[上一页]if>

b.最后一页时不能点击下一页

 if test="${pageNum">
    "GoodsServlet?pageNum=${pageNum+1 }">[下一页]
    if>
   if test="${pageNum==maxPage-1}">[下一页]if>

  • 具体实现代码如下

1.servlet部分

List lst = (List) request.getAttribute("goods");// 取得共享里面的数据
        // 查询应该只用查询一次就可以了,所以如果查询过,就直接从查询的结果里面取就OK了
        if (lst == null) {
            GoodsImpl g = new GoodsImpl();
            lst = g.findAll();
        }

        // 接收分页页面传递过来的页面数
        String strNum = request.getParameter("pageNum");
        int pageNum = 0;// 表示当前要显示的页面数
        int maxPage = 0;// 最大页
        int pageCount = lst.size();// 得到查询出来的所有数据的数目

        // 如果是第一次执行,就会接收不到数据
        if (strNum == null) {
            strNum = "0";
        } else {// 接收到了用户点击的第几(pageNum)页
            pageNum = Integer.parseInt(strNum);
        }

        // 计算出要分多少页
        if (pageCount % 4 == 0) {
            maxPage = pageCount / 4;
        } else {
            maxPage = pageCount / 4 + 1;
        }

        request.setAttribute("maxPage", maxPage);// 存储最大页数
        request.setAttribute("pageNum", pageNum);// 将当前页面存储起来,给分页页面使用
        request.setAttribute("goods", lst);// 存储要显示的数据

        request.getRequestDispatcher("/index.jsp").forward(request, response);

2.页面部分

<table align="center" border="0" width="85%">
                <tr bgcolor="#6699FF" width="30">
                    <td>产品编号td>
                    <td>产品名称td>
                    <td>产品图片td>
                    <td>产品价格td>
                tr>
                <c:forEach var="g" items="${goods}" begin="${pageNum*4}" end="${(pageNum+1)*4-1}">
                <tr bgcolor="#DDDDDD" width="410">
                    <td>${g.gId }td>
                    <td>${g.sName }td>
                    <td><img src="${g.sImage }" width="78" height="120"/>td>
                    <td>${g.sPrice }td>
                tr>
                c:forEach>
                <tr bgcolor="#6699FF" width="30">
                    <td colspan="4">
                        <a href="1">[首页]a>
                        <c:if test="${pageNum>0}">
                            <a href="GoodsServlet?pageNum=${pageNum-1 }">[上一页]a>
                        c:if>
                        <c:if test="${pageNum==0}">
                            [上一页]
                        c:if>

                        <c:if test="${pageNum>
                            <a href="GoodsServlet?pageNum=${pageNum+1 }">[下一页]a>
                        c:if>
                        <c:if test="${pageNum==maxPage-1}">
                            [下一页]
                        c:if>
                        <a href="GoodsServlet?pageNum=${maxPage-1 }">[尾页]a>
                    td>
                tr>
            table>

你可能感兴趣的:(select)