• 查询信息时对数据进行分页显示


    要对数据在前台进行分页显示,首先要了解几个数据:

    1.数据有多少条(count)

    2.每页显示几条数据(pageSize)

    ---count的值通过遍历数据所在的表来获得()

    public static int Count(String tablename) {
      conn = DBTool.getConnection();
      String sql = "select count(1) from "+tablename+" ";
      int num = 0;
      try {
        ps = conn.prepareStatement(sql);
      //    ps.setString(1,tablename);
      ResultSet rs = ps.executeQuery();
      if(rs.next()) {
        num = rs.getInt(1);
      }    
      } catch (SQLException e) {
        e.printStackTrace();
      }finally {
        DBTool.closeConnection();
      }
      return num;
    }

    获取的大致方法可参照上方代码

    ---pageSize的值由自己指定


    两个值得到后你可以通过计算得到末页的数值(lastPage)

    lastPage=count%pageSize ? count/pageSize : count/pageSize+1;(三元表达式不熟的可以百度一下)

    大致意思就是如果pageSize被count整除(用取余来判断最终整除的情况,没有余数就是能整除),那么末页的值就等于count/pageSize的值,如果不被整除,末页的值就应该等于count/pageSize+1(这是一个简单的数学常识问题,我可能说不大明白,不懂的思考下)


    准备工作完成后,开始处理主要的逻辑

    分页操作的话前台设定的操作一般为:首页  上一页  下一页  末页

    你需要在后台设定一个值代表当前页面要显示页数(index)

    首页 index=1

    上一页/下一页 index = index±1

    末页 index=lastPage

    后台代码如下

    public void queryTasks(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            String page = request.getParameter("index");//或取前台传过来的页数,如果为空,设定页数为首页
            int index = 1;
            if(page == null || !(page.length()>0)) {
                index= 1;
            }else {
                index = Integer.parseInt(page);
            }
            int num = service.CountTaskNum();//任务总数
            int pageSize = 5;//每页显示5条任务信息
            int lastPage = num%pageSize==0?num/pageSize:num/pageSize+1;
            if(index<=1) {//当在首页点击上一页或末页点击下一页的逻辑处理
                index =1;
            }else if(index >= lastPage) {
                index = lastPage;
            }
            List<Task> tasks = service.queryTasks((index-1)*pageSize, pageSize);
            List<String> list = new ArrayList<>();
            for(int i = 0;i<tasks.size();i++) {
                String[] res1 = tasks.get(i).getTaskReward().split("\*");
                String[] res2 = tasks.get(i).getTaskRewardNum().split("\*");
                String result = "";
                for(int j = 0;j<res1.length;j++) {
                    if(!("").equals(res1[j]) && !("").equals(res2[j])) {
                        System.out.println(res1[j]+"*"+res2[j]);
                        result+=res1[j]+"*"+res2[j];
                    }
                }
                list.add(result);
            }
            request.setAttribute("reward",list);
            request.setAttribute("tasks", tasks);
            request.setAttribute("index", index);
            request.setAttribute("last",lastPage);
            request.getRequestDispatcher("showTask.jsp").forward(request, response);
        }

      代码部分参照即可。

    前台的按钮代码

    <a href="TaskServlet?method=queryTasks&index=1">首页</a>
    <a href="TaskServlet?method=queryTasks&index=${index-1}">上一页</a>
    <a href="TaskServlet?method=queryTasks&index=${index+1}">下一页</a>
    <a href="TaskServlet?method=queryTasks&index=${last}">尾页</a>

    大致情况就是这样了

      

  • 相关阅读:
    10-10-12分页机制(xp)
    段间跳转之任务门
    段间跳转之TSS段
    mysql索引
    cat /proc/meminfo
    This system is not registered to Red Hat Subscription Management报错
    CentOS 6.5安装zabbix
    KVM(系统虚拟化模块)安装
    Linux时区更改
    学习ruby/rails, rvm是必不可少的工具之一
  • 原文地址:https://www.cnblogs.com/-217/p/12603128.html
Copyright © 2020-2023  润新知