大二的计科专业学生,感觉课堂上学的不够,所以自学了jsp+servlet,跟着视频做网上商城和论坛的项目,用的是mvc模式,这当中都涉及到了分页操作,我看完后觉得比较好的是一种是这样的:
先创建JavaBean
import java.util.ArrayList; public class PageBean { private int pageNow;//第几页 private int pageSize;//每页显示几个记录 private int pageCount;//总页数 private int rowCount;//总记录数 private ArrayList al;//该页要显示的记录 public PageBean() { } public int getPageNow() { return pageNow; } public void setPageNow(int pageNow) { this.pageNow = pageNow; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getPageCount() { return pageCount; } public void setPageCount(int pageCount) { this.pageCount = pageCount; } public int getRowCount() { return rowCount; } public void setRowCount(int rowCount) { this.rowCount = rowCount; } public ArrayList getAl() { return al; } public void setAl(ArrayList al) { this.al = al; } }
然后是一个操作数据库的工具类,其中进行分页的方法是:
//我以对论坛中的帖子分页为例,显示pid=0的帖子并分页,Article是帖子类 public static void getPageInfo(PageBean pb){ int pageNow = pb.getPageNow();//获得要显示的页数 int pageSize = pb.getPageSize();//获得每页显示的记录数 int rowCount = 0; int pageCount = 0; ArrayList al = new ArrayList(); try { ct = getConnection(); ps=ct.prepareStatement("select top "+pageSize +" * from article where pid = 0 and id not in (select top " +pageSize*(pageNow-1)+" id from article where pid = 0) "); rs = ps.executeQuery(); while (rs.next()){ Article article= new Article(); article.setId(rs.getInt(1)); article.setPid(rs.getInt(2)); article.setRootId(rs.getInt(3)); article.setTitle(rs.getString(4)); article.setCont(rs.getString(5)); article.setPdate(rs.getTimestamp(6)); article.setIsLeaf(rs.getInt(7)); al.add(article); } pb.setAl(al);//赋值要显示页的记录 ps = ct.prepareStatement("select count(*) from article where pid = 0"); rs = ps.executeQuery(); if (rs.next()){ rowCount = rs.getInt(1);//得到记录总数 } pageCount = (rowCount - 1) / pageSize + 1;//得到页总数 pb.setPageCount(pageCount); pb.setRowCount(rowCount); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e.getMessage()); } finally { close(rs, ps, ct); } }
在昨天晚上,我突然想到了另外一种思路:
//我换了另一种思路,就是先把pid=0的帖子都取出来,再取出其中要显示页的记录封装到ArrayList中 //上面一种是先把要显示页的记录取出来,再把记录封装到ArrayList中 public static void getPageInfo(PageBean pb){ int pageNow = pb.getPageNow();//获得要显示的页数 int pageSize = pb.getPageSize();//获得每页显示的记录数 int rowCount = 0; int pageCount = 0; ArrayList al = new ArrayList(); try { ct = getConnection(); ps=ct.prepareStatement("select * from article pid = 0"); rs = ps.executeQuery(); int startPos = (pageNow - 1 ) * pageSize; int i = 0; while (rs.next()){ if (i == startPos){ for (int j = 0; j < pageSize; j++){ Article article= new Article(); article.setId(rs.getInt(1)); article.setPid(rs.getInt(2)); article.setRootId(rs.getInt(3)); article.setTitle(rs.getString(4)); article.setCont(rs.getString(5)); article.setPdate(rs.getTimestamp(6)); article.setIsLeaf(rs.getInt(7)); al.add(article); if (!rs.next()){ break; } } break; } i++; } pb.setAl(al);//赋值要显示页的记录 ps = ct.prepareStatement("select count(*) from article where pid = 0"); rs = ps.executeQuery(); if (rs.next()){ rowCount = rs.getInt(1);//得到记录总数 } pageCount = (rowCount - 1) / pageSize + 1;//得到页总数 pb.setPageCount(pageCount); pb.setRowCount(rowCount); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e.getMessage()); } finally { close(rs, ps, ct); } }
使用举例:
int pageNow = 1; int pageSize = 4; String pagenow = request.getParameter("pageNow"); if (pagenow != null){ pageNow = Integer.parseInt(pagenow); } PageBean pb = new PageBean(); pb.setPageNow(pageNow); pb.setPageSize(pageSize); SqlHelper.getPageInfo(pb); request.setAttribute("pagebean", pb); request.getRequestDispatcher("/XXX.jsp").forward(request, response);
上述就是我对分页操作的一点想法,一种是先把pid=0的帖子都取出来,再取出其中要显示页的记录封装到ArrayList中,另一种是先把要显示页的记录取出来,再把记录封装到ArrayList中。不知道实际开发中是怎么进行分页操作的,这仅是我自学后的一点点思考,希望前辈们给我点意见。
相关推荐
### Java Web 分页设计知识点详解 #### 一、分页设计概述 在Java Web开发中,当需要展示大量数据时,通常会采用分页技术来提高用户体验和减轻服务器负担。分页可以有效地控制每次加载的数据量,使得用户界面更加...
Java分页技术是Web开发中的一个关键组成部分,尤其是在处理大量数据时,为了提高用户体验和系统性能,分页显得尤为重要。本教程将详细讲解如何在Java环境下实现Web应用的分页功能,并提供一个测试数据库供学习者参考...
在Java Web开发中,分页是一项非常常见的需求,它能够帮助用户更有效地浏览大量数据,提高用户体验。本DEMO主要展示了如何实现一个通用的分页功能,覆盖了后台和前台的处理逻辑。以下是对这个主题的详细阐述: 一、...
在JAVA Web开发中,分页功能是常见...总的来说,JAVA Web分页实例代码提供了实际操作的参考,有助于开发者掌握分页的实现原理,提升开发效率。通过学习和实践这个例子,你可以更好地理解如何在实际项目中应用分页技术。
【Java Web分页项目】是基于Java和JSP技术实现的一个Web应用程序,主要目标是解决在Web应用中处理大量数据时的效率问题。在数据库驱动的Web应用中,一次性加载所有数据可能导致页面加载慢,用户体验下降,甚至服务器...
在Java Web开发中,分页是必不可少的功能,它允许用户以更易管理的方式查看大量数据。本篇文章将详细讲解如何在Java Web应用中使用分页标签。我们将主要围绕以下两个核心概念进行讨论:源码理解和工具的使用。 首先...
Java Web分页管理器是一种用于处理大量数据分页显示的技术,尤其在与微软数据库如SQL Server配合使用时,能够高效地提升用户体验。在Web应用程序中,分页是必不可少的功能,尤其是在展示诸如用户列表、订单历史或者...
在Java Web开发中,分页显示是一项非常重要的功能,它能有效地管理大量数据,提高用户体验,避免一次性加载过多数据导致的性能问题。本教程将详细讲解如何在SQL Server 2005数据库环境下,利用JDBC进行分页查询,以...
在Java Web开发中,与Oracle数据库进行交互时,分页功能是常见的需求,尤其是在处理大量数据时,为了提高用户体验和加载速度,分批次地显示数据是必不可少的。本项目提供的源代码正是针对这一需求,提供了在Java Web...
在Java编程中,数据分页显示是Web应用中常见的需求,尤其在处理大量数据时,为了提高用户体验并优化服务器性能,通常需要将数据分成多个页面进行展示。本篇将深入探讨Java实现数据分页显示的核心技术和策略。 首先...
"Java Web分页技术与实现" Java Web分页技术是指在Java Web应用中对显示的数据进行分页显示,以提高用户体验和系统性能。分页技术可以在Web服务器中或数据库服务器中实现。 在Web服务器中实现分页可以利用...
总的来说,Java Web分页是通过合理的设计和适当的工具,结合数据库查询和内存处理,来实现高效、灵活的数据浏览功能。理解其原理和实践,对于提升Web应用的性能和用户体验至关重要。在实际项目中,应根据具体需求...
Java Web分页技术是Web应用程序中常用的一种数据展示方式,它允许用户逐步浏览大量的数据集合,而不会一次性加载所有数据,从而提高页面加载速度和用户体验。Struts2作为一款流行的MVC框架,提供了实现分页功能的...
Java Web分页技术是网页应用开发中不可或缺的一部分,主要用于处理大量数据查询时的展示问题。在JSP(Java Server Pages)开发中,分页技术能够有效地提高系统性能,提升用户体验。下面将详细介绍分页的基本概念、...
在Java Web开发中,Ajax...总的来说,Java Web中的Ajax分页技术结合了前端交互、后端处理和数据库操作,通过异步通信提升了用户体验。理解和掌握这一技术,对提升Web应用的性能和用户满意度有着重要的意义。
在Java Web开发中,数据库分页是一种常见的技术,用于处理大量数据时提高应用程序的性能和用户体验。当数据集过大,一次性加载所有记录到用户界面可能导致内存压力和响应速度下降。因此,分页允许用户逐步浏览数据,...
Java万能分页代码是Java开发中常用的工具,尤其在处理大数据量的Web应用时,分页技术能够显著提升用户体验并优化服务器性能。这个3.0版本的分页代码库通常包含了一些经过优化的分页算法和接口,适用于各种场景,如...
【Java-Web-Mysql 分页实现详解】 在Java Web开发中,当数据量较大时,为了提高用户体验,通常会采用分页的方式来展示数据。本示例"java-web-mysql 分页demo"提供了一个完整的Java Web应用程序,它结合了MySQL...
本文将深入探讨如何在Java中实现Web分页封装,以便在实际项目中灵活应用。 首先,我们需要了解分页的基本概念。分页是将大量数据分割成较小、可管理的部分,每次只加载一部分到前端显示。这有助于减少网络传输的...
在Java Web开发中,分页...总结,Java Web中的分页功能主要依赖于Servlet、JDBC和数据库操作,通过合理的SQL构建和页面渲染,可以提供良好的用户体验。在实际项目中,还需要关注性能优化、安全性以及代码的可维护性。