1.创建Page实体类
public class Page { private int pageSize; //页容量 private int totalPage; //总页数 private int currentPage; //当前页 private boolean isFirstPage;//是否第一页 private boolean isLastPage; //是否最后一页 private boolean hasPreviousPage; //是否有上一页 private boolean hasNextPage; //是否有下一页 private List list; //数据集合 public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getTotalPage() { return totalPage; } public void setTotalPage(int totalPage) { this.totalPage = totalPage; } public int getRowCount() { return rowCount; } public void setRowCount(int rowCount) { this.rowCount = rowCount; } public int getCurrentPage() { return currentPage; } public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } public boolean isFirstPage() { return isFirstPage; } public void setFirstPage(boolean isFirstPage) { this.isFirstPage = isFirstPage; } public boolean isLastPage() { return isLastPage; } public void setLastPage(boolean isLastPage) { this.isLastPage = isLastPage; } public boolean isHasPreviousPage() { return hasPreviousPage; } public void setHasPreviousPage(boolean hasPreviousPage) { this.hasPreviousPage = hasPreviousPage; } public boolean isHasNextPage() { return hasNextPage; } public void setHasNextPage(boolean hasNextPage) { this.hasNextPage = hasNextPage; } public List getList() { return list; } public void setList(List list) { this.list = list; } }
2.创建IPageDao接口
public interface IPageDao { void init(int start, int pageSize,String tableName); //Page初始化 void setPageSize(int pageSize); //1.设置页容量 void setTotalPage(String tableName); //2.设置总页数 void setCurrentPage(); //3.设置当前页 void setIfFirstAndIfLast(); //4.设置是否首尾页 void setHasPreviousPageAndLastPage(); //5.设置是否有上下页 void setList(String tableName); //6.设置总记录数 Page getPage(); //获取Page对象 }
3.创建PageDaoImpl实现类
public class PageDaoImpl implements IPageDao{ private ProjectDao projectDao ; private int start; private Page page; /** * Page对象初始化 * @param start 传入的当前页 * @param pageSize 传入的页容量 * @param tableName 传入的表名 */ public void init(int start,int pageSize,String tableName) { this.start = start; page = new Page(); projectDao = new ProjectDao(); setPageSize(pageSize); setTotalPage(tableName); setCurrentPage(); setIfFirstAndIfLast(); setHasPreviousPageAndLastPage(); setList(tableName); } /** * 1.设置页容量:用于设置总页数 */ public void setPageSize(int pageSize) { if (pageSize <= 0) { page.setPageSize(10); } else { page.setPageSize(pageSize); } } /** * 2.设置总页数:在判断当前页是否大于总页数时用到 */ public void setTotalPage(String tableName) { int rowCount = 0; if (tableName.equals("items")) { rowCount = projectDao.getItemsRowCount(); } else if (tableName.equals("application")) { rowCount = projectDao.getAppsRowCount(); } int pageSize = page.getPageSize(); if (rowCount%pageSize > 0) { page.setTotalPage(rowCount/pageSize + 1); } else { page.setTotalPage(rowCount/pageSize); } } /** * 3.设置当前页:在之后的上下页和首尾页都需要用到 */ public void setCurrentPage() { if (start < 1) { page.setCurrentPage(1); } else if (start > page.getTotalPage()) { page.setCurrentPage(page.getTotalPage()); } else { page.setCurrentPage(start); } } /** * 4.设置是否首页或尾页 */ public void setIfFirstAndIfLast() { page.setFirstPage(page.getCurrentPage() > 1 ? false:true); page.setLastPage(page.getCurrentPage() < page.getTotalPage() ? false:true); } /** * 5.设置是否有上一页和下一页 */ public void setHasPreviousPageAndLastPage() { page.setHasPreviousPage(page.getCurrentPage() == 1 ? false:true); page.setHasNextPage(page.getCurrentPage() == page.getTotalPage() ? false:true); } /** * 6.设置数据 */ public void setList(String tableName) { int currentPage = page.getCurrentPage(); int pageSize = page.getPageSize(); int startIndex = pageSize * (currentPage - 1); if (tableName.equals("items")) { page.setList(projectDao.getItemsByPage(startIndex, pageSize)); } else if (tableName.equals("application")) { page.setList(projectDao.getAppsByPage(startIndex, pageSize)); } } public Page getPage() { return page; } }
4.创建通过数据库获取数据的方法
/** * 通过分页获取财政专项 * @param startIndex * @param pageSize * @return */ public List getItemsByPage(int startIndex, int pageSize) { Session s = null; List list = null; try { s = HibernateUtil.getSession(); s.beginTransaction(); Query query = s.createSQLQuery("select i.name,p.fileno from items i,policy p where i.isleaf = 1 and i.defaultpolicyid = p.id"); query.setFirstResult(startIndex); query.setMaxResults(pageSize); list = query.list(); } catch (Throwable e) { log.error(e.toString()); HibernateUtil.endSession(s); } finally { HibernateUtil.endSession(s); } return list; } /** * 获取财政专项总记录树 * @return */ public int getItemsRowCount() { int rowCount = 0; Session s = null; try { s = HibernateUtil.getSession(); s.beginTransaction(); Query query = s.createSQLQuery("select i.name,p.fileno from items i,policy p where i.isleaf = 1 and i.defaultpolicyid = p.id"); List list = query.list(); if (list != null) { rowCount = list.size(); } } catch (Throwable e) { log.error(e.toString()); HibernateUtil.endSession(s); } finally { HibernateUtil.endSession(s); } return rowCount; } /** * 通过分页获取项目信息 * @param startIndex * @param pageSize * @return */ public List getAppsByPage(int startIndex, int pageSize) { Session s = null; List list = null; try { s = HibernateUtil.getSession(); s.beginTransaction(); Query query = s.createSQLQuery("select e.qymc,a.enpname,a.money,a.approvaldate from application a,enterprise e where stepid = 3 and status = 0 and a.swdjzh = e.swdjzh"); query.setFirstResult(startIndex); query.setMaxResults(pageSize); list = query.list(); } catch (Throwable e) { log.error(e.toString()); HibernateUtil.endSession(s); } finally { HibernateUtil.endSession(s); } return list; } /** * 获取公示企业项目总记录数 * @return */ public int getAppsRowCount() { Session s = null; int rowCount = 0; try { s = HibernateUtil.getSession(); s.beginTransaction(); Query query = s.createSQLQuery("select e.qymc,a.enpname,a.money,a.approvaldate from application a,enterprise e where stepid = 3 and status = 0 and a.swdjzh = e.swdjzh"); List list = query.list(); if (list != null) { rowCount = list.size(); } } catch (Throwable e) { log.error(e.toString()); HibernateUtil.endSession(s); } finally { HibernateUtil.endSession(s); } return rowCount; }
5.创建PageServlet
public class PageServlet extends HttpServlet { private static final long serialVersionUID = 719461503837296828L; private IPageDao pageDao; protected void doGet(HttpServletRequest request, HttpServletResponse respond) throws ServletException, IOException { doPost(request,respond); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String action = request.getParameter("doType"); if (action.equals("page")) { String tableName = request.getParameter("table"); int start = Integer.valueOf(request.getParameter("page")); pageDao = new PageDaoImpl(); pageDao.init(start, 0, tableName);//Page对象初始化 Page page = pageDao.getPage();//获取Page对象 request.setAttribute("currentPage", page.getCurrentPage()); request.setAttribute("totalPages", page.getTotalPage()); request.setAttribute("hasPrevious", page.isHasPreviousPage()); request.setAttribute("hasNext", page.isHasNextPage()); request.setAttribute("isFirst", page.isFirstPage()); request.setAttribute("isLast", page.isLastPage()); request.setAttribute("list", page.getList()); if (tableName.equals("items")) { request.getRequestDispatcher("frontShow/itemShow.jsp").forward(request, response); } else if (tableName.equals("application")) { request.getRequestDispatcher("frontShow/enpriseShow.jsp").forward(request, response); } } } }
6.页面显示
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/css/frontShow.css"/> <script type="text/javascript" src="<%=request.getContextPath()%>/bootstrap/jquery-1.11.1.min.js"></script> <link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/bootstrap/bootstrap-theme.min.css" /> <link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/bootstrap/bootstrap.min.css" /> <script type="text/javascript" src="<%=request.getContextPath()%>/bootstrap/bootstrap.min.js"></script> <script type="text/javascript"> </script> <title>企业公示项目</title> </head> <body background="<%=request.getContextPath()%>/images/b1.jpg" class="background"> <div style="text-align:center"> <img alt="财政专项" src="<%=request.getContextPath()%>/images/front.jpg" /> </div> <div class="center"> <div class="divBoder div1"> <img alt="企业项目申报公示" src="<%=request.getContextPath()%>/images/qiyegongshi.png"> <hr/> <center><a href="<%=request.getContextPath()%>/index.jsp"><img alt="返回首页" src="<%=request.getContextPath()%>/images/FrontPage.png"></a></center> </div> <div class="divBoder div2"> <div> <br/> <table> <tr class="trTitle"> <td width="50px;"></td> <td width="120px;">企业名称<hr class="hr"/></td> <td width="450px;">申报项目名称<hr class="hr"/></td> <td width="120px;">申报金额<hr class="hr"/></td> <td>申报日期<hr class="hr"/></td> </tr> <c:forEach items="${list}" var="item"> <tr> <td width="50px;"></td> <td width="120px;"><strong>${item[0]}</strong><hr/></td> <td width="450px;">${item[1]}<hr/></td> <td width="120px;">${item[2]}元<hr/></td> <td>${item[3]}<hr/></td> </tr> </c:forEach> </table> </div> <center> <div> <span> <c:choose> <c:when test="${isFirst}"> 首页 </c:when> <c:otherwise> <a href="itemShow.page?doType=page&&page=1&&table=application">首页</a> </c:otherwise> </c:choose> </span> <span> <c:choose> <c:when test="${!hasPrevious}"> 上一页 </c:when> <c:otherwise> <a href="itemShow.page?doType=page&&page=${currentPage-1}&&table=application">上一页</a> </c:otherwise> </c:choose> </span> <c:forEach var="index" begin="1" end="${totalPages}" step="1"> <c:choose> <c:when test="${index==currentPage}"> <span class="currentPage">${index}</span> </c:when> <c:otherwise> <a href="itemShow.page?doType=page&&page=${index}&&table=application">${index}</a> </c:otherwise> </c:choose> </c:forEach> <span> <c:if test="${!hasNext}"> 下一页 </c:if> <c:if test="${hasNext}"> <a href="itemShow.page?doType=page&&page=${currentPage+1}&&table=application">下一页</a> </c:if> </span> <span> <c:if test="${isLast}"> 尾页 </c:if> <c:if test="${!isLast}"> <a href="itemShow.page?doType=page&&page=${totalPages}&&table=application">尾页</a> </c:if> </span> </div> </center> </div> </div> </body> </html>
7.页面
相关推荐
在大型项目中,为了提高用户体验,通常需要实现数据的分页展示,这正是"STRUTS+ HIBERNATE 简单分页"的主题。 首先,我们要理解分页的基本原理。分页主要是将大量数据分成若干小块,每次只加载一部分到页面上,这样...
这个压缩包文件提供了一个SSH框架模板以及使用Hibernate实现的分页功能的例子代码。 **Struts2** 是一个MVC(Model-View-Controller)框架,负责处理HTTP请求,维护应用程序的业务逻辑和视图之间的分离。它通过...
而Hibernate则是一个强大的对象关系映射(ORM)工具,用于简化数据库操作,将Java对象与数据库表之间的交互变得更加简单。 在分页实现中,视图(View)部分通常负责显示数据和提供导航链接。在示例的`select.jsp`中...
本文将深入探讨如何在Hibernate中进行分页查询的封装,并提供相关的源码和工具使用方法。 首先,我们需要了解Hibernate中的Criteria查询,这是实现分页查询的一种方式。Criteria API允许我们以面向对象的方式构建...
本篇将详细讲解如何利用Struts和Hibernate来实现一个简单的分页功能。 首先,我们需要理解分页的基本原理。分页是为了提高用户体验,避免一次性加载大量数据导致页面加载慢或内存压力过大。在Web应用中,我们通常将...
在本文中,我们将深入探讨如何使用Spring Boot与Hibernate框架实现简单的分页功能。Spring Boot以其简洁的配置和快速的应用开发而受到广泛欢迎,而Hibernate作为Java领域中的一个强大的ORM(对象关系映射)工具,...
【Struts2+Hibernate实现分页详解】 在Java Web开发中,Struts2和Hibernate是两个非常重要的框架,它们分别负责MVC模式中的控制层和持久层。Struts2提供了强大的Action类和拦截器,使得业务逻辑处理更加简洁;而...
java 实现的一个简单的hibernate分页类 可以设置,从某一条开始取、显示的条数 不依赖struts spring
示例代码中的 `PageController` 类是一个简单的分页控制器,包含了分页所需的基本属性(如总行数、每页行数、当前页码等)。它还提供了方法来设置和获取这些属性,以及检查是否有前页和后页。在实际项目中,这个类...
在这个"Struts2 + Hibernate3 分页程序"中,我们将探讨如何在它们的集成环境下实现分页功能。 分页是Web应用中常见的功能,它允许用户以较小的数据块浏览大量数据,提高用户体验。在Hibernate3中,虽然没有提供内置...
本教程将详细讲解如何在Hibernate中实现分页查询,以及如何在MyEclipse集成环境中运行这段代码。 首先,让我们了解什么是分页查询。分页查询是数据库管理中的一个常见需求,特别是在处理大量数据时,为了提高用户...
在Hibernate框架中实现分页功能相对较为简单。通过`Query`对象提供的方法即可轻松完成。 ##### 示例代码解析 ```java Query query = session.createQuery("from Student"); query.setFirstResult(firstResult); // ...
本篇文章将深入探讨使用Hibernate ORM框架与SQL Server 2000数据库进行分页查询的方法。 首先,Hibernate是Java领域中最流行的ORM(对象关系映射)框架之一,它允许开发者使用面向对象的方式操作数据库,减少了直接...
然而,虽然这种方式简单易用,但当处理大数据集时,可能会遇到性能问题,因为Hibernate会加载所有满足条件的结果到内存中,然后再返回指定范围的结果。为了解决这个问题,我们可以利用JDBC的SQL分页来直接在数据库...
下面是一个简单的Hibernate分页封装的示例代码: ```java public class Happer extends HibernateDaoSupport { private int p; //当前页 private int size; //一页分多少条 private int nextPage; //下一页 ...
hibernate和struts完美应用和分页演示示例 <br>此工程是hibernate和struts完美应用和分页演示示例。 <br>特点: 一、使用MS SERVER 2000的pubs数据库,并写了... 三、演示了数据查询的分页功能(较简单)。
以下是一个简单的示例,展示如何在Spring和Hibernate中实现组合查询和分页: ```java @Service public class UserService { @Autowired private SessionFactory sessionFactory; public Page<User> ...
以下是一个简单的使用Criteria进行分页查询的例子: 1. 创建Criteria实例,设置查询条件。 ```java Session session = sessionFactory.openSession(); Criteria criteria = session.createCriteria(User.class); ``...
### Struts+Spring+Hibernate通用分页方法详解 #### 一、引言 在Web应用开发中,分页是一项常用且重要的功能。特别是在处理大量数据时,合理的分页策略能够显著提升用户体验并减轻服务器压力。Struts+Spring+...
【JDBC简单分页方案】 在Java开发中,数据库记录的分页显示是常见的需求,尤其是在Web应用程序中。JDBC(Java Database Connectivity)是Sun公司制定的Java平台下的数据库连接标准接口,它提供了统一的方式来访问...