java内存分页_freemarker实现分页 jsp实现分页 java内存分页

很多时候我们都会用到分页,模版渲染有的用的是jsp,velocity,freemarker。。。

今天搞了下分页的发现有点烧脑,哈。 首先后台进行分页的时候会直接在sql里面实现,这个都大同小异,这里来说下在内存中分页,先上代码:

java内存分页: 通过传入查询出来的总的list数据,页码页数来得到当页的list数据。

/**

* 内存分页,从1开始

* @param list list

* @param pageIndex 页码

* @param pageSize 页数

* @param  T

* @return T

*/

public static  List pagination(List list, int pageIndex, int pageSize){

final int totalSize = list.size();

pageIndex = pageIndex <= 1 ? 1 : pageIndex;

int startIndex = Math.max((pageIndex - 1) * pageSize, 0);

startIndex = Math.min(startIndex, totalSize);

int endIndex = startIndex + pageSize;

endIndex = Math.min(endIndex, totalSize);

return list.subList(startIndex, endIndex);

}

####后台得到数据之后需要由前端渲染得到分页html代码,下面是分别使用freemarker和jsp的实现.

使用freemarker,可以定义分页宏方便的解决这个问题。

#if>

pageSize)>

#if>

#if>

1)>

<<

#if>

5)>

#if>

...

#if>

pageCount)>

#if>

${index?c} ${index?c}

#if>

#list>

pageCount)>

#if>

...

#if>

>>

#if>

#macro>

使用jsp,这里我是直接在java代码里实现的分页插件。

/**

* 分页工具

* @param pageUrl

* @param pageIndex

* @param pageSize

* @param totalCount

* @return string

*/

public static String page(String pageUrl,int pageIndex,int pageSize,long totalCount){

StringBuilder stringBuilder = new StringBuilder("");

if( pageIndex<=0 ){

pageIndex=1;

}

if( (pageIndex*pageSize-totalCount) >pageSize ){

return stringBuilder.toString(); // 恶意翻页

}

if( totalCount<=pageSize ){

return stringBuilder.toString(); //只有一页就不显示了

}

stringBuilder.append("

");

return stringBuilder.toString();

}

像这样就可以了,至于传入的url是什么鬼,比如"index.jsp?p="或者"index.jsp?type=XXX&t=XXX&p="。

这里我自己定义的页码参数是p,看自己心情喽。

总之不管你使用何种方法,这几个参数是需要的:传入的需要拼接的url,页码pageIndex,一页显示多少数据pageSize,  总共多少totalCount.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值