分页显示数据的java工具类

参数解释:

list为所有的数据列表

pageStr为当前页

rowSize为行大小

使用方法:

在struts2框架下,通过get/set list,pageStr,rowSize

例如:

private Map<String, Object> mapPage = new HashMap<String, Object>();

//调用分页显示数据的工具方法

mapPage =PageUtil.getPageObj(list, pageStr, rowSize);

//将mapPage保存到request中,以备在jsp页面调用

request.setAttribute("map", mapPage);

//在jsp页面中显示分页数据

<div class="am-cf">
  <div class="am-fr">
	<ul class="am-pagination">
		 共 ${map.size} 条记录    共 ${map.totalSize} 页  
		<li ><a href="javascript:linkPage(1);">首页</a></li>
	  <span style="white-space:pre">	</span><li ><a href="javascript:linkPage(${map.pre});">上一页</a></li>
	  <span style="white-space:pre">	</span><s:iterator value="mapPage.inList" id="i">
		<li ><a href="javascript:linkPage(${i});">
			<c:choose>
			<c:when test="${map.page == i }">
				<span style="font-weight: bold">${i}</span>
			</c:when>
			<c:otherwise>
				<span >${i}</span>
			</c:otherwise>
			</c:choose>
		</a></li>
	  <span style="white-space:pre">	</span></s:iterator>
	  <li ><a href="javascript:linkPage(${map.next});">下一页</a></li>
	  <li ><a href="javascript:linkPage(${map.totalSize});">末页</a></li>
	</ul>
  </div>
</div>

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class PageUtil {

	private static Map map = new HashMap();

	/**
	 * 分页查询
	 * 
	 * @param list
	 *            实体List
	 * @param pageStr
	 *            当前页
	 * @param rowSize
	 *            每页显示数量
	 * @return
	 */
	public static Map getPageObj(List list, String pageStr,
			Integer rowSize) {
		int pageNum = 1;
		if (pageStr == null || Integer.parseInt(pageStr) == 0) {
			pageNum = 1;
		} else {
			pageNum = Integer.parseInt(pageStr);
		}
		// 结束页为
		int endPage = pageNum + rowSize;
		// 上一页
		int prePage = pageNum - 1;
		// 下一页
		int nextPage = pageNum + 1;

		int perPageNum = (rowSize == null || rowSize <= 0) ? 5 : rowSize;
		int totalSize = 0;
		if (list != null) {
			totalSize = list.size();
		}

		// 计算总页数
		int pageCount = 0;
		if (totalSize % perPageNum == 0) {
			pageCount = totalSize / perPageNum;
		} else {
			pageCount = (totalSize / perPageNum) + 1;
		}

		// 判断上一页和下一页
		if (nextPage > pageCount) {
			nextPage = pageCount;
		}
		if (prePage < 1) {
			prePage = 1;
		}

		List pageList = new ArrayList();
		// 计算需要显示的结果数据
		if(list != null){
			for (int i = ((pageNum - 1) * perPageNum); i < totalSize
					&& i < ((pageNum) * perPageNum) && pageNum > 0; i++) {
				pageList.add(list.get(i));
			}
		}
		
		// 保存要显示的页码
		List inList = new ArrayList();
		if(pageCount > rowSize) {
			if(endPage > pageCount) {
				for (int i = (pageCount - rowSize); i <= pageCount; i++) {
					inList.add(i);
				}
			}else {
				for (int i = pageNum; i <= endPage; i++) {
					inList.add(i);
				}
			}
		} else {
			for (int i = 1; i <= pageCount; i++) {
				inList.add(i);
			}
		}
		map.put("totalSize", pageCount);
		if(list != null){
			map.put("size", list.size());
		}else {
			map.put("size", 0);
		}
		
		map.put("pageList", pageList);
		map.put("inList", inList);
		map.put("pre", prePage);
		map.put("next", nextPage);
		map.put("page", pageNum);
		
		return map;
	}
} map = new HashMap();

	/**
	 * 分页查询
	 * 
	 * @param list
	 *            实体List
	 * @param pageStr
	 *            当前页
	 * @param rowSize
	 *            每页显示数量
	 * @return
	 */
	public static Map getPageObj(List list, String pageStr,
			Integer rowSize) {
		int pageNum = 1;
		if (pageStr == null || Integer.parseInt(pageStr) == 0) {
			pageNum = 1;
		} else {
			pageNum = Integer.parseInt(pageStr);
		}
		// 结束页为
		int endPage = pageNum + rowSize;
		// 上一页
		int prePage = pageNum - 1;
		// 下一页
		int nextPage = pageNum + 1;

		int perPageNum = (rowSize == null || rowSize <= 0) ? 5 : rowSize;
		int totalSize = 0;
		if (list != null) {
			totalSize = list.size();
		}

		// 计算总页数
		int pageCount = 0;
		if (totalSize % perPageNum == 0) {
			pageCount = totalSize / perPageNum;
		} else {
			pageCount = (totalSize / perPageNum) + 1;
		}

		// 判断上一页和下一页
		if (nextPage > pageCount) {
			nextPage = pageCount;
		}
		if (prePage < 1) {
			prePage = 1;
		}

		List pageList = new ArrayList();
		// 计算需要显示的结果数据
		if(list != null){
			for (int i = ((pageNum - 1) * perPageNum); i < totalSize
					&& i < ((pageNum) * perPageNum) && pageNum > 0; i++) {
				pageList.add(list.get(i));
			}
		}
		
		// 保存要显示的页码
		List inList = new ArrayList();
		if(pageCount > rowSize) {
			if(endPage > pageCount) {
				for (int i = (pageCount - rowSize); i <= pageCount; i++) {
					inList.add(i);
				}
			}else {
				for (int i = pageNum; i <= endPage; i++) {
					inList.add(i);
				}
			}
		} else {
			for (int i = 1; i <= pageCount; i++) {
				inList.add(i);
			}
		}
		map.put("totalSize", pageCount);
		if(list != null){
			map.put("size", list.size());
		}else {
			map.put("size", 0);
		}
		
		map.put("pageList", pageList);
		map.put("inList", inList);
		map.put("pre", prePage);
		map.put("next", nextPage);
		map.put("page", pageNum);
		
		return map;
	}
}



更多推荐

分页显示数据的java工具类