java中对list分页并显示数据到页面实例代码

有时候需要根据条件查询得出的数据较多,需要分页显示到页面上。这时点击下一页就不方便每次带查询条件在数据库中分页。可以在list中进行分页。

page的model类:

public class Page {
  private Integer currentPage;//当前页
  private int pageSize;//每页显示记录条数
  private int totalPage;//总页数
  private List<?> dataList;//每页显示的数据
  private int star;//开始数据 

  public Integer getCurrentPage() {
    return currentPage;
  }
  public void setCurrentPage(Integer currentPage) {
    this.currentPage = currentPage;
  }
  public int getPageSize() {
    return pageSize;
  }
  public void setPageSize(int pageSize) {
    this.pageSize = pageSize;
  }
  public int getTotalPage() {
    return totalPage;
  }
  public void setTotalPage(int totalPage) {
    this.totalPage = totalPage;
  }
  public List<?> getDataList() {
    return dataList;
  }
  public void setDataList(List<?> dataList) {
    this.dataList = dataList;
  }
  public int getStar() {
    return star;
  }
  public void setStar(int star) {
    this.star = star;
  }
} 

控制层:

@RequestMapping("fenye.do")
  public String fen(Page page,HttpServletRequest request){ 

    try {
      //查询出的list数据
      List<Data> showdata=loginService.selectyichall();
      //刚开始的页面为第一页
      if (page.getCurrentPage() == null){
        page.setCurrentPage(1);
      } else {
        page.setCurrentPage(page.getCurrentPage());
      }
      //设置每页数据为十条
      page.setPageSize(10);
      //每页的开始数
      page.setStar((page.getCurrentPage() - 1) * page.getPageSize());
      //list的大小
      int count = showdata.size();
      //设置总页数
      page.setTotalPage(count % 10 == 0 ? count / 10 : count / 10 + 1);
      //对list进行截取
      page.setDataList(showdata.subList(page.getStar(),count-page.getStar()>page.getPageSize()?page.getStar()+page.getPageSize():count));
      //设置作用域
      request.setAttribute("paging", page);
      return "add/show.jsp"; 

    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      return "mistake.jsp";
    }
  } 

jsp页面:

<script type="text/javascript" language="javascript">
 function goPage(page){
 location.href="fenye.do?currentPage=" rel="external nofollow" +page;
 }
</script> 

<div>
 <table width="100%" border="0" align="center" cellspacing="1" >
 <c:forEach items="${paging.dataList }" var="upl">
   <tr>
    <td align="center">${upl.name1 }</td>
    <td align="center">${upl.name2 }</td>
    <td align="center">${upl.name3 }</td>
   </tr>
   </c:forEach>
 </table>
</div>
<div style="text-align:center; margin-top:10px;color: white;" id="venderfen">
 <c:if test="${paging.totalPage > 0}">
  当前第 ${paging.currentPage } 页/共  ${paging.totalPage} 页
 </c:if>
 <c:if test="${paging.totalPage > 1}">
   <c:choose>
     <c:when test="${paging.currentPage==2 && paging.totalPage==2}">
      <a onclick="goPage(1)">首页</a>
      <a onclick="goPage(${paging.currentPage-1})">上一页</a>
     </c:when>
     <c:when test="${paging.currentPage==1}">
      <a onclick="goPage(${paging.currentPage+1})">下一页</a>
      <a onclick="goPage(${paging.totalPage})">末页</a>
     </c:when>
     <c:when test="${paging.currentPage==paging.totalPage}">
      <a onclick="goPage(1)">首页</a>
      <a onclick="goPage(${paging.currentPage-1})">上一页</a>
     </c:when>
     <c:otherwise>
      <a onclick="goPage(1)">首页</a>
      <a onclick="goPage(${paging.currentPage-1})">上一页</a>
      <a onclick="goPage(${paging.currentPage+1})">下一页</a>
      <a onclick="goPage(${paging.totalPage})">末页</a>
     </c:otherwise>
  </c:choose>
  </c:if>
 共 ${paging.total} 条
</div>  
StringBuilder sb = new StringBuilder();
sb.append("SELECT distinct(m.time) ");
sb.append(" from tbl_monitor m left join tbl_variable v on m.variable = v.id ");
sb.append(" left join tbl_variable_group g on v.variable_group = g.id "); 

sb.append(" where v.active = true and g.active=true ");
//sb.append(" AND m.variable in " + variableIds);
sb.append(" AND exists ( select vtemp.id from tbl_variable vtemp where vtemp.selected=true and vtemp.id=m.variable)");
sb.append(" AND m.time between " + beginTime + " AND " + endTime );
sb.append(" order by m.time asc");
Query query = em.createNativeQuery(sb.toString());
//满足搜索条件的所有的时间的条数
int total = query.getResultList().size();
tableView.setTotal(total);
tableView.setTotalPage(total % page.getPageSize() == 0 ? total / page.getPageSize() : (total / page.getPageSize()) + 1);
query.setFirstResult(from);
query.setMaxResults(offset);
timeList = query.getResultList(); 

总结

以上就是本文关于java中对list分页并显示数据到页面实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

(0)

相关推荐

  • java 对ArrayList进行分页实例代码

    java 对ArrayList进行分页 概述 系统与系统之间的交互,通常是使用接口的形式.假设B系统提供了一个批量的查询接口,限制每次只能查询50条数据,而我们实际需要查询500条数据,这个时候可以对这500条数据做分批操作,分10次调用B系统的批量接口. 如果B系统的查询接口是使用List作为入参,那么要实现分批调用的话,可以利用ArrayList的subList方法来处理. 代码 sublist方法的定义: List<E> subList(int fromIndex, int toInde

  • java中利用List的subList方法实现对List分页(简单易学)

    以下是介绍利用List的subList方法实现对List分页,废话不多说了,直接看代码把 /** *//** * List分页 * 实现:利用List的获取子List方法,实现对List的分页 * @author 显武 * @date 2010-1-8 16:27:31 * */ import java.util.ArrayList; import java.util.List; public class PageModel { private int page = 1; // 当前页 publ

  • java中对list分页并显示数据到页面实例代码

    有时候需要根据条件查询得出的数据较多,需要分页显示到页面上.这时点击下一页就不方便每次带查询条件在数据库中分页.可以在list中进行分页. page的model类: public class Page { private Integer currentPage;//当前页 private int pageSize;//每页显示记录条数 private int totalPage;//总页数 private List<?> dataList;//每页显示的数据 private int star;

  • Django中使用jquery的ajax进行数据交互的实例代码

    jquery框架中提供了$.ajax.$.get.$.post方法,用于进行异步交互,由于Django中默认使用CSRF约束,推荐使用$.get 示例:实现省市区的选择 最终实现效果如图: 将jquery文件拷贝到static/js/目录下 打开booktest/views.py文件,定义视图area1,用于显示下拉列表 #提供显示下拉列表的控件,供用户操作 def area1(request): return render(request,'booktest/area1.html') 打开bo

  • 详解Java中两种分页遍历的使用姿势

    在日常开发中,分页遍历迭代的场景可以说非常普遍了,比如扫表,每次捞100条数据,然后遍历这100条数据,依次执行某个业务逻辑:这100条执行完毕之后,再加载下一百条数据,直到扫描完毕 那么要实现上面这种分页迭代遍历的场景,我们可以怎么做呢 本文将介绍两种使用姿势 常规的使用方法 借助Iterator的使用姿势 1. 数据查询模拟 首先mock一个分页获取数据的逻辑,直接随机生成数据,并且控制最多返回三页 public static int cnt = 0; private static List

  • Java中Elasticsearch 实现分页方式(三种方式)

    目录 ES 简介 ES 的特点: 一.from + size 浅分页 二.scroll 深分页 scroll删除 三.search_after 深分页 ES 简介 Elasticsearch 是一个基于 Lucene 实现的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口.Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎.Elasticsearch用于云计算中,能够达到实时搜索,稳定

  • 在java中判断两个浮点型(float)数据是否相等的案例

    示例代码: public static void main(String[] args) { float a = 10.222222225f; float b = 10.222222229f; System.out.println("使用==判断是否相等:" + (a == b));// 超出精度范围 System.out.println("使用Math.abs()判断是否相等:" + (Math.abs(a - b) >= 0)); System.out.p

  • JAVA 中实现整句汉字拆分、转换为ASCII实例详解

    JAVA 中实现整句汉字拆分.转换为ASCII实例详解 大家都知道,一个汉字等于两个byte的大小.二进制数据通过网络传输时,如果两个byte都超过128则会合并成一个Unicode(汉字)字符,本文的代码主要实现的功能是:把这些汉字拆分为byte,然后重新变为ASCII类型的字符串. public static String ChineseToASCII(byte[] rec) { //从字节读取内容 ByteArrayInputStream bais = new ByteArrayInput

  • java向文件中追加内容与读写文件内容源码实例代码

    java向文件中追加内容与读写文件内容源码实例代码 向文件尾加入内容有多种方法,常见的方法有两种: RandomAccessFile类可以实现随机访问文件的功能,可以以读写方式打开文件夹的输出流 public void seek(long pos)可以将读写指针移到文件尾,参数Pos表示从文件开头以字节为单位测量的偏移位置,在该位置文件指针. public void write(int pos)将数据写到读写指针后面,完成文件的追加.参数pos表示要写入的Byte 通过FileWrite打开文件

  • PHP中的数组分页实现(非数据库)实例讲解

    在日常开发的业务环境中,我们一般都会使用 MySQL 语句来实现分页的功能.但是,往往也有些数据并不多,或者只是获取 PHP 中定义的一些数组数据时需要分页的功能.这时,我们其实不需要每次都去查询数据库,可以在一次查询中把所有的数据取出来,然后在 PHP 的代码层面进行分页功能的实现.今天,我们就来学习一下可以实现这个能力的一些函数技巧. 首先,我们还是准备好测试数据. $data = [ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'

  • Java 中的vector和list的区别和使用实例详解

    要了解vector,list,deque.我们先来了解一下STL. STL是Standard Template Library的简称,中文名是标准模板库.从根本上说,STL是一些容器和算法的集合.STL可分为容器(containers).迭代器(iterators).空间配置器(allocator).配接器(adapters).算法(algorithms).仿函数(functors)六个部分.指针被封装成迭代器,这里vector,list就是所谓的容器. 我们常常在实现链表,栈,队列或者数组时,

  • java 中模拟UDP传输的发送端和接收端实例详解

    java 中模拟UDP传输的发送端和接收端实例详解 一.创建UDP传输的发送端 1.建立UDP的Socket服务: 2.将要发送的数据封装到数据包中: 3.通过UDP的Socket服务将数据包发送出去: 4.关闭Socket服务. import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class

随机推荐