`
cjp1989
  • 浏览: 162640 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

实现全项目通用的分页,java分页方式参考。

阅读更多
    一直在寻找一个通用的分页代码,可以集成到DAO的sql语句,hql语句,hibernate分页等等页面只需要简单的加载通用分页jsp就可以,感谢夏哥给我的参考代码 ...附上心得。

1.先写通用的分页类,Pagenation.java
public class Pagenation {
	//总记录条数
	private int rowCount=0;
	//总页数
	private int pageCount=0;
	//当前页数
	private int currentpage=1;
	//页面显示数目
	private int pageSize=10;
	//action名称(实现)
	private String actionName;
	//查询语句
	private String sql;
	private String hql;
	
	//构造方法
	public Pagenation(){
		super();
	}
	//有参构造函数
	public Pagenation(int rowCount,int pageCount,int currentpage,int pageSize){
		super();
		this.currentpage=currentpage;
		this.rowCount=rowCount;
		this.pageCount=pageCount;
		this.pageSize=pageSize;
	}
	public int getRowCount() {
		return rowCount;
	}
	public void setRowCount(int rowCount) {
		this.rowCount = rowCount;
		//很好的分页算法.也可以换成可以换成
		//this.pageCount=rowCount%this.pageSize==0?rowCount/this.pageSize:rowCount/this.pageSize+1;
		this.pageCount=(rowCount+this.pageSize-1)/this.pageSize;
	}
	//开始记录条数
	public Integer getStartRow(){
		return (getCurrentpage()-1)*getPageSize();
	}
	//结束记录条数
	public Integer getEndRow(){
		return getCurrentpage()*getPageSize();		
	}
	public int getPageCount() {
		return pageCount;
	} 
	public void setPageCount(int pageCount) {
		this.pageCount = pageCount;
	}
	public int getCurrentpage() {
		if(currentpage>pageCount)
			currentpage=pageCount;
		if(currentpage<1)
			currentpage=1;
		return currentpage;
	}
	public void setCurrentpage(int currentpage) {
		this.currentpage = currentpage;
	}
	public int getPageSize() {
		return pageSize;
	}
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}
	public String getActionName() {
		return actionName;
	}
	public void setActionName(String actionName) {
		this.actionName = actionName;
	}
	public String getSql() {
		return sql;
	}
	public void setSql(String sql) {
		this.sql = sql;
	}
	public String getHql() {
		return hql;
	}
	public void setHql(String hql) {
		this.hql = hql;
	}
}


2.在DAO里面引入Pagenation的参数属性,我用的是hibernate自带的分页方法
public List getNewsByPage(Object object, Pagenation pagenation) {
		Session session = this.getHibernateTemplate().getSessionFactory()
				.openSession();
		StringBuffer stringBuffer = new StringBuffer(
				" from *** where 1=1");
		pagenation.setHql(stringBuffer.toString());
		Query query = session.createQuery(stringBuffer.toString());
		//初始值
                query.setFirstResult(pagenation.getStartRow());
                //每页显示的值
		query.setMaxResults(pagenation.getPageSize());
		List list=query.list();
		session.close();
		return list;
	}

3.Action层利用注入导入Pagenation类,实现action的分页访问
//分页显示出每个栏目的信息, 使用Hibernate分页方法
@SuppressWarnings({ "unchecked", "null" })
	public String getByModule() {
		module = searchService.getModule(id);
		counts=searchService.getCounts(module);
		//封装了总记录数,再封装了总条数
		pagenation.setRowCount(counts);
                //acion的name值,在struts.xml配置
		pagenation.setActionName("index2");
		list=searchService.getNewsByPage(object,pagenation);				
		return SUCCESS;
	}

4.通用的pagenation.jsp页面,关键的页面
<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%>
<%@page import="com.t.global.common.Pagenation" %>
<script language="javascript">
function goPage(page){
        //给pagenation.currentpage赋值,改变后的值
	document.getElementById("currentpage").value=page;
	alert("/////"+page);
	document.pagenation.submit();
}
</script>
<form action="${pagenation.actionName}.action" name="pagenation" method="post" style="display:none">
	<input type="hidden" name="pagenation.rowCount" value="${pagenation.rowCount }"/>
	<input type="hidden" name="pagenation.currentpage" id="currentpage" value="${pagenation.currentpage }"/>
	<input type="hidden" name="pagenation.actionName" value="pagenation.actionName"/>
	<input type="hidden" name="pagenation.sql" value="${pagenation.sql }"/>
	<input type="hidden" name="pagenation.hql" value="${pagenation.hql }"/>
</form>
<p>
	<a href="#" onclick="goPage(1)" style="cursor: pointer;">首页</a>
	<a href="#" onclick="goPage(${pagenation.currentpage-1})" style="cursor: pointer;">上一页</a>
	当前第&nbsp;<font color="red">${pagenation.currentpage }</font>&nbsp;页
	<a href="#" onclick="goPage(${pagenation.currentpage+1})" style="cursor: pointer;">下一页</a>
	<a href="#" onclick="goPage(${pagenation.pageCount})" style="cursor: pointer;">末页</a>
	&nbsp;&nbsp;跳转到第<select onchange="goPage(this.value)">
	<option value="1"></option>
	<%
	Pagenation pagenation=(Pagenation)request.getAttribute("pagenation");
	Integer pageCount=pagenation.getPageCount();
	for(int i=1;i<=pageCount;i++){
	out.write("<option value=\""+i+"\">"+i+"</option>");
	}
	%>
	</select>页&nbsp;&nbsp;
</p>


5.往你需要的jsp页面嵌入上面的pagenation.jsp页面,一般放在页面的下面
    
<div style="font-size: 12px" align="center">
        <%@include file="pagenation.jsp" %>
      </div>

附件有分页的效果,其实,一直想改成1,2,3,4,5,...,10000的分页方式,希望有能改成的留个言,大家共同进步
  • 大小: 14.3 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    java 通用分页 java 通用分页

    Java 通用分页详解 Java 通用分页是指在Java编程中对...Java通用分页是一种高效的分页处理方式,可以提高系统性能和效率。通过使用存储过程GetRecordFromPage,我们可以快速地实现分页处理,提高系统性能和用户体验。

    java web项目分页通用实现

    总结,Java Web项目中的分页通用实现涉及到数据库查询、参数传递、前后端交互等多个环节。通过封装分页组件,我们可以将这些复杂逻辑模块化,便于在不同的项目中复用,从而提升开发质量和效率。这个DEMO正是为了帮助...

    JAVA写的通用分页

    本文将详细探讨"JAVA写的通用分页"这一主题,结合描述中的"通用高效分页存储过程实现",我们将深入理解Java分页的原理、实现方式以及优化策略。 首先,分页的基本概念是将大量数据分块展示,而不是一次性加载所有...

    java通用分页代码实例.rar

    这个"java通用分页代码实例"应该包含了上述概念的实现,你可以通过解压"page"文件查看具体代码,学习如何将这些理论应用到实践中。通过学习和理解这个实例,你可以更好地掌握Java中的分页技术,并将其应用于自己的...

    java 分页通用代码

    综上所述,Java实现分页通用代码主要包括创建Page对象、处理分页参数、编写分页SQL、填充Page对象及提供相关辅助方法。在实际项目中,这些组件可以抽象成一个通用的分页工具类或者服务,以提高代码复用性和可维护性...

    Java 通用分页

    本文将详细探讨Java中的通用分页实现方法。 首先,我们要理解分页的基本概念。分页主要包括两个关键参数:当前页码(Page Number)和每页显示条数(Page Size)。通过这两个参数,我们可以计算出当前页面应该显示的...

    java通用分页

    本知识点将围绕“Java通用分页”这一主题展开,探讨其核心概念、实现方式以及相关工具。 首先,我们需要理解分页的基本原理。分页通常涉及到两个关键参数:当前页码(Page Number)和每页显示的记录数(Page Size)...

    java 通用数字分页

    本主题主要讲解如何在Struts2中实现一个通用的数字分页功能。 首先,我们要理解分页的基本概念。分页是将大量数据分成若干页进行显示,用户可以通过点击页码或使用导航按钮来切换不同页。分页通常涉及两个关键参数...

    java通用分页含使用文档

    本资源提供的"java通用分页含使用文档"是一个jar包,旨在简化Java Web开发中的分页实现过程,避免开发者手动编写繁琐的分页代码。 首先,我们要理解什么是分页。在Web应用中,当数据量过大时,一次性加载所有数据会...

    java一个通用的分页方法

    下面,我们将深入探讨一个Java通用分页方法的实现细节,以及如何在实际项目中运用这一技术。 #### 分页类`Pager`详解 `Pager`类是整个分页逻辑的核心。它包含了分页所需的所有属性和方法,如总行数、每页显示的...

    通用分页工具类PageInfo.java

    通用分页工具类PageInfo.java

    java 通用分页示例

    在Java开发中,分页是常见的...总之,这个示例展示了如何结合Struts和Hibernate使用自定义标签实现通用的分页功能,它在实际项目中有着广泛的应用。理解并掌握这一技术,能够帮助开发者更有效地管理和展示大量数据。

    java web Pager通用分页组件(源码)

    超级强悍的java web通用分页组件,只要简单的一条sql语句就可以轻松的实现分页,目前对oracle,SQL Server2005,SQL server200,mysql都做了实现,程序通过接口来封装,你可以实现对其他数据库的分页。里面有调用例子...

    SSM 实现通用分页

    在这个项目中,"SSM实现通用分页"指的是通过这三个框架来实现数据的分页展示功能,这在大数据量的网页展示中尤为重要,可以有效提升用户体验并减轻服务器压力。 首先,Struts2作为MVC框架,负责处理HTTP请求和响应...

    通用分页实现及其OO设计探讨(2)

    本话题将深入探讨“通用分页实现及其OO设计”,结合给定的“Paginaction.jsp”文件,我们可以进一步了解在Java Web开发中如何有效地实现分页功能。 首先,我们需要理解分页的基本概念。分页是将大量数据分割成多个...

    实现分页的.java

    `实现分页的.java`这个项目很可能是实现了这样一个分页插件,使用了JSTL(JavaServer Pages Standard Tag Library)来简化JSP页面的编写。 JSTL是Java Web开发中的一个标准标签库,它提供了多种功能标签,包括核心...

    java通用分页源码

    这个源码提供了一个详细的Java分页实现,非常适合Java开发者学习和参考。 在Java中,分页主要涉及到以下几个关键知识点: 1. **SQL查询**:分页的核心是SQL查询语句,通常使用`LIMIT`和`OFFSET`(MySQL)或者`...

    hibernate通用分页

    `Page(hibernate通用分页).java`可能是`Page`类的具体实现,它可能包含以下属性: 1. 数据列表:存储查询结果的集合。 2. 当前页:当前查询的页码。 3. 每页大小:每一页显示的记录数。 4. 总记录数:数据库中符合...

    Mybatis通用分页插件

    Mybatis通用分页插件是Java开发中广泛使用的ORM(对象关系映射)框架扩展,主要针对Mybatis进行优化,提供了高效便捷的分页功能。这个插件的目的是简化在数据库查询时的分页操作,使得开发者能够更专注于业务逻辑,...

    通用分页完整版提供下载

    在这个压缩包文件中,我们可以找到一个基于Java OOP(面向对象编程)实现的通用数据分页示例。 首先,让我们深入理解Java OOP在数据分页中的应用。面向对象编程是Java的核心特性,它提倡将数据和操作数据的方法封装...

Global site tag (gtag.js) - Google Analytics