`
freeport
  • 浏览: 60921 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

我的分页

阅读更多

我的分页有两个部分组成


这是我的分页类

PageList.java 

/**
 * 
 * 用于保存分页信息和负责分页逻辑运算的类,这个类配合标签使用最佳!
 * 这个类不是线程安全的
 * 
 * 
 * 使用方法: 
 * PagedList pList=new PagedList();
 * pList.setPageIndex();//当前页的页码
 * pList.setPageSize();//每页的大小
 * 
 * pList.setRowCount(dao.count(...));//获取数据库里的总记录数
 * pList.setList(dao.list(...));//从数据库获取当前页的数据
 * 
 * pList.addParam("category","5");//设置其他的url参数
 * request.setAttribute("pagedList",pList);//放入request
 * 至此,PagedList的数据填充就完成了,下一步是在JSP页面内做显示
 * 
 * 使用标签的时候,只需要这样:
 * 
 * 
 * @author Jonney
 */
public class PagedList {
	/**
	 * 当前页码
	 */
	private int pageIndex;

	/**
	 * 页大小
	 */
	private int pageSize;

	/**
	 * 页数量
	 */
	private int pageCount;

	/**
	 * 行数量
	 */
	private long rowCount;

	/**
	 * 目标页的uri
	 */
	private String uri;

	/**
	 * 数据列表
	 */
	private List list;

	private String paramEncoding = "utf-8";

	private List paramList = new ArrayList();

	/**
	 * 唯一的构造器,强制设置pageSize和pageIndex,这样才能保证setRowCount(int)不会出错
	 * 
	 * @param pageIndex
	 *            当前页码
	 * @param pageSize
	 *            页大小
	 */
	public PagedList(int pageIndex, int pageSize) {
		this.pageIndex = pageIndex < 1 ? 1 : pageIndex;	
		this.pageSize = pageSize;
	}

	//一些setter getter 方法

	/**
	 * 
	 * @param key
	 * @param value
	 */
	public void addParam(String key, String value) {
		if (key == null) {
			return;
		}
		if (value == null) {
			value = "";
		}
		Param p = new Param(key, value);
		paramList.add(p);
	}
 
	/**
	 * 
	 * @return
	 */
	public String getParams() {
		StringBuilder sb = new StringBuilder();
		try {
			for (Param p : paramList) {
				sb.append('&');
				sb.append(URLEncoder.encode(p.key, paramEncoding));
				sb.append('=');
				sb.append(URLEncoder.encode(p.value, paramEncoding));
			}
		} catch (UnsupportedEncodingException e) {
			// throw new RuntimeException(e);
		}
		return sb.toString();
	}

	/**
	 * 取当前页的第一行数据在数据库中的行号,在操作数据库的时候有用
	 * 
	 * @return
	 */
	public int getFirstRowInThisPage() {
		return (pageIndex - 1) * pageSize;
	}

	/**
	 * 是否第一页
	 * 
	 * @return
	 */
	public boolean isFirstPage() {
		return pageIndex <= 1 ? true : false;
	}

	/**
	 * 是否最后一页
	 * 
	 * @return
	 */
	public boolean isLastPage() {
		return pageIndex >= pageCount ? true : false;
	}

	private class Param {

		public String key;

		public String value;

		public Param(String key, String value) {
			this.key = key;
			this.value = value;
		}
	}

	public static void main(String[] args) {
		PagedList p = new PagedList(3, 4);
		p.addParam("1", "中文");
		p.addParam("2", "22");
		p.addParam("3", "33");
		System.out.println(p.getParams());
		p.setRowCount(40);
		System.out.println(p.getPageCount());
	}
}

 

  还有一个就是tag 也就是显示的样式

<%@ tag body-content="scriptless" pageEncoding="utf-8" isELIgnored="false"%>
<%@ attribute name="pagedList" required="true" type="generator.common.pagination.PagedList" %>
<%@ attribute name="pageIndexKey" required="false" type="java.lang.String" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:if test="${pageIndexKey==null}">
  <c:set var="pageIndexKey" value="pageIndex" />
</c:if>
<div id="page" class="pagination">
<table><tbody><tr>
<c:choose>
<c:when test="${pagedList.firstPage}">
<td><a href="javascript:void(0);"><img class="page-first" src="/images/crud/page-first-disabled.gif"></a></td>
</c:when>
<c:otherwise>
<c:url var="previousPage" value="${pagedList.uri}">
<c:param name="${pageIndexKey}" value="1"/>
</c:url>
<td><a href="${previousPage}${pagedList.params}"><img class="page-first" src="/images/crud/page-first.gif"></a></td>
</c:otherwise>
</c:choose>

<c:choose>
<c:when test="${pagedList.firstPage}">
<td><a href="javascript:void(0);"><img class="page-prev" src="/images/crud/page-prev-disabled.gif"></a></td>
</c:when>
<c:otherwise>
<c:url var="previousPage" value="${pagedList.uri}">
<c:param name="${pageIndexKey}" value="${pagedList.pageIndex-1}"/>
</c:url>
<td><a href="${previousPage}${pagedList.params}"><img class="page-prev" src="/images/crud/page-prev.gif"></a></td>
</c:otherwise>
</c:choose>

<td><span>第<input type="text" class="page-num" value="${pagedList.pageIndex}" size="2" onkeydown="if(event.keyCode==13) {window.location='${pagedList.uri}?${pageIndexKey}='+this.value+'${pagedList.params}'; return false;}" >页/共${pagedList.pageCount}页</span></td>

<c:choose>
<c:when test="${pagedList.lastPage}">
<td><a href="javascript:void(0);"><img class="page-next" src="/images/crud/page-next-disabled.gif"></a></td>
</c:when>
<c:otherwise>
<c:url var="nextPage" value="${pagedList.uri}">
<c:param name="${pageIndexKey}" value="${pagedList.pageIndex+1}"/>
</c:url>
<td><a href="${nextPage}${pagedList.params}"><img class="page-next" src="/images/crud/page-next.gif"></a></td>
</c:otherwise>
</c:choose>
<c:choose>

<c:when test="${pagedList.lastPage}">
<td><a href="javascript:void(0);"><img class="page-last" src="/images/crud/page-last-disabled.gif"></a></td>
</c:when>
<c:otherwise>
<c:url var="nextPage" value="${pagedList.uri}">
<c:param name="${pageIndexKey}" value="${pagedList.pageCount}"/>
</c:url>
<td><a href="${nextPage}${pagedList.params}"><img class="page-next" src="/images/crud/page-last.gif"></a></td>
</c:otherwise>
</c:choose>
<td><span style="padding-left:20px;">共 ${pagedList.rowCount} 记录</span></td>
</tr>
</tbody>
</table>
</div>

  

    然后你action里

   

   

private Integer page =1; //第几页
private Integer pageSize=20;//每页显示多少条
private PagedList<News> pagedList;

public void setPage(Integer page){
	this.page = page;
}

public PagedList<News> getPagedList(){
	return pagedList;
}


//业务代码
pagedList = new PagedList<News>(page, pageSize);

//pagedList.addParam("category","5");

newsProxy.fillNewsList(pagedList);

 

   proxy里代码

 

  

public void fillNewsList(PagedList<News> pagedList){
	pagedList.setRowCount(newsDao.count());
	pagedList.setList(newsDao.find(pagedList.getFirstRowInThisPage(),pagedList.getPageSize()));
}

 

   jsp代码

 

  

<ext:defaultPagination pagedList="${pagedList}" pageIndexKey="page"/>

 

 

 

    

   

分享到:
评论

相关推荐

    超强php分页打包 通用分页 万能分页 ajax分页 google分页

    本压缩包“超强php分页打包 通用分页 万能分页 ajax分页 google分页”提供了一系列的分页解决方案,包括了基本的PHP分页、通用的分页实现、以及结合AJAX技术的动态分页,旨在满足各种项目需求。下面将详细介绍这些...

    分页代码 分页代码 分页代码

    分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码...

    java实现分页 jsp分页 分页

    java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页

    分页插件.zip

    在网页开发中,分页是不可或缺的一个功能,特别是在数据量庞大的时候,为了提高用户体验,将大量数据分成多个页面展示,而不是一次性加载所有内容。本文将详细介绍一个基于jQuery的分页插件,它具有代码简洁、兼容性...

    Java Ajax分页,jsp ajax分页

    在网页开发中,分页是一种常见的用户界面设计,用于处理大量数据时的高效展示。Java AJAX(Asynchronous JavaScript and XML)分页与JSP(JavaServer Pages)相结合,可以提供无需刷新整个页面即可动态加载更多内容...

    分页:高度自定义分页

    2.1.目前网络上很多分页主键,不能进行按钮选择, 2.2.甚至对样式修改的难度也较大, 2.3.使用在开发过程中由于使用到了分页功能,在这里写了一个分页功能。 3.按钮选择 之前的很多按钮是通过参数进行选择,这样不...

    js分页示例,前台分页,客户端分页,分页机制,js分页

    本篇将深入探讨JavaScript实现分页的相关知识点,包括前台分页、客户端分页、分页机制以及相关的JavaScript代码示例。 首先,我们要理解什么是分页。在Web应用中,分页是将大量数据分成多个小部分(每部分通常称为...

    jsf分页 jsf分页 jsf分页

    在JavaServer Faces (JSF)框架中,分页是一种常用的技术,用于处理大量数据时提供更好的用户体验。当数据集过大,一次性加载所有记录到页面上会导致性能下降且用户界面响应变慢。通过分页,我们可以将数据分成多个...

    java 通用分页 java 通用分页

    Java 通用分页详解 Java 通用分页是指在Java编程中对大量数据进行分页处理,以提高系统效率和性能。下面对Java通用分页的知识点进行详细说明: 1. 分页的必要性 在实际项目中,数据量可能非常大,直接查询所有...

    各种分页样式 分页风格 分页css

    各种分页样式 分页风格 分页css 分页cs.htm

    用recyclerview实现分页滑动,横向纵向分页

    本教程将深入讲解如何利用RecyclerView实现横向和纵向的分页滑动,充分利用Android原生功能。 首先,理解RecyclerView的基本结构。RecyclerView包含一个Adapter,它负责将数据集绑定到视图上,以及一个...

    分页代码 重分页代码

    在IT行业中,分页是一种常见的数据处理技术,特别是在网页应用或者大数据量的展示场景下。SSH(Struts2、Spring、Hibernate)是一个经典的Java Web开发框架组合,它为开发人员提供了强大的功能支持,包括数据的分页...

    java分页标签自定义分页标签自定义分页标签

    自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签...

    QTableWidget,QTableView分页的分页栏

    为了解决这个问题,我们可以实现分页功能,让数据分批次加载,从而提高界面响应速度。本文将深入探讨如何在`QTableWidget`和`QTableView`中实现分页栏。 首先,我们需要理解`QTableWidget`和`QTableView`的区别。`...

    WPF 分页DataGrid 分页控件的实现

    在Windows Presentation Foundation (WPF) 中,开发人员经常需要处理大量的数据展示,此时分页功能就显得尤为重要。WPF DataGrid 控件是一个强大的表格展示工具,它可以方便地展示和操作数据,而添加分页功能则可以...

    hbase查询分页分页

    因此,"HBase查询分页"成为了大数据场景下必不可少的一个功能。本文将详细探讨HBase中的分页查询机制及其应用。 首先,理解HBase的基本结构至关重要。HBase是基于Google的Bigtable设计的,它以行键(Row Key)为...

    mysql数据库实现分页

    在MySQL数据库中,分页是处理大量数据查询时不可或缺的一种技术。它允许用户按需加载数据,而不是一次性获取所有记录,从而提高了用户体验并降低了服务器负载。以下是对分页实现的详细说明: 一、基础概念 分页是将...

    asp分页,asp分页仿百度,asp分页大全

    在ASP中实现分页功能是常见的需求,特别是在处理大量数据列表时,分页能够提高用户体验,避免一次性加载过多内容导致页面加载缓慢。下面将详细探讨ASP分页的相关知识点。 一、分页的基本原理 分页主要是通过计算总...

    .net分页 asp.net分页

    在.NET开发环境中,分页是Web应用程序中一个非常常见的需求,尤其在处理大量数据时,为了提高用户体验和页面加载速度,通常会采用分页技术。ASP.NET,作为.NET框架的一部分,提供了多种实现分页的方法。本文将深入...

    超漂亮分页控件 自定义分页控件 灵活的分页控件

    "超漂亮分页控件"、"自定义分页控件"以及"灵活的分页控件"这些标签表明我们将探讨一个美观且功能丰富的分页解决方案,它可能支持个性化定制,以适应各种项目需求。 首先,让我们了解一下分页的基本原理。分页是将...

Global site tag (gtag.js) - Google Analytics