只需掌握三点,在JSP中实现分页就可以轻松搞定。简而言之,就是"123原则",
即1条SQL语句;2个方法;3条数显示数据。
首先,SQL语句在分页中的作用很重要,它的查询原理就是"不在前@条的前@条数据",所以涉及到两个查询变量:第1个变量为一页显示的条数(pageSize),第2个变量为动态的、变化的页数(pageDynamic);假定当前页面为pageNo,那么它们之间存在这样的关系:pageDynamic = pageSize*(pageNo-1);
示例代码:
select top (?) * from Product where productid not in (select top (?) productid from product order by productid)
其次,在业务逻辑中编写两个方法;第一个方法是用于分页查询的,返回一个List<>泛型集合对象,第二个方法返回数据库中一共有多少条数据,返回整型数据;
示例代码:
public List<Product> getProduct(int pageNo,int pageSize)
{
//创建一个ArrayList泛型集合对象
List<Product> products = new ArrayList<Product>();
//创建一条SQL语句
String sql = "select top (?) * from Product where productid not in (select top (?) productid from product order by productid)";
try {
conn = getConn(); //得到数据库连接
pstmt = conn.prepareStatement(sql); //取得pstmt对象
pstmt.setInt(1, pageSize);
pstmt.setInt(2, pageSize*(pageNo-1)); //设置参数
rs = pstmt.executeQuery(); //执行查询,将结果集赋给rs
while (rs.next())
{
//创建一个Product对象
Product pro = new Product();
//为数据设置值
pro.setProductId(rs.getString("productId"));
pro.setProductName(rs.getString("productName"));
pro.setProductPrice(rs.getString("productPrice"));
pro.setProductDescription(rs.getString("productDescription"));
products.add(pro);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return products;
}
public int getAllPages(int pageSize) //pageSize为每页显示的条数
{
int result = 0; //返回值
try
{
conn = getConn(); //获得数据库连接
//查询出数据表中的全部数据条数,在此必须写"as a(a为变量)",否则rs无法接收整型值
String sql = "select count(*) as a from product";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
if (rs.next())
{
result = rs.getInt("a");
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
finally
{
this.closeAll(conn, pstmt, rs);
}
//如果总条数/每页显示条数能被整除,则返回该条数,如不能被整除,则返回总条数+1
return result%pageSize == 0?result/pageSize:result/pageSize+1;
}
之后,在JSP页面中编写doPages.jsp专门用于分页,并且将三条数据保存到session中,用于显示在页面中;
示例代码:doPages.jsp
<%@ page language="java" import="java.util.*,s2jsp.exercise.dao.*,s2jsp.exercise.entity.*" pageEncoding="UTF-8"%>
<%
int pageNo=1; //当前页(起始页)为1
//获得请求参数
String pagaNoString = request.getParameter("pageNo");
//请求参数不为空时,将参数赋给pageNo;
if (pagaNoString != null)
{
pageNo = Integer.parseInt(pagaNoString);
}
//创建ProductDao方法,用于调用分页查询方法
ProductDao pDao = new ProductDao();
List<Product> list = pDao.getProduct(pageNo,4); //当前页面显示的条数为4
int pages = pDao.getPages(4); //页数
//向session中保存3条数据
session.setAttribute("pageNo",pageNo);
session.setAttribute("list",list);
session.setAttribute("pages",pages);
response.sendRedirect("showAllProducts.jsp");
%>
之后,在显示页面调用doPages.jsp页面,显示出来之后,我们用3种方式进行分页操作:
1.超链接实现分页;
示例代码:
<a href="showAllProducts.jsp?pageNo=<%=pageNo==1?1:pageNo-1 %>">上一页</a>
<a href="showAllProducts.jsp?pageNo=<%=pageNo==pages?pages:pageNo+1 %>">下一页</a>
2.按钮实现;(按钮实现与下拉列表框的实现都得依赖于一个JavaScript方法)
JavaScript示例代码:
<script type="text/javascript">
function dopage(page)
{
location.href="showAllProducts.jsp?pageNo="+page;
}
</script>
示例代码:
<%if(pageNo==1){ %>
<input type="button" value="上一页" onClick="dopage(<%=pageNo==1?1:pageNo-1%>)" disabled="disabled"/>
<%}else{ %>
<input type="button" value="上一页" onClick="dopage(<%=pageNo==1?1:pageNo-1%>)"/>
<%} %>
<%if(pageNo==pages){ %>
<input type="button" value="下一页" onClick="dopage(<%=pageNo==pages?pages:pageNo+1%>)" disabled="disabled"/>
<%}else{ %>
<input type="button" value="下一页" onClick="dopage(<%=pageNo==pages?pages:pageNo+1%>)"/>
<%} %>
3.下拉列表框实现;
示例代码:
<select onChange="dopage(this.value)">
<%for(int i=1;i<=pages;i++){%>
<%if(pageNo==i) {%>
<option value="<%=i %>" selected="selected"><%=i %></option>
<%}else{ %>
<option value="<%=i %>"><%=i %></option>
<%}} %>
</select>
分享到:
相关推荐
### JSP分页技术详解:初学者的完美指南 #### 引言 在现代Web开发中,数据展示的效率和用户体验至关重要。对于大型数据库或数据集的处理,一次性加载所有数据不仅消耗大量资源,还可能导致页面加载缓慢,严重影响...
二、JSP分页步骤 1. **计算总页数**:首先,我们需要知道所有数据的数量,然后根据每页显示的数据量来计算总页数。这可以通过执行SQL查询获取数据总数,然后用总数除以每页数量得到。 2. **接收用户请求**:用户...
java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页
本篇文章将深入探讨“目前最好的JSP分页技术”,并介绍其核心概念、优势以及实现步骤。 首先,我们要明确的是,没有绝对“最好”的技术,只有最合适的解决方案。选择分页技术通常要考虑性能、易用性、可维护性和...
`jsp分页循环显示`就是一种这样的技术,它结合了`JSP(JavaServer Pages)`和`Servlet`,用于从数据库获取数据并以分页的方式在网页上呈现。本篇文章将深入讲解这一技术的实现原理及步骤。 首先,我们需要理解JSP和...
jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页...
本文件“JSP分页技术(多种方法)”中,将探讨几种常见的JSP分页实现方法。 1. **基于SQL的分页** 这是最基础的分页方法,通过在SQL查询语句中添加`LIMIT`和`OFFSET`或`ROWNUM`(根据数据库类型)来实现。例如,在...
在"分页的实现.rtf"文件中,可能包含了一个具体的JSP分页实现案例,包括SQL查询、Servlet处理逻辑以及JSP页面的代码片段,通过阅读和理解这个案例,可以加深对JSP分页实现的理解。 总结,JSP分页实现是一个涉及到...
**JSP分页技术详解** 在Web开发中,分页是一种常见的用户界面设计技术,它使得大量数据可以按页展示,提高用户体验并减轻服务器压力。本示例是基于JSP(JavaServer Pages)和SQL Server 2005构建的一个简单易懂的...
本资源提供了一个非常好用的JSP分页标签,它简化了在JSP页面上实现分页的过程,无需编写过多的Java代码,只需在JSP页面上插入特定的标签即可。 1. **JSP分页标签**:JSP分页标签是一种预定义的、可重用的组件,可以...
"jsp 分页源码.rar"这个压缩包可能包含了一个完整的JSP分页实现的源代码示例,让我们来详细探讨一下JSP分页的相关知识点。 1. **分页原理**: - 分页的基本思想是将大量数据分成若干小块(每块称为一页),每次只...
【纯jsp分页技术详解】 在Java Web开发中,分页功能是不可或缺的一部分,它能够帮助用户有效地管理和浏览大量数据,提升用户体验。本教程将深入探讨如何在JSP(Java Server Pages)中实现纯jsp分页,不依赖任何封装...
**jsp分页技术算法详解** 在Web开发中,分页技术是必不可少的,尤其是在处理大量数据展示时。JSP(JavaServer Pages)作为Java的一种视图技术,提供了强大的功能来实现用户界面的动态生成。本篇文章将深入探讨JSP中...
**jsp分页插件**是一种在网页应用中实现数据分页显示的重要工具,尤其是在处理大量数据时,分页能够提高用户体验,避免一次性加载过多数据导致页面加载缓慢或资源浪费。这款名为"Codejia.Com"的插件因其简单易用和...
"通过servlet实现jsp分页技术"的主题旨在讲解如何在Java Web环境下,利用Servlet和JSP进行数据的分页显示。下面将详细介绍这个过程,包括基本概念、步骤和关键点。 首先,我们需要理解分页的基本概念。分页是将大量...
"封装好直接使用的jsp分页插件"正是一款针对这一需求设计的工具,它能够简化开发过程,使开发者能够快速实现分页功能,而无需关注底层复杂的逻辑。 该插件适用于jsp与servlet的原生组合,同时对流行的SSH(Struts2 ...
### JSP分页技术详解与实现 #### 一、引言 JSP(JavaServer Pages)是一种基于Java的服务器端动态网页技术标准,用于生成动态HTML页面。在处理大量数据时,分页显示是一个非常实用的功能,它可以提高用户体验,减少...
【纯jsp分页查询】是一种在Web开发中常见的技术,主要应用于数据量较大时,为了提高用户体验和页面加载速度,将大量数据分为多个部分(页)进行显示。在这个项目中,开发者使用了JSP(JavaServer Pages)技术,这是...