java中对list分页并显示数据到页面实例代码
作者:你的承諾早已氾黃 发布时间:2023-05-22 00:39:10
标签: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();
来源:http://blog.csdn.net/u012843873/article/details/79216654


猜你喜欢
- 在定位JVM性能问题时可能会遇到内存泄露导致JVM OutOfMemory的情况,在使用Tomcat容器时如果设置了reloadable=”
- 异步接口的声明我们已经了解到,如果一个方法是异步的,那么这个方法的返回值类型是Task<T>,那么接口中该如何规定异步方法呢?一
- 前言相信很多人选择Spring Boot主要是考虑到它既能兼顾Spring的强大功能,还能实现快速开发的便捷。我们在Spring Boot使
- 项目里使用了Feign进行远程调用,有时为了问题排查,需要开启请求和响应日志下面简介一下如何开启Feign日志:注:本文基于spring-b
- spring boot 使用profile来分区配置很多时候,我们项目在开发环境和生成环境的环境配置是不一样的,例如,数据库配置,在开发的时
- 以前也模仿者ireader实现了书架的效果,但是那种是使用listview实现的,并不好用。绝大多数都是用gridview实现的,网上这方面
- 定义MD全称Message-Digest,即信息摘要,所以MD家族的算法也叫信息摘要算法MD家族有MD2、MD3、MD4、MD5,一代比一代
- 背景原生的TextView是支持跑马灯效果的,但是在项目中实际用了之后,达不到需求,原因是内容滚动太慢,速度无法调节。因此,需要自定义一个可
- /** * 考拉兹猜想:Collatz Conjecture * 又称为3n+1猜想、冰雹猜想、角谷猜想、哈塞猜想、乌拉姆猜想或叙拉古猜
- 1. 前言老板说,明天甲方要来看产品,你得造点数据,而且数据必须是“真”的,演示效果要好看一些,这样他才会买我们的产品,我好明年给你换个嫂子
- 本文实例为大家分享了java代码获取新浪微博应用的access token的具体代码,供大家参考,具体内容如下package test;im
- 若要在 C++ 中实现异常处理,你可以使用 try、throw 和 catch 表达式。首先,使用 try 块将可能引发异常的一个或多个语句
- Object 类位于 java.lang 包中,是所有 Java 类的祖先,Java 中的每个类都由它扩展而来。定义Java类时如果没有显示
- 一、基本回收算法 1. 引用计数(Reference Counting) 比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一
- 最近我要做一个爬虫。这个爬虫需要如下几个步骤:1 填写注册内容(需要邮箱注册)2 过拖拽验证码(geetest)3 注册成功会给邮箱发一封确
- public class MainActivity extends Activity { private Handler hand
- 本文实例讲述了java两种单例模式用法。分享给大家供大家参考,具体如下:按照加载方式的不同,单例模式有两种实现:private:只能在同一个
- 对象的读写使用ObjectInputStream和ObjectOutputStream读写对象(序列化与反序列化)。只有字节流没有字符流.类
- 一、先看下项目结构CodeGenerator:生成器主类resources下的mapper.java.vm:一个模板类,用以在生成dao层时
- 本文实例为大家分享了java实现人机猜拳游戏的具体代码,供大家参考,具体内容如下完成人机猜拳互动游戏的开发,用户通过控制台输入实现出拳,电脑