Pager标签分页

分页的方法有很多,第三方组件用的也不少,但是总体思路还是一样的下面是我用Pager写的分页小例子,这是在参照别人的基础上做的一些改动,首先将pager-taglib.jar和pager-taglib.tld分别放在lib文件和WEB-INF目录下
客户端jsp代码

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://jsptags.com/tags/navigation/pager" prefix="pg"%>
<jsp:useBean id="pm" scope="page"
class="com.test.pagemanager.PageManager" />
<html>
<head>

</head>
<body>

<pg:pager items="<%=pm.getSize()%>"
index="center" maxPageItems="5" maxIndexPages="5"
isOffset="<%=false%>"
export="pageOffset,currentPageNumber=pageNumber" scope="request">
<%
int pageNum = 1;
if (request.getParameter("pageNo") != null){
pageNum = Integer.valueOf(request.getParameter("pageNo"));
}
int pageSize = 5;
List<String> resultList = pm.query(pageNum, pageSize);

%>
<table>

<%
int resultListSize = resultList.size();
for (int i = 0; i < resultListSize; i++) {
%>
<tr>
<td><%=resultList.get(i)%></td>
</tr>
<%
}
%>
</table>

<pg:index>
<jsp:include page="jsptags.jsp" flush="true" />
</pg:index>
</pg:pager>
</body>
</html>


jsptags.jsp如下

<%@ page session="false" contentType="text/html;charset=utf-8"%>
<%@ taglib uri="http://jsptags.com/tags/navigation/pager" prefix="pg"%>

<pg:first>
<a href="<%=pageUrl%>&pageNo=<%=pageNumber%>"><nobr>
[首页]
</nobr> </a>
</pg:first>

<pg:prev>
<a href="<%=pageUrl%>&pageNo=<%=pageNumber%>"><nobr>
[前一页]
</nobr> </a>
</pg:prev>

<pg:pages>
<a href="<%=pageUrl%>&pageNo=<%=pageNumber%>"><%=pageNumber%></a>
</pg:pages>

<pg:next>
<a href="<%=pageUrl%>&pageNo=<%=pageNumber%>"><nobr>
[下一页]
</nobr> </a>
</pg:next>

<pg:last>
<a href="<%=pageUrl%>&pageNo=<%=pageNumber%>"><nobr>
[尾页]
</nobr> </a>
</pg:last>


也许有人会问参数pageNo的值感觉好像一样,其实不然,标签库类在处理标签时会根据标签名以及属性返回的是不同的结果

服务器端代码

package com.test.pagemanager;

import java.util.ArrayList;
import java.util.List;

public class PageManager {
private static List<String> allResult = null;

static {
allResult = new ArrayList<String>(); //静态代码快,虚拟机加载类的时候实例化一次,实例化对象的时候将不再执行
allResult.add(" black ");
allResult.add(" black ");
allResult.add(" black ");
allResult.add(" black ");
allResult.add(" black ");

allResult.add(" blue ");
allResult.add(" blue ");
allResult.add(" blue ");
allResult.add(" blue ");
allResult.add(" blue ");

allResult.add(" yellow ");
allResult.add(" yellow ");
allResult.add(" yellow ");
allResult.add(" yellow ");
allResult.add(" yellow ");

allResult.add(" green ");
allResult.add(" green ");
allResult.add(" green ");
allResult.add(" green ");
allResult.add(" green ");

allResult.add(" kobe ");
allResult.add(" kobe ");
allResult.add(" kobe ");
allResult.add(" kobe ");
}

public List<String> query(int pageNum, int pageSize) { //pageNum 为第几页,pageSize为页面大小即页面显示几条记录

List<String> returnList = new ArrayList<String>();

int start = (pageNum - 1) * pageSize;

int end = start + pageSize - 1;

if (start >= allResult.size())
return returnList;
for (int i = 0; i < allResult.size(); i++) {
if (i >= start && i <= end)
returnList.add(allResult.get(i)); //根据要求将所需的结果集添加到returnList并返回到客户端
}
return returnList;
}


public int getSize() {
return allResult.size();
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值