`
115893520
  • 浏览: 142674 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

struts2+hibernate+spring分页方法

阅读更多
  
 import java.util.List; public interface Pagination { public boolean isFirst();//判断是否为第一页 public boolean isLast();//判断是否为最后一页 public boolean hasNext();//判断是否还有下一页 public boolean hasPrevious();//判断是否还有上一页 public int getMaxElements();//还回分页总记录数 public int getMaxPages();//还回总页数 public int getNext();//获得下一页的页面 public int getPrevious();//获得上一页的页面 public int getPageSize();//还回分页大小 public int getPageNumber();//还回当前页的页面 public List<Object> getList();//还回当前页的记录数据 public void setPageSize(int pageSize);//设置分页大小 public void setPageNumber(int pageNumber);//设置跳转的页面的页码 }
  Pagination 接口实现
public class PaginationImpl  implements Pagination {
	private int pageSize = 20;

	private int pageNumber = 1;

	private int maxPages;

	private int maxElements;

	private List<Object> list;

	public PaginationImpl() {
	}


	public PaginationImpl(List<Object> list, int maxElements, int pageSize, int pageNumber) {
		this.pageSize = pageSize;
        this.list=list;
        this.maxElements=maxElements;
		init();
		this.setPageNumber(pageNumber);
	}

	private void init() {
		setMaxPages();
	}

	private void setMaxPages() {
		if (maxElements != 0 && (maxElements % pageSize == 0)) {
			maxPages = maxElements / pageSize;
		} else {
			maxPages = maxElements / pageSize + 1;
		}
	}

	public List<Object> getList() {
        return this.list;
	}

	public void setList(List<Object> list) {
		this.list = list;
	}

	public int getMaxElements() {
		return maxElements;
	}

	public int getMaxPages() {
		return maxPages;
	}

	public int getNext() {
		if (pageNumber + 1 >= this.getMaxPages()) {
			return getMaxPages();
		}
		return pageNumber + 1;
	}

	public int getPageNumber() {
		return pageNumber;
	}

	public int getPageSize() {
		return pageSize;
	}

	public int getPrevious() {
		if (pageNumber - 1 <= 1) {
			return 1;
		} else {
			return pageNumber - 1;
		}
	}

	public boolean hasNext() {
		return pageNumber < this.getMaxPages();
	}

	public boolean hasPrevious() {
		return pageNumber > 1;
	}

	public boolean isFirst() {
		return pageNumber == 1;
	}

	public boolean isLast() {
		return pageNumber >= this.getMaxPages();
	}

	public void setPageNumber(int pageNumber) {
		if (pageNumber > maxPages) {
			this.pageNumber = maxPages;
		} else if (pageNumber < 1) {
			this.pageNumber = 1;
		} else {
			this.pageNumber = pageNumber;
		}
	}

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

	public void setMaxElements(int maxElements) {
		this.maxElements = maxElements;
	}


}
 
public interface IPaginationDao {
	public List<Object> listByPage(String hql,int pageSize, int pageNumber);
	public int listCount(String hql);
}
    
 IPaginationDao 接口实现
public class PaginationDaoImpl extends HibernateDaoSupport implements IPaginationDao{

public List<Object> listByPage(final String hql, final int pageSize, final int pageNumber) {
		
		return  (List<Object>)this.getHibernateTemplate().executeFind( new  HibernateCallback(){
            public  Object doInHibernate(Session session)  throws  SQLException,HibernateException {
              Query q  =  session.createQuery(hql);
              q.setFirstResult((pageNumber - 1) * pageSize);
              q.setMaxResults(pageSize);	           
              List<Object> list = (List<Object>) q.list();  
              return  list;  
              }
       });
	}

	public int listCount(String hql) {
		// TODO Auto-generated method stub
		return this.getHibernateTemplate().find(hql).size();
	}

}
 服务接口
public interface IPaginationServ { public Pagination getProductByPage(String hql,int pageSize, int pageNumber);}
 
IPaginationServ  接口实现
public class PaginationServImpl implements IPaginationServ{
	 private IPaginationDao pagingDao;
	public Pagination getProductByPage(String hql, int pageSize, int pageNumber) {
	         int total =pagingDao.listCount(hql);
	         List<Object> list=pagingDao.listByPage(hql, pageSize, pageNumber);
	         Pagination paging=new PaginationImpl(list,total,pageSize,pageNumber);
	         return paging;
	}
	public IPaginationDao getPagingDao() {
		return pagingDao;
	}
	public void setPagingDao(IPaginationDao pagingDao) {
		this.pagingDao = pagingDao;
	}

}
 配置spring文件
<bean id="pagingDao"
		class="××××.dao.impl.PaginationDaoImpl">
		<property name="sessionFactory" >
		    <ref bean="sessionFactory"/>
		</property>
	</bean>
<bean id="pagingServ"
  class="com.cnkf.wushi.service.impl.PaginationServImpl">
  <property name="pagingDao" >
      <ref bean="pagingDao"/>
  </property>
 </bean>
 添加页面
 
<%@taglib uri="http://jsptags.com/tags/navigation/pager" prefix="pg"%>
<a href="findAllDisplay.action"><h1>displayTag分页</h1></a>
			<s:iterator value="page.list" id="pr">
				<table width="300" border="1" bordercolor="000000"
					style="table-layout: fixed; word-break: break-all">
					<tr>
						<td width="100" bordercolor="ffffff">
							编号:
						</td>
						<td width="500" bordercolor="ffffff">
							<s:property value="id" />
						</td>
					</tr>
					<tr>
						<td bordercolor="ffffff">
							名称:
						</td>
						<td bordercolor="ffffff">
							<s:property value="name" />
						</td>
					</tr>
					<tr>
						<td bordercolor="ffffff">
							价格:
						</td>
						<td bordercolor="ffffff">
							<s:property value="price" />
						</td>
					</tr>
					<tr>
						<td bordercolor="ffffff">
							类型:
						</td>
						<td bordercolor="ffffff">
							<s:property value="type" />
						</td>
					</tr>
				</table>
				<br>
			</s:iterator>
			<pg:pager url="findAllPg.action"
				items="${page.maxElements}"
				maxPageItems="${pageSize}" maxIndexPages="5">
				<pg:index>
					<pg:first unless="current">
						<a href="${pageUrl}&pageNumber=${pageNumber}">首页</a>
					</pg:first>
					<pg:prev>
						<a href="${pageUrl}&pageNumber=${pageNumber}">上一页(${pageNumber})</a>
					</pg:prev>
					<pg:pages>
						<a href="${pageUrl}&pageNumber=${pageNumber}">${pageNumber}</a>
					</pg:pages>
					<pg:next>
						<a href="${pageUrl}&pageNumber=${pageNumber}">下一页(${pageNumber})</a>
					</pg:next>
					<pg:last unless="current">
						<a href="${pageUrl}&pageNumber=${pageNumber}">尾页</a>
					</pg:last>
				</pg:index>
			</pg:pager>
</center>
 
<%@taglib uri="http://displaytag.sf.net" prefix="display"%>
<center>
                 <a href="findAllPg.action"><h1>Pager分页</h1></a>
			<display:table name="page.list" id="dt" export="true" class="" partialList="true" size="page.maxElements" pagesize="10"
				requestURI="findAllDisplay.action">
				<display:column sortable="true" property="id" title="编号">
				</display:column>

				<display:column property="name" title="名称">
				</display:column>

				<display:column property="price" title="价格">
				</display:column>

				<display:column property="type" title="类型">
				</display:column>

				<display:column title="操作">
					<a href="#">编辑</a>
					<a href="#">删除</a>
				</display:column>
			</display:table>

</center>
 
 添加action
 
public class ProductAction extends ActionSupport {
	private static final long serialVersionUID = 3953659778944144652L;

	private IProductServ productServ;

	private IPaginationServ pagingServ;

	private Product pr;

	private List<Product> list;

	private Pagination page;

	private String pageNumber = "1";

	private int pageSize = 10;

	public String findAllDisplay() {
		String hql = "from Product p";
	// 这是displaytag获得pageNumber的方法,dt是displaytag 的id属性相对应的。比较特殊
		String paramName = (new ParamEncoder("dt")
				.encodeParameterName(TableTagParameters.PARAMETER_PAGE));
		HttpServletRequest request = ServletActionContext.getRequest();
		try {
			Integer.parseInt(request.getParameter(paramName));
			pageNumber=request.getParameter(paramName);
		} catch (Exception e) {
			pageNumber = "1";
		}
		page = pagingServ.getProductByPage(hql, pageSize, Integer.parseInt(pageNumber));
		return SUCCESS;
	}
	public String findAllPg() {
		String hql = "from Product p";
		try {
			Integer.parseInt(pageNumber);
		} catch (Exception e) {
			pageNumber = "1";
		}
		page = pagingServ.getProductByPage(hql, pageSize, Integer.parseInt(pageNumber));
		return SUCCESS;
	}
 
配置struts.xnl文件
<action name="findAllDisplay" class="com.cnkf.template.action.ProductAction" method="findAllDisplay">
			 <result >/welcomeDisplay.jsp</result>
		</action>
		<action name="findAllPg" class="com.cnkf.template.action.ProductAction" method="findAllPg">
			 <result >/welcomepg.jsp</result>
		</action>
 
最后添加上displaytag 的jar包,还有img,css文件
pager的jar包添加

 

 

5
0
分享到:
评论

相关推荐

    STRUTS2+HIBERNATE详细的分页实现代码详细的分页实现代码

    根据提供的标题、描述、标签及部分内容,我们可以了解到这篇文章主要探讨的是如何在Struts2与Hibernate框架结合下实现分页功能。接下来将详细解析Struts2与Hibernate如何协作完成这一任务。 ### Struts2与Hibernate...

    ext3+struts2+hibernate+spring的CRUD+分页

    同时,Struts2和Spring也可以配合提供分页支持,例如通过Action类中的方法返回分页信息,或者利用Spring的Pageable接口和Page对象。 在实际项目中,"sshext"的结构可能包含以下几个部分: 1. `WebRoot`:这是Web...

    Struts2+Hibernate+Spring+分页+数据库

    Struts2+Hibernate+Spring+分页+数据库 注意了,只能在IE8上运行,因为我设置的样式不兼容,在其他浏览器上要多难看有多难看。

    struts2 + spring 3 + hibernate3.3整合实现图书馆管理管理

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们的整合应用广泛用于构建复杂的Web应用程序,如本例中的图书馆管理系统。这个系统实现了用户登录和注册功能,并且提供了对书籍表的操作,包括增、删、改...

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

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

    spring+struts2+hibernate整合实现分页

    在这个项目中,“spring+struts2+hibernate整合实现分页”是一个基础教程,旨在帮助初学者理解如何在SSH框架下实现数据的分页展示。下面将详细讲解这个主题中的关键知识点。 1. **Spring框架**:Spring是Java应用的...

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

    Struts 2、Hibernate 和 Spring 是 Java Web 开发中的三个重要框架,它们组合在一起形成了一个强大的后端开发架构。这个基于 Struts 2+Hibernate+Spring 的论坛系统源码提供了学习和理解这些技术如何协同工作的实例...

    struts2+spring2+hibernate3注册查询搜索分页实例

    总的来说,这个"Struts2+Spring2+Hibernate3注册查询搜索分页实例"是一个很好的学习资源,涵盖了Java Web开发中的基础和核心部分。通过学习这个实例,开发者不仅可以掌握三大框架的基本用法,还能了解到如何将它们...

    Struts2+Hibernate3.2+spring2.0+sqlserver2000

    Struts2、Hibernate3.2、Spring2.0和SQL Server 2000是Java Web开发中的四个关键组件,它们构成了一个强大的企业级应用框架,通常被称为SSH2(Struts2、Spring2、Hibernate2)集成框架。下面将详细阐述这些技术以及...

    struts2+hibernate+spring分页

    在"struts2+hibernate+spring分页"的场景中,Struts2将处理分页请求,接收页码、每页显示数量等参数,并调用服务层的方法来获取特定页的数据。 Hibernate是一个持久化框架,它简化了数据库操作,通过ORM(对象关系...

    struts2+hibernate3+spring3分页

    总结,"struts2+hibernate3+spring3分页"项目结合了SSH框架的优势,实现了高效、灵活的后端分页功能,利用MySQL数据库存储数据。开发者可以通过学习这个项目,深入理解如何在实际项目中集成和运用SSH框架,以及如何...

    struts+hibernate+spring集成实现分页

    2. **创建DAO**:实现分页查询的方法,使用Hibernate的Session或SessionFactory进行数据库操作。 3. **配置Service**:在Spring中声明Service,注入DAO,实现业务逻辑,包括计算总页数、获取当前页数据等。 4. **...

    struts2.0+hibernate+spring分页

    在本项目中,“struts2.0+hibernate+spring分页”是将这三种技术结合,实现数据的分页展示功能。分页是一种常见的优化策略,它可以提高用户体验,避免一次性加载过多数据导致页面响应慢或内存压力大。 首先,Struts...

    Struts2 + Spring2 + Hibernate3经典分页(包含java及jsp源码)

    ### Struts2 + Spring2 + Hibernate3 经典分页技术解析 #### 一、概述 在企业级应用开发中,分页显示是常见的需求之一。对于数据量较大的查询结果,采用分页的方式不仅能减轻服务器的压力,提高用户体验,还能更好...

    Struts1.3+Spring4.x+Hibernate4.x框架整合实现对书籍的增删改查(含分页)

    总结来说,"Struts1.3+Spring4.x+Hibernate4.x框架整合实现对书籍的增删改查(含分页)"项目展示了如何使用SSH框架来构建一个功能完善的书籍管理系统。Struts处理用户请求,Spring管理应用组件并提供事务支持,...

    Struts+Hibernate+Spring的分页

    在这个"Struts+Hibernate+Spring的分页"项目中,开发者展示了如何在这样的集成环境下实现分页功能。分页是Web应用中常见的需求,它允许用户逐页浏览大量的数据,提高用户体验并减轻服务器压力。 首先,我们来看看...

    struts2+hibernate+Spring后台表格分页

    4. **后台表格分页实现**:在实际应用中,通常会有一个专门的Service层方法处理分页请求,该方法先通过Hibernate查询数据,然后使用Spring的ModelMap或者自定义的Dto将数据打包返回给Struts2 Action。Action再将结果...

    ssh Struts2.2+Hibernate3.6+Spring3.1+oracle 分页示例.zip

    SSH(Struts2、Hibernate、Spring)是一种流行的Java企业级应用程序开发框架组合,常用于构建高效、可维护的Web应用。在这个"ssh Struts2.2+Hibernate3.6+Spring3.1+oracle 分页示例.zip"压缩包中,开发者提供了一个...

    2012最新ssh2框架-struts2.3+hibernate4.1+spring3.1登录+注册+拦截器+分页

    2012最新ssh2框架-struts2.3+hibernate4.1+spring3.1登录+注册(md5加密)带拦截器,mysql数据库,带分页功能, 只需修改com/resource/resourses.properties数据库连接即可使用

    Struts2 + Hibernate + Spring 实现的分页显示数据

    这个名为"Struts2 + Hibernate + Spring 实现的分页显示数据"的项目,展示了如何利用这三个框架来实现一个功能强大的数据管理应用,特别是对于大数据集的分页展示。以下是对这些框架和分页技术的详细解释。 **...

Global site tag (gtag.js) - Google Analytics