SP中分页在实际开发中很常用,在这里教大家怎样在JSP中实现分页效果。分别用超链接、按钮和下拉列表框三种形式来实现。
只需掌握三点,在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分页就完成了。记住:"123原则"。
分享到:
相关推荐
本资源包“分页工具-jsp中分页集成jar包”提供了在JSP(JavaServer Pages)环境中进行分页操作的解决方案。下面将详细解释这个包中的核心组件和使用方法。 1. **pager-taglib.jar**: 这是一个包含自定义标签库的...
jsp中分页显示(含有模糊查询)[归纳].pdf
jsp中分页显示(含有模糊查询)归纳.pdf
本文将详细介绍如何在JSP中实现分页,并结合数据库进行数据检索。 首先,我们需要理解分页的基本概念。分页是将大量数据分为多个小部分,每次只加载一部分到页面上,用户可以通过翻页按钮来查看其他数据。在JSP中,...
在JavaServer Pages (JSP) 中实现分页显示是一项常见的任务,特别是在开发Web应用程序时,如数据量庞大的表格或者搜索结果。分页可以帮助用户更轻松地浏览和管理大量的信息,而不是一次性显示所有内容。本篇文章将...
在JSP页面中,你可以使用EL表达式来获取Bean的属性和调用其方法。例如,展示分页数据: ```jsp ${pageBean.getDataList(currentPage)}"> <!-- 输出每条数据 --> ``` 并且,你还需要提供导航链接让用户可以...
4. **前端页面实现**:在JSP页面上,我们需要显示当前页码、总页数以及上一页、下一页的链接。这些信息可以通过Struts的Action返回给JSP,然后用JSTL标签渲染。例如,可以创建一个`<c:if>`标签来判断是否为第一页或...
完全解决JSP中的分页问题。
- **使用iframe**:你可以在JSP页面中创建一个iframe元素,其`src`属性指向PDF的URL,例如: ```html <iframe src="http://yourserver.com/pdf/documents/document1.pdf" width="100%" height="600px"></iframe> ...
在jsp登录页面设计中,我们使用<jsp:forward>标签来实现页面跳转。例如,在上面的代码中,我们使用<jsp:forward>标签来跳转到main.jsp页面。 8. 数据库访问: 在实际应用中,我们需要使用数据库来存储用户的信息,...
《jsp实用案例教程》是一本由冯燕奎和赵德奎等专家共同编著的专业书籍,主要针对Java Server Pages(JSP)技术,为读者提供了丰富的实践案例,帮助学习者深入理解和掌握JSP在实际开发中的应用。本书不仅讲解了JSP的...
当你遇到“jsp页面加载时提示loading”的问题时,这通常意味着页面正在加载或有延迟加载的情况发生。这个问题可能由多种因素导致,下面我们将详细探讨这些可能的原因及其解决方案。 1. **页面内容过多**:如果JSP...
在视图层(JSP或Freemarker等),我们使用Struts标签库或者自定义标签来渲染分页导航,展示如“第一页”、“最后一页”、“上一页”、“下一页”以及页码列表等链接。 例如,在JSP中,我们可以使用以下代码片段来...
在【压缩包子文件的文件名称列表】"www.java1234.com]人力资源管理系统模版html静态页面"中,我们可以推测这些文件可能是系统模板的HTML页面,可能包括了首页、登录页、员工列表页、职位发布页等各种功能页面的源...
在**JSP实用教程第三版**中,作者们系统地介绍了JSP的基础知识、核心概念和技术,包括JSP语法、JSP指令、内置对象、表达式语言(EL)、JSTL(JavaServer Pages Standard Tag Library)、Servlet以及MVC设计模式等。...
JSP注册页面的代码是JSP编程语言中的一种经典实现方式,旨在帮助新学JSP的同学们掌握基本的JSP编程技术。本文将对JSP注册页面的代码进行详细解析,帮助读者更好地理解JSP编程语言。 标题:JSP注册页面的代码 描述...
客户清楚知道,你的页面是在加载,需要等待,而不用对着一个空白的网页发呆。 2。方便。 对于程序员来说,只要包含loading页面,就能自动拥有“页面正在加载”功能。 3。美观。类似于yui-ext的效果。 4。跨...
**JSP程序设计与项目实训教程** ...此外,启发性教学法鼓励你在实践中思考,提升你的编程思维和独立解决问题的能力。因此,无论你是对Web开发感兴趣的学生,还是寻求技能提升的专业人士,本教程都是一个不错的起点。
在这个场景中,我们讨论的是如何在一个JSP页面上根据特定条件动态地加载另一个JSP页面,这个新加载的页面通常会显示从数据库(例如Oracle)中检索到的数据。这通常涉及到前端技术如jQuery和Ajax,以及服务器端的处理...
【标题解析】:“炫酷的登录jsp页面完整代码”指的是一个使用JSP技术构建的具有视觉吸引力的登录界面。这个项目可能包含了一整套的前端和后端代码,旨在为用户提供一个美观且功能完整的登录体验。 【描述详解】:...