`

基于struts2的分页组件

JSP 
阅读更多

自己写了一个分页

凑合着用

根据前2后3的设定:

当选择了第5页,生成5的前2页和5的后3页,则indexList为: 345678

当选择了第6页,则indexList为: 456789

 

package com.mtea.shop.model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import com.mtea.shop.util.MathUtil;


/**
 * 分页
 * @author macrotea
 * 2011-3-27
 */
public class Pager implements Serializable{
	private static final long serialVersionUID = 1L;
	
	//默认页大小
	private static final int DEFALT_PAGE_SIZE=5;
	//页码索引限制为5个
	private static final int DEFALT_DIPSLAY_LIMIT=5;
	//前导限制2
	private static final int DEFALT_PREV_LIMIT=2;
	//后续限制3
	private static final int DEFALT_NEXT_LIMIT=3;
	
	//当前页码
	private int pageNumber;
	//每页大小
	private int pageSize;
	//总页数
	private int pageTotal;
	//总记录数
	private int rowTotal;
	//数据链表
	private List dataList;
	
	//上一页
	private int prevPage;
	//下一页
	private int nextPage;
	//第一页
	private int firstPage;
	//最后一页
	private int lastPage;
	//页码索引链表
	private List<Integer> indexList;
	
	
	public static void main(String[] args) {
		Pager pager=new Pager(12,DEFALT_PAGE_SIZE,56,null);
	}
	
	
	public Pager() {
		super();
	}

	public Pager(int pageNumber, int pageSize, int rowTotal, List dataList) {
		super();
		this.pageNumber = pageNumber;
		this.pageSize = pageSize;
		this.rowTotal = rowTotal;
		this.dataList = dataList;
		extInit();
	}
	
	public void extInit(){
		/*handle pageTotal*/ 
		this.pageTotal=MathUtil.selfCountByRemainder(rowTotal, pageSize);
		
		/*handle nextPage&prevPage*/ 
		if (this.pageTotal > 0 && this.pageTotal > this.pageNumber) {
			this.nextPage = this.pageNumber + 1;
		}else{
			//当pageNumber太大,则下一页也设置为pageTotal
			this.nextPage=pageTotal;
		}
		if (this.pageNumber > 1&& this.pageTotal >= this.pageNumber) {
			this.prevPage = this.pageNumber - 1;
		}else{
			//当pageNumber==1,则上一页也设置为1
			this.prevPage=1;
		}
		
		/*handle firstPage&lastPage*/ 
		firstPage=1;
		lastPage=pageTotal;
		
		/* handle indexList */
		indexList = new ArrayList<Integer>();
		if (this.pageTotal >= this.pageNumber && pageNumber >= DEFALT_DIPSLAY_LIMIT) {
			// 处理中间情况:前2后3
			for (int i = pageNumber - DEFALT_PREV_LIMIT; i < pageNumber; i++) {
				System.out.println("处理中间情况:" + i);
				indexList.add(i);
			}
			//处理尾部情况
			if (pageTotal - pageNumber >= DEFALT_NEXT_LIMIT) {
				for (int i = pageNumber; i <= pageNumber + DEFALT_NEXT_LIMIT; i++) {
					System.out.println("处理尾部情况##:" + i);
					indexList.add(i);
				}
			} else {
				for (int i = pageNumber; i <= pageTotal; i++) {
					System.out.println("处理尾部情况**:" + i);
					indexList.add(i);
				}
			}
		}else{
			//处理前部情况和不合理的pageNumber
			//handle: this.pageTotal < this.pageNumber
			//6<88:12345
			if(this.pageTotal >=DEFALT_DIPSLAY_LIMIT){
				for (int i = 1; i <= DEFALT_DIPSLAY_LIMIT; i++) {
					System.out.println("不合理的pageNumber:"+i);
					indexList.add(i);
				}
			//handle: pageNumber < DEFALT_DIPSLAY_LIMIT
			//3<5:123
			}else{
				for (int i = 1; i <= pageTotal; i++) {
					System.out.println("处理前部情况:"+i);
					indexList.add(i);
				}
			}
		}
	}

	public int getPageSize() {
		return pageSize;
	}


	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}


	public int getPageTotal() {
		return pageTotal;
	}


	public void setPageTotal(int pageTotal) {
		this.pageTotal = pageTotal;
	}


	public void setRowTotal(int rowTotal) {
		this.rowTotal = rowTotal;
	}


	public int getRowTotal() {
		return rowTotal;
	}

	public void setPageNumber(int pageNumber) {
		this.pageNumber = pageNumber;
	}

	public int getPageNumber() {
		return pageNumber;
	}

	public void setDataList(List dataList) {
		this.dataList = dataList;
	}

	public List getDataList() {
		return dataList;
	}
	

	public int getPrevPage() {
		return prevPage;
	}

	public void setPrevPage(int prevPage) {
		this.prevPage = prevPage;
	}

	public int getNextPage() {
		return nextPage;
	}

	public void setNextPage(int nextPage) {
		this.nextPage = nextPage;
	}

	public int getFirstPage() {
		return firstPage;
	}


	public void setFirstPage(int firstPage) {
		this.firstPage = firstPage;
	}


	public int getLastPage() {
		return lastPage;
	}


	public void setLastPage(int lastPage) {
		this.lastPage = lastPage;
	}


	public List<Integer> getIndexList() {
		return indexList;
	}


	public void setIndexList(List<Integer> indexList) {
		this.indexList = indexList;
	}


	@Override
	public String toString() {
		return "当前页=" + pageNumber + "\n每页行数=" + pageSize + "\n页总数=" + pageTotal + "\n行总数=" + rowTotal + "\n上一页=" + prevPage + "\n下一页=" + nextPage
		+ "\nindexList:" +indexList;
	}
}

 

jsp页面:

 

 

<div id="pager">
<a href="/page/admin/bookCategory_list?pageNumber=<s:property value="pager.firstPage"/>">第一页</a>
|
<a href="/page/admin/bookCategory_list?pageNumber=<s:property value="pager.prevPage"/>">上一页</a>
(
<span id="pageNumbers">
<s:iterator value="pager.indexList" var="eachIndex">
	<%--pageNumber是Action中的int值--%>
	<s:if test='%{#eachIndex==pageNumber}'>
	<s:property />
	</s:if>
	<s:else>
	<a href="/page/admin/bookCategory_list?pageNumber=<s:property />"><s:property /></a>
	</s:else>
</s:iterator>           
</span>
)
<a href="/page/admin/bookCategory_list?pageNumber=<s:property value="pager.nextPage"/>">下一页</a>
|
<a href="/page/admin/bookCategory_list?pageNumber=<s:property value="pager.lastPage"/>">最后一页</a>
(第<s:property value="pageNumber"/>页/共<s:property value="pager.pageTotal"/>页 <s:property value="pager.rowTotal"/>条记录 )
</div>

 

分享到:
评论

相关推荐

    Struts2+jsp自定义分页组件以及源码

    本教程主要探讨如何在Struts2框架下实现一个基于JSP的自定义分页组件,名为"zoo-paging-1.0.jar"。该组件不仅提供了分页功能,还附带了源代码和示例项目,方便开发者理解和应用。 首先,我们来理解分页的基本概念。...

    基于struts2+hibernate3+spring的分页组件

    本项目“基于struts2+hibernate3+spring的分页组件”着重于如何在这样的集成环境中实现数据的分页显示。分页是大型数据集展示中常见的需求,它可以提高用户体验,避免一次性加载大量数据导致的性能问题。 在Struts2...

    Struts2分页-自定义标签-类似百度分页

    Struts2是一个基于MVC(Model-View-Controller)架构的Java Web框架,它提供了强大的动作调度、结果映射、拦截器等功能,简化了Java Web应用的开发。在Struts2中,自定义标签可以用来扩展JSP页面的功能,使其能够更...

    freemarker_struts2分页

    在Java Web开发中,FreeMarker和Struts2是两个非常重要的技术组件。FreeMarker是一个模板引擎,用于生成动态HTML、XML等文档,而Struts2则是一个基于MVC设计模式的Web应用框架。本篇文章将深入探讨如何在Struts2框架...

    struts2.0实现数据分页

    综上所述,Struts2.0 实现数据分页涉及到Action、DAO、数据模型和视图等组件的协同工作。通过理解并掌握这一过程,开发者可以有效地管理和展示大量数据,提升Web应用的性能和用户体验。在实际项目中,应根据具体需求...

    Struts2分页程序

    3. **分页处理**:通过Struts2的标签或自定义组件实现分页逻辑。 4. **显示数据**:在前端页面上展示数据,并提供导航控件让用户可以翻页。 ### 技术栈 - JDK版本:1.6 - 开发工具:MyEclipse 6.0 - 应用服务器:...

    Struts2+jdbc+mysq分页Demo

    3. **Struts2 Action**:在Struts2中,Action是处理用户请求的核心组件。我们需要创建一个Action类,其中包含执行分页查询的方法。这个方法会根据用户的请求参数(如当前页码)来构造并执行SQL,然后将查询结果封装...

    struts2 分页

    2. **分页组件**: 在这个项目中,可能会使用到第三方的分页库,如DisplayTag或PageHelper等,它们提供了方便的分页API和标签库。DisplayTag是一个强大的表格显示标签库,支持分页、排序等功能。PageHelper是...

    jsp +struts 分页经典

    在Struts框架中,Controller组件负责接收用户请求,调度模型(Model)进行业务处理,并将结果传递给视图(View)进行展示。这极大地提高了代码的可维护性和可扩展性。 在这个“jsp +struts 分页经典”项目中,分页...

    iBatis分页(基于Struts2和Freemarker)

    通过以上步骤,我们可以实现一个基于Struts2和iBatis的分页功能。在这个过程中,源码和工具的合理使用至关重要,如Struts2的拦截器、iBatis的SqlSession和Freemarker的模板语法,都是实现这一功能的重要组成部分。...

    基于Struts2的BBS项目

    **基于Struts2的BBS项目** Struts2是一个强大的MVC(Model-View-Controller)框架,广泛应用于Java Web开发。在这个基于Struts2的BBS项目中,开发者利用了Struts2的核心优势,构建了一个功能完善的论坛系统。下面...

    struts分页组件

    Struts分页组件是基于Apache Struts框架的一个实用工具,用于在Web应用程序中实现高效、灵活的页面数据展示。在大型系统中,特别是在处理大量数据时,分页功能显得尤为重要,因为它可以提高用户体验,避免一次性加载...

    基于struts功能比较全的分页

    在这个基于Struts的分页实现中,我们可以探讨以下几个核心知识点: 1. **分页原理**:分页是大型数据集在Web应用中展示的重要方式,它可以避免一次性加载大量数据导致的性能问题。基本的分页原理包括设置每页显示...

    struts分页,数据查询资料

    对于分页,Struts框架并没有内置的分页组件,但可以通过集成第三方库如DisplayTag或使用自定义标签来实现。DisplayTag是一个强大的表格和分页标签库,它提供了一系列预定义的标签,可以轻松地在JSP页面上实现分页和...

    struts1.2实现分页

    3. **分页样式**:根据设计需求,可以定制分页组件的样式,如Bootstrap的分页导航。 4. **搜索引擎友好**:提供URL参数来支持搜索引擎的爬虫,例如通过`page`参数传递当前页码。 总之,Struts1.2实现分页需要结合...

    extjs+struts2分页例子

    通过以上步骤,我们就实现了EXTJS与Struts2的集成,以及基于它们的数据分页功能。这个简单的例子展示了EXTJS如何利用Struts2来获取和展示分页数据,帮助开发者快速理解并应用到实际项目中。对于初学者来说,这是一个...

    struts2 +mysql 分页显示 源码

    Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它提供了强大的控制层解决方案,帮助开发者构建可维护、可扩展的Web应用。而MySQL则是一种流行的关系型数据库管理系统,以其高效、稳定和...

    struts2结合easyui实现增删改分页排序

    通过上述步骤,我们已经成功实现了基于Struts2 和 EasyUI 的增删改查及分页排序功能。虽然过程中可能会遇到一些小问题,比如参数传递不正确、页面布局调整等,但只要保持耐心和细心,逐一排查问题所在,就能够顺利...

    基于Struts的网上论坛BBS系统课程设计

    在"基于Struts的网上论坛BBS系统课程设计"中,我们将深入探讨如何利用Struts来构建一个功能完善的在线讨论平台。 1. **MVC模式**:Struts的核心是MVC模式,它将业务逻辑、数据和用户界面分离,使得开发和维护更加...

    基于Struts 2+Hibernate+Spring论坛系统源码

    这个基于 Struts 2+Hibernate+Spring 的论坛系统源码提供了学习和理解这些技术如何协同工作的实例。 **Struts 2** 是一个用于构建企业级 Web 应用程序的 MVC(模型-视图-控制器)框架。它通过提供可扩展的拦截器和...

Global site tag (gtag.js) - Google Analytics