`
jessen163
  • 浏览: 462880 次
  • 性别: Icon_minigender_1
  • 来自: 潘多拉
社区版块
存档分类
最新评论

教你在JSP中分页

阅读更多
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中分页集成jar包”提供了在JSP(JavaServer Pages)环境中进行分页操作的解决方案。下面将详细解释这个包中的核心组件和使用方法。 1. **pager-taglib.jar**: 这是一个包含自定义标签库的...

    jsp中分页显示(含有模糊查询)[归纳].pdf

    jsp中分页显示(含有模糊查询)[归纳].pdf

    jsp中分页显示(含有模糊查询)归纳.pdf

    jsp中分页显示(含有模糊查询)归纳.pdf

    JSP 中分页DEMO 例附数据库

    本文将详细介绍如何在JSP中实现分页,并结合数据库进行数据检索。 首先,我们需要理解分页的基本概念。分页是将大量数据分为多个小部分,每次只加载一部分到页面上,用户可以通过翻页按钮来查看其他数据。在JSP中,...

    jsp中分页显示代码

    在JavaServer Pages (JSP) 中实现分页显示是一项常见的任务,特别是在开发Web应用程序时,如数据量庞大的表格或者搜索结果。分页可以帮助用户更轻松地浏览和管理大量的信息,而不是一次性显示所有内容。本篇文章将...

    jsp中分页显示的bean

    在JSP页面中,你可以使用EL表达式来获取Bean的属性和调用其方法。例如,展示分页数据: ```jsp ${pageBean.getDataList(currentPage)}"&gt; &lt;!-- 输出每条数据 --&gt; ``` 并且,你还需要提供导航链接让用户可以...

    基于Java的Jsp中分页

    4. **前端页面实现**:在JSP页面上,我们需要显示当前页码、总页数以及上一页、下一页的链接。这些信息可以通过Struts的Action返回给JSP,然后用JSTL标签渲染。例如,可以创建一个`&lt;c:if&gt;`标签来判断是否为第一页或...

    JSP中分页组件

    完全解决JSP中的分页问题。

    jsp登录页面设计源代码

    在jsp登录页面设计中,我们使用&lt;jsp:forward&gt;标签来实现页面跳转。例如,在上面的代码中,我们使用&lt;jsp:forward&gt;标签来跳转到main.jsp页面。 8. 数据库访问: 在实际应用中,我们需要使用数据库来存储用户的信息,...

    JSP页面显示PDF,根据PDF路径在JSP页面显示PDF

    - **使用iframe**:你可以在JSP页面中创建一个iframe元素,其`src`属性指向PDF的URL,例如: ```html &lt;iframe src="http://yourserver.com/pdf/documents/document1.pdf" width="100%" height="600px"&gt;&lt;/iframe&gt; ...

    jsp实用案例教程

    《jsp实用案例教程》是一本由冯燕奎和赵德奎等专家共同编著的专业书籍,主要针对Java Server Pages(JSP)技术,为读者提供了丰富的实践案例,帮助学习者深入理解和掌握JSP在实际开发中的应用。本书不仅讲解了JSP的...

    jsp注册页面经典jsp注册页面经典jsp注册页面经典jsp注册页面经典

    经典注册页面jsp注册页面经典jsp注册页面经典jsp注册页面经典jsp注册页面经典

    jsp页面加载时提示loading

    当你遇到“jsp页面加载时提示loading”的问题时,这通常意味着页面正在加载或有延迟加载的情况发生。这个问题可能由多种因素导致,下面我们将详细探讨这些可能的原因及其解决方案。 1. **页面内容过多**:如果JSP...

    在struts中分页功能的一种实现

    在视图层(JSP或Freemarker等),我们使用Struts标签库或者自定义标签来渲染分页导航,展示如“第一页”、“最后一页”、“上一页”、“下一页”以及页码列表等链接。 例如,在JSP中,我们可以使用以下代码片段来...

    jsp页面人力资源管理系统静态页面

    在【压缩包子文件的文件名称列表】"www.java1234.com]人力资源管理系统模版html静态页面"中,我们可以推测这些文件可能是系统模板的HTML页面,可能包括了首页、登录页、员工列表页、职位发布页等各种功能页面的源...

    jsp实用教程第三版课件及源码

    在**JSP实用教程第三版**中,作者们系统地介绍了JSP的基础知识、核心概念和技术,包括JSP语法、JSP指令、内置对象、表达式语言(EL)、JSTL(JavaServer Pages Standard Tag Library)、Servlet以及MVC设计模式等。...

    JSP页面加载时提示"正在加载中"

    客户清楚知道,你的页面是在加载,需要等待,而不用对着一个空白的网页发呆。 2。方便。 对于程序员来说,只要包含loading页面,就能自动拥有“页面正在加载”功能。 3。美观。类似于yui-ext的效果。 4。跨...

    JSP注册页面的代码

    JSP注册页面的代码是JSP编程语言中的一种经典实现方式,旨在帮助新学JSP的同学们掌握基本的JSP编程技术。本文将对JSP注册页面的代码进行详细解析,帮助读者更好地理解JSP编程语言。 标题:JSP注册页面的代码 描述...

    JSP商品详细信息页面

    在IT行业中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,特别是在电子商务网站中,商品详细信息页面是至关重要的。这个"JSP商品详细信息页面"项目可能涉及到多个技术层面,包括前后端交互、数据库操作、...

    JSP程序设计与项目实训教程

    **JSP程序设计与项目实训教程** ...此外,启发性教学法鼓励你在实践中思考,提升你的编程思维和独立解决问题的能力。因此,无论你是对Web开发感兴趣的学生,还是寻求技能提升的专业人士,本教程都是一个不错的起点。

Global site tag (gtag.js) - Google Analytics