分页的方法有很多,第三方组件用的也不少,但是总体思路还是一样的下面是我用Pager写的分页小例子,这是在参照别人的基础上做的一些改动,首先将pager-taglib.jar和pager-taglib.tld分别放在lib文件和WEB-INF目录下
客户端jsp代码
jsptags.jsp如下
也许有人会问参数pageNo的值感觉好像一样,其实不然,标签库类在处理标签时会根据标签名以及属性返回的是不同的结果
服务器端代码
客户端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();
}
}