分页实现

[1]为什么使用分页?

   A、查询数据量的增多,一页的内容放不下的,所以使用分页

   B、分页查询的是部分数据,这样查询的速度就比较快

 

[2]分页必须知道的参数

    A、分页的SQL语句   select   *  from   student   limit  startIndex,size

    B、获得当前的页数   index ;

          每一页显示的条数   size;

          下一页  index++    上一页 index--

           尾页: index =最大页数?

         最大页数如何计算?

         假设:count=15;  size  =5

           if(count%size==0){

             maxpage =count/size

            }else{

             maxpage =count/size+1

            }

   举例:学生信息分页实现

@WebServlet("/StudentServlet2")
public class StudentServlet2 extends HttpServlet {

    StudentService studentService = new StudentServiceImpl();
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //req.setCharacterEncoding("utf-8");

        //获取前台数据
        //获得查询的条件
        String name = req.getParameter("name");
        String score = req.getParameter("score");

        if(name!=null){
            byte[] bytes = name.getBytes("iso8859-1");
            name = new String(bytes, 0, bytes.length, "utf-8");
        }

        //接收当前的页数
        String index = req.getParameter("index");
        System.out.println(index);
        int i=1;
        if(index!=null && !"".equals(index)){
            i = Integer.parseInt(index);
            System.out.println("index:"+i);
            //pg.setIndex(i);
        }
        PageBean pg = new PageBean();
        pg.setIndex(i);

        //获得当前的size
        String size1 = req.getParameter("size");
        int si=5;
        if(size1!=null &&!"".equals(size1)){
            si=Integer.parseInt(size1);
            //pg.setSize(si);
        }
        pg.setSize(si);
        //获得总条数
        int count = studentService.getCount(name,score);
        pg.setTotalCount(count);
        //int start=pg.getStartRow();

        //System.out.println("start:"+start);
        //数据处理
        //int size = pg.getSize();

        //获得开始下标
        int start = pg.getStartRow();
        //获得每页显示的条数
        int size = pg.getSize();

        List<Student> list = studentService.findMore(start,size,name,score);

        //做出响应
        req.setAttribute("list",list);
        req.setAttribute("pb",pg);
        req.setAttribute("name",name);
        req.setAttribute("score",score);
        req.getRequestDispatcher("/show.jsp").forward(req,resp);
    }

前端实现

<center>
<form action="StudentServlet2" method="get">
    用户名:<input type="text" id="name" name="name" value="${name}"/>
    分数><input type="text" id="score" name="score" value="${score}"/>
    <input type="submit"  value="查询">
    <hr/>
</form>
</center>
    <table border="1px" align="center">
    <tr>
        <td>用户ID</td>
        <td>用户名</td>
        <td>用户分数</td>
        <td>用户年龄</td>
        <td>用户图片</td>
        <td>操作</td>
    </tr>

    <c:forEach items="${list}" var="stu">
    <tr>
        <td>${stu.sid}</td>
        <td>${stu.sname}</td>
        <td>${stu.score}</td>
        <td>${stu.age}</td>
        <td><img src="/student/upload/${stu.filename}" width="80px"></td>
        <td><a href="/student/DownLoadServlet?filename=${stu.filename}&filetype=${stu.filetype}">下载</a></td>
    </tr>
    </c:forEach>
    <tr>
      <th colspan="10">
          <a href="StudentServlet?sign=first">首页</a>
          <a href="StudentServlet?sign=up">上一页</a>
          <a href="StudentServlet?sign=next">下一页</a>
          <a href="StudentServlet?sign=last">尾页</a>
      </th>
    </tr>

    <tr>
      <th colspan="10">
          <a href="javascript:change2(1,${pb.size})">首页</a>
          <c:if test="${pb.index>1}">
              <a href="javascript:change2(${pb.index-1},${pb.size})">上一页</a>
          </c:if>
          <c:forEach items="${pb.numbers}" var="num" >
                <c:if test="${pb.index==num}">
                    [<a href="javascript:change2(${num},${pb.size})">${num}</a>]
                </c:if>

                <c:if test="${pb.index!=num}">
                    <a href="javascript:change2(${num},${pb.size})">${num}</a>
                </c:if>
          </c:forEach>
          <c:if test="${pb.index<pb.totalPageCount}">
              <a href="javascript:change2(${pb.index+1},${pb.size})">下一页</a>
          </c:if>
          <a href="javascript:change2(${pb.totalPageCount},${pb.size})">尾页</a>
          每页显示
          <select onchange="change2(1,this.value)">
              <c:forEach begin="5" end="15" step="5" var="num">
              <option value="${num}" <c:if test="${pb.size==num}">selected</c:if> >${num}</option>
              </c:forEach>
          </select>
          条记录
          总共${pb.totalCount}条记录
      </th>
    </tr>

</table>
<script type="text/javascript">
    /*function change(size) {
        alert(size);
        window.location.href="StudentServlet2?size="+size;

    }*/
    
    function change2(index,size) {
        var name = document.getElementById("name").value;
        var score = document.getElementById("score").value;
        window.location.href="StudentServlet2?index="+index+"&size="+size+"&name="+name+"&score="+score;
    }
</script>

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值