`

利用组件分页

阅读更多
. 如何分页?
    1.把pager-taglib.jar放到lib目录下(仅此足亦,完全没必要改web.xml什么的,还有官方war包中的东西都可以不要)
    2.在Jsp页面嵌入<%@ taglib uri="http://jsptags.com/tags/navigation/pager" prefix="pg" %> 


分页代码:
action中示范代码:

PageModel pm = empMgr.selectAllEmp(PageModel.getOffset(request), PageModel.getPageSize(request)) ;
request.setAttribute("pm", pm) ;		
		
jsp示范代码:
........
........
//分页代码
<pg:pager url="employee.do" items="${pm.total}" maxPageItems = "5" maxIndexPages="10" export="currentPageNumber=pageNumber" >
<pg:param  name="pageSize" value="5" />
<pg:first>
	<a href="${pageUrl}">首页</a>
</pg:first>
<pg:prev>
	<a href="${pageUrl}">上一页</a>
</pg:prev>
<pg:pages>  
        <c:choose>  
            <c:when test="${currentPageNumber eq pageNumber}">  
                <font color="red">${pageNumber }</font>  
            </c:when>  
            <c:otherwise>  
                <a href="${pageUrl}">${pageNumber }</a>  
            </c:otherwise>  
        </c:choose>  
    </pg:pages> 
<pg:next>
	<a href="${pageUrl}">下一页</a>
</pg:next>
<pg:last>
	<a href="${pageUrl}">尾页</a>
</pg:last>

</pg:pager> 

/*************PageModule类的代码**************/

public class PageModel {
	
	private List datas; //页面上要显示的数据
	private int total;  //总的条数,作用:总共有多少页
	
	public List getDatas() {
		return datas;
	}
	public void setDatas(List datas) {
		this.datas = datas;
	}
	public int getTotal() {
		return total;
	}
	public void setTotal(int total) {
		this.total = total;
	}
	
	public static int getOffset(HttpServletRequest request) {
		int offset = 0 ;
		String strOffset = request.getParameter("pager.offset") ;
		if (strOffset != null) {
			offset = Integer.parseInt(strOffset) ;
		}
		return offset ;
	}
	
	public static int getPageSize(HttpServletRequest request) {
		int pageSize = 5 ;
		String strPageSize = request.getParameter("pageSize") ;
		if (strPageSize != null) {
			pageSize = Integer.parseInt(strPageSize) ; 
		}
		
		return  pageSize ;
	}
}


/********************************************************************/
/*****************抽象分页*******仅供参考******************************/
/********************************************************************/
package com.oa.manager.impl;

import java.util.List;

import org.hibernate.Query;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.oa.PagerModel;

public class AbstractPagerManager extends HibernateDaoSupport {
	
		
	public PagerModel searchPaginated(String hql,int offset, int pagesize) {
		return this.searchPaginated(hql, null, offset, pagesize);
	}
	
	public PagerModel searchPaginated(String hql, Object obj, int offset, int pagesize) {
		return this.searchPaginated(hql, new Object[]{obj}, offset, pagesize);
	}
	
	/**
	 * 根据Hql语言进行分页
	 * @param hql HQL语句
	 * @param params HQL语句的参数
	 * @param offset 从第几条记录开始查询
	 * @param pagesize 每页显示多少条
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public PagerModel searchPaginated(String hql,Object[] params, int offset, int pagesize) {
		
		//获取总记录数
		String countHql = this.getCountQuery(hql);
		System.out.println("countHql: " + countHql);
		Query query = this.getSession().createQuery(countHql);
		if(query != null && params != null && params.length > 0) {
			for(int i=0; i<params.length; i++) {
				query.setParameter(i, params[i]);
			}
		}
		
		int total = ((Long)query.uniqueResult()).intValue();
		
		//获得当前页的结果集
		query = this.getSession().createQuery(hql);
		if(query != null && params != null && params.length > 0) {
			for(int i=0; i<params.length; i++) {
				query.setParameter(i, params[i]);
			}
		}
		query.setFirstResult(offset);
		query.setMaxResults(pagesize);
		List<Organization> list = query.list();
		
		PagerModel pm = new PagerModel();
		pm.setTotal(total);
		pm.setList(list);
		
		return pm;
		
	}
	
	private String getCountQuery(String hql) {
		System.out.println(hql);
		int index = hql.indexOf("from");
		System.out.println("index:" + index);
		if(index != -1){
			return "select count(*) " + hql.substring(index);
		}
		
		System.out.println("问题出了");
		throw new RuntimeException("无效的HQL查询语句!");

		
	}
}

分享到:
评论

相关推荐

    分页组件+反射分页组件+反射分页组件+反射

    在IT行业中,分页组件是构建大型Web应用时不可或缺的一部分,尤其在处理大量数据时,分页能够提高用户体验,减少服务器负载。而反射是Java等面向对象编程语言中的一种核心特性,它允许运行中的代码检查自身的信息并...

    jquery实现分页组件

    **jQuery实现分页组件** 在Web开发中,分页是一种常见的功能,用于处理大量数据时,将内容分段展示,提高用户体验。jQuery是一款强大的JavaScript库,它简化了DOM操作、事件处理、动画制作等任务,同时也方便我们...

    QT5分页组件,可以实现简单的数据分页

    在Qt5中,我们可以利用Qt Designer来创建UI,然后通过代码实现功能,或者直接编写代码来构建分页组件。 `pagenavigator.cpp`、`pagenavigator.h`和`pagenavigator.ui`这三个文件是实现分页功能的关键文件。`.cpp`...

    Avuepaginationcomponent一个vue分页组件

    "Avuepaginationcomponent" 提供了一个针对Vue.js的分页组件,这使得在Vue项目中实现分页变得更加简单。 首先,我们来深入了解Vue分页组件的基本概念。在Vue.js中,组件是可复用的代码块,它们可以独立地承担特定的...

    基于vue+element的分页组件

    在这个"基于vue+element的分页组件"中,开发者利用Vue.js和Element UI的强大力量,创建了一个用于后台项目分页展示的组件。 首先,Vue.js的核心在于其响应式数据绑定和组件化系统。在分页组件中,Vue.js的`data`...

    超强多功能分页组件

    《超强多功能分页组件》是一款专门用于数据展示的控件,它在数据库相关应用中扮演着重要的角色。分页是大型数据集管理的关键...通过深入理解和充分利用这款组件,我们可以提升应用程序的质量,为用户提供更优质的服务。

    一个vue的简单分页组件

    在这个“一个vue的简单分页组件”的项目中,我们主要探讨如何使用Vue.js来创建一个功能完善的分页组件。分页是网页应用中常见的功能,用于在大量数据中分段展示,提高用户体验。 首先,我们要理解Vue组件的基本结构...

    通用PHP分页组件

    通用PHP分页组件是一种高效的解决方案,它解决了在网站开发中处理大量数据时的分页问题。在网页上显示所有数据可能会导致页面加载...通过熟练掌握并利用这个组件,你可以更高效地开发出高性能、用户友好的网页应用。

    基于vue20封装的一个分页组件

    综上所述,这个分页组件展示了Vue.js在实际开发中的应用,尤其是如何利用其组件化特性来创建可复用的UI部件。通过学习和理解这个组件的实现,开发者可以提升自己在Vue.js项目中的实践能力,更好地处理数据展示和交互...

    JAVA 分页组件 可重复利用

    `JAVA 分页组件 可重复利用`的标题表明我们讨论的是一个可以复用的Java分页解决方案。`interceptListByStarItemNumber(List itemList)` 方法的描述暗示了一个拦截器或过滤器机制,它可能是用于根据特定条件(如...

    java分页组件(直接复用,简单方便)

    在客户端,可以利用组件提供的模板或接口,渲染出分页链接,供用户交互。 总结来说,这个"java分页组件"为Java Web开发者提供了一个强大且易复用的工具,简化了分页功能的实现,提高了开发效率,同时保证了应用的...

    asp完美打印组件 支持打印预览 打印分页等许多强大功能

    开发者应仔细阅读这份文档,以充分利用组件的所有功能。 总结起来,ASP完美打印组件是一个强大的工具,它扩展了ASP的功能,使得开发者可以轻松地在Web应用中集成专业级别的打印和预览功能。通过合理的配置和使用,...

    reactnativepage一个简单的reactnative分页组件

    React Native Page 是一款专为React Native平台设计的分页组件,它可以帮助开发者轻松地在原生移动应用中实现页面滑动切换的效果。React Native是一种由Facebook开发的开源框架,允许开发者使用JavaScript和React来...

    JSF分页组件

    本篇文章将深入探讨JSF中的分页组件,以及如何利用它们来实现高效的数据分页。 **1. 分页组件的基本概念** 分页组件通常由两个主要部分组成:分页导航和数据显示区。分页导航包括上一页、下一页、首页和末页等按钮...

    分页组件

    例如,使用React,我们可以创建一个自定义的`Pagination`组件,利用状态管理(如React Hooks的`useState`)来跟踪当前页码和每页数据量,然后通过API调用向服务器请求数据。在服务器端,可以使用各种编程语言(如...

    使用extremecomponent组件实现分页、导出xls

    通过以上步骤,我们可以利用Extremecomponents组件有效地实现Web应用中的分页、导出和排序功能,提升应用的实用性和用户体验。在实际项目中,可以根据具体需求进行调整和优化,以满足各种复杂的业务场景。

    分页组件ECSIDE文档

    - **高级列表功能**:利用ECSIDE组件,开发者能够轻松实现列表的分页、排序、查询和列宽调整等功能,尤其在大数据场景下,其性能优势更为显著。 - **多格式导出**:借助ECSIDE,可以将页面内容导出为PDF、XLS、CSV等...

    Flex 分页控件组件

    Flex是Adobe Flex框架的一部分,它是一个用于构建富互联网...而“WAIPaginatorTest”文件则可能是用来帮助开发者理解和使用这个组件的示例代码,通过研究和实践,开发者可以掌握如何在自己的项目中有效地利用这类组件。

    不错的分页组件

    在实际应用中,合理利用这样的分页组件可以极大地提高开发效率,同时为用户提供流畅的浏览体验。对于初学者而言,选择一款易上手的分页组件是提升项目质量的好方法。通过学习和实践,不仅可以掌握组件的使用,还能...

    分享一个自己写的简单的javascript分页组件

    4. 回调函数的使用,讲解了如何利用回调函数来实现分页时数据的更新。 5. Jquery的使用,阐述了Jquery在操作DOM、添加事件处理器方面的应用。 以上就是对标题中提到的分页组件的详细解读,该组件是一个比较基础的...

Global site tag (gtag.js) - Google Analytics