List<Map>有关分页问题,在线等。。。 我后台现在有一个方法反回一个list集合,里面存放的是map map里面的内容是<1,"xx">的形式现在我要在jsp页面把数据取出来然后分页,前提是不方便操作数据库,分页能否在前台控制, 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你想把数据全放到JSP页面上?10w条记录的话…… 我后台有一个方法返回的是list 集合, 现在我要在前台分页,不知道怎么分法,最好是不要去操作后台了,只直在前台控制分页 是呀,因为我取数据不是用的JDBC 没有直接和数据 库打交道所以不方便对数据库操作 就是说你在JSP页面上得到全部数据,然后想分页显示吗?这好像是很不明智,你写个分页类之类的。 最好在后台操作吧 如果真的必须要在前台控制的话就是先在JSP上取出LIST的集合 然后在显示的时候做个判断,用<logic:iterator>标签 不方便操作数据库就不能在后台分页?为什么?后台取到List<Map>后不是一样可以利用内存来分页吗?不管这个List<Map>是否来源于数据库,非要把压力放到客户端? 既然是List那用get(index)取喽,还不是跟数据库一样操作 <%int pagenum = 0;int pagesize = 3;for(int i=0; i<pagesize; i++){ Map map = li.get(pagenum * pagesize + i ); out.print(map.get(i)+"<br/>");}%> 那样的话不是就直接操作list嘛就看控制要查出多少条数据来而已。推荐是后台分页。。 <%int pagenum = 0;int pagesize = 3;for(int i=0; i<pagesize; i++){ Map map = li.get(pagenum * pagesize + i); out.print(map.get(i)+"<br/>");}%> 提一个思路.楼主的意思是缓存分页?不从数据库中取值?系统启动的时候一次加载所有数据到List中.其实这是提高性能的方法.楼主把所有数据取出后.定义一个每页显示条数,就可以得到总页数了吧.然后根据总页数,用list.get方法得到具体页的数据应该是几到几.就可以了.如果不想走后台.只在前台操作的话.那就一次用总页数全部除出来.然后用生成<c:forEach>,用DIV包住,点某一页,某个div展示,其他隐藏,大概思路就是这样,还请指正. SQL语句可以这么写:select * from 表名 order by 列名 desc limit 起始数,数量我看的书上是这么写的,你可以网上查查看 这个需求怎么看怎么别扭,至少是现在还没触及过,哈哈。是这样,不管你通过什么方式从数据库查询结果,返回了一个list,然后list里还套着map你要是想直接把list不管数据量有多大的话都返回给页面做分页,这个有点儿过分啦……呵呵你可以这样,后台专门再写一个分页的封装,返回给页面的最好只是要显示的第几页的数据,页面永远只是做数据的展示和录入,千万不要放太多的业务逻辑在里边,分页的逻辑最好能在后台封装好不知时候可以解决楼主的疑虑…… 如果可以操作sql语句,建议用存储过程。 都不能直接和数据库打交道还怎么SQL, 给个实例你吧:http://blog.csdn.net/luohuijun619/archive/2009/11/22/4853616.aspx这例子你参考最后两个页面就可以了,这例子挺有参考价值的来拿分的 如果需求真是这样的话,可以考虑将list放到session中,这样分页的时候就没必要再去查list的内容了,具体怎么分页无非就是那几个参数,每页显示的数目,总记录数,当前页数,总页数,楼主找个例子先把分页的原理搞清楚了再说 如何从网页中下载java的程序? 请教Java+数据库高手。 webservice 乱码 select标签list 帮忙查错 一个表的设计问题 有没有讨论 jasperreports 和 ireport 的论坛啊? TOMCAT:web.xml配置SERVLET引起的奇怪的错误信息,很头痛,请帮忙解答 困扰了很久的问题---请大牛赐教 tomcat+win98的安装 用dfs完成树性帖子的显示,每次都新建一个Statement 和 ResultSet好慢 .jsp的登陆界面中用session保存信息的问题 JSP读写卡的问题。
现在我要在前台分页,不知道怎么分法,最好是不要去操作后台了,只直在前台控制分页
<%
int pagenum = 0;
int pagesize = 3;
for(int i=0; i<pagesize; i++){
Map map = li.get(pagenum * pagesize + i );
out.print(map.get(i)+"<br/>");
}
%>
推荐是后台分页。。
<%
int pagenum = 0;
int pagesize = 3;
for(int i=0; i<pagesize; i++){
Map map = li.get(pagenum * pagesize + i);
out.print(map.get(i)+"<br/>");
}
%>
楼主的意思是缓存分页?不从数据库中取值?系统启动的时候一次加载所有数据到List中.其实这是提高性能的方法.
楼主把所有数据取出后.定义一个每页显示条数,就可以得到总页数了吧.然后根据总页数,用list.get方法得到具体页的数据应该是几到几.就可以了.如果不想走后台.只在前台操作的话.那就一次用总页数全部除出来.然后用生成
<c:forEach>,用DIV包住,点某一页,某个div展示,其他隐藏,大概思路就是这样,还请指正.
我看的书上是这么写的,你可以网上查查看
是这样,不管你通过什么方式从数据库查询结果,返回了一个list,然后list里还套着map
你要是想直接把list不管数据量有多大的话都返回给页面做分页,这个有点儿过分啦……呵呵
你可以这样,后台专门再写一个分页的封装,返回给页面的最好只是要显示的第几页的数据,
页面永远只是做数据的展示和录入,千万不要放太多的业务逻辑在里边,分页的逻辑最好能在后台封装好
不知时候可以解决楼主的疑虑……
都不能直接和数据库打交道还怎么SQL,