JSP实现的简单分页显示效果代码

下面就是关于如何实现JSP简单分页显示效果的完整攻略。

一、分页原理介绍

分页是指将大量数据拆分成若干个小的单元,分别显示在不同的页面上。通过这种方式来展示大量数据可以更加清晰和直观。实现分页需要考虑到以下因素:

  1. 每页显示的数据数量
  2. 总共要显示的数据量
  3. 当前页数据的起始位置
  4. 当前页数和总页数

二、实现分页的方法

在JSP中,常用的实现分页的方法有两种:使用JSTL进行分页和手动计算分页。

1. 使用JSTL实现分页

JSTL是标准标签库的缩写,是一组跨平台的JSP标签,在JSP页面中可以通过JSTL标签库提供的标签,实现常用的Web开发功能,例如分页、条件判断、循环等等。使用JSTL实现分页需要安装并引入JSTL标签库。

下面是一个使用JSTL实现分页的示例代码:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

<%
    //获取当前页
    int currentPage = (request.getParameter("page") == null) ? 1 : Integer.parseInt(request.getParameter("page"));
    //设置每页显示的记录数
    int pageSize = 10;
    //设置每页显示的起始记录位置
    int startRow = (currentPage - 1) * pageSize;
%>

<c:forEach var="order" items="${orderList}" begin="${startRow + 1}" end="${fn:min(startRow + pageSize, fn:length(orderList))}">
  <!-- 在此处渲染当前页中的数据 -->
</c:forEach>

<c:if test="${fn:length(orderList) > pageSize}">
  <div class="pagination">
    <c:choose>
      <c:when test="${page > 1}">
        <a href="orderList.jsp?page=${page - 1}">上一页</a>
      </c:when>
      <c:otherwise>
        <span>上一页</span>
      </c:otherwise>
    </c:choose>
    <c:choose>
      <c:when test="${page < fn:ceil(fn:length(orderList) / pageSize)}">
        <a href="orderList.jsp?page=${page + 1}">下一页</a>
      </c:when>
      <c:otherwise>
        <span>下一页</span>
      </c:otherwise>
    </c:choose>
  </div>
</c:if>

在这份代码中,我们使用了JSTL的forEach标签来循环渲染当前页中的数据。使用了JSTL的length和min函数来计算当前页应该显示的记录数,并且使用了JSTL的choose标签来渲染上一页和下一页的链接。因为JSTL支持基本的算术运算符,所以在这里我们可以方便地计算出当前页的起始位置和每页显示的记录数。

2. 手动计算分页

如果你对JSTL不熟悉,也可以手动计算分页。下面是一个手动计算分页的示例代码:

<%
    //获取当前页
    int currentPage = (request.getParameter("page") == null) ? 1 : Integer.parseInt(request.getParameter("page"));
    //设置每页显示的记录数
    int pageSize = 10;
    //查询总记录数
    int totalRows = orderDao.getTotalRows();
    //计算总页数
    int totalPages = (totalRows % pageSize == 0) ? totalRows / pageSize : totalRows / pageSize + 1;
    //设置当前页的起始记录位置
    int startRow = (currentPage - 1) * pageSize;
    //查询当前页的数据
    List<Order> orderList = orderDao.getPageData(startRow, pageSize);
%>

<%-- 在此处渲染当前页中的数据 --%>

<%
    //生成分页导航链接
    StringBuilder sb = new StringBuilder();
    if (currentPage != 1) {
        sb.append("<a href=\"orderList.jsp?page=").append(currentPage - 1).append("\">上一页</a>&nbsp;&nbsp;");
    } else {
        sb.append("上一页&nbsp;&nbsp;");
    }

    for (int i = 1; i <= totalPages; i++) {
        if (i == currentPage) {
            sb.append("<span style=\"color:red;\">").append(currentPage).append("</span>&nbsp;&nbsp;");
        } else {
            sb.append("<a href=\"orderList.jsp?page=").append(i).append("\">").append(i).append("</a>&nbsp;&nbsp;");
        }
    }

    if (currentPage != totalPages) {
        sb.append("<a href=\"orderList.jsp?page=").append(currentPage + 1).append("\">下一页</a>&nbsp;&nbsp;");
    } else {
        sb.append("下一页&nbsp;&nbsp;");
    }
%>

<div class="pagination">
    <%=sb.toString() %>
</div>

这份代码中,我们手动计算了总页数,并且利用JDBC来查询了当前页中的数据。在分页导航部分,我们使用了手动创建HTML标签的方式来生成上一页、下一页和页码链接。虽然手动计算分页需要一些额外的代码,但是在一些实际场景中还是比较常见的。

三、总结

上面介绍了两种实现JSP分页效果的方法,每种方法都有其优缺点。使用JSTL实现分页比较简单,并且代码量比较少;手动计算分页虽然需要一定的代码量,但是提交效率更高。根据实际场景需要,你可以选择适合自己项目的分页方式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JSP实现的简单分页显示效果代码 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • 举例讲解Java中数组和字符串类型的使用方法

    为了讲解Java中数组和字符串类型的使用方法,我们需要先理解什么是数组和字符串。 数组 数组是一种存储一个相同类型数据元素的集合的容器。在Java中,数组是一个对象,由以下属性组成: 数组长度:数组的大小或容量,它始终是一个非负整数,并且在数组声明时确定。 元素类型:一个数组仅可以存储相同类型的元素,这种类型可以是任意的Java基本类型或者对象类型。 在Ja…

    Java 2023年5月26日
    00
  • Java String.format()的用法

    下面我就为大家详细讲解一下“Java String.format()的用法”。 什么是String.format()? String类是Java中最常用的类之一,用于表示和操作字符串。String.format()是String类中的一个静态方法,用于将字符串格式化为特定的格式。 String.format()的语法 String.format()的一般语法…

    Java 2023年5月26日
    00
  • Java Apache POI报错“IndexOutOfBoundsException”的原因与解决办法

    “IndexOutOfBoundsException”是Java的Apache POI类库中的一个异常,通常由以下原因之一引起: 索引错误:如果索引不正确,则可能会出现此异常。例如,可能会尝试访问不存在的行或列。 以下是两个实例: 例1 如果索引不正确,则可以尝试使用正确的索引以解决此问题。例如,在Java中,可以使用以下代码: FileInputStrea…

    Java 2023年5月5日
    00
  • EL表达式的隐式对象_动力节点Java学院整理

    EL表达式的隐式对象是指在JSP页面中可以直接使用的一些对象,不需要通过Scriptlet或JSTL等语法进行声明或使用。EL表达式的隐式对象包括以下几种: pageScope:该隐式对象表示一个HashMap,在JSP页面中通过El表达式可以访问该HashMap中的值。 示例: <% pageContext.setAttribute("na…

    Java 2023年6月15日
    00
  • Java I/O 操作及优化详细介绍

    Java I/O 操作及优化详细介绍 Java 中的 I/O 操作可以通过 InputStream、OutputStream、Reader、Writer 等类实现,在进行 I/O 操作的同时,我们需要注意一些优化策略。 1. InputStream 和 OutputStream 在 Java 中,I/O 操作使用 InputStream 和 OutputSt…

    Java 2023年5月23日
    00
  • JavaWeb 网上书店 注册和登陆功能案例详解

    JavaWeb 网上书店注册和登录功能案例详解 案例概述 该案例是一个基于JavaWeb的网上书店系统,涉及用户注册和登录功能的实现。具体实现过程中,需要考虑用户数据的存储、密码加密、页面跳转、输入验证等问题。 功能分析 该案例涉及到以下功能: 用户注册 用户登录 用户注册功能实现 用户注册需要考虑一系列问题,包括用户信息的获取、姓名、邮箱地址、密码输入,密…

    Java 2023年6月15日
    00
  • Java Apache Commons报错“ParseException”的原因与解决方法

    “ObjectNotFoundException”是Java的Apache Commons类库中的一个异常,通常由以下原因之一引起: 对象不存在:如果对象不存在,则可能会出现此错误。在这种情况下,需要检查对象以解决此问题。 无效的配置:如果配置无效,则可能会出现此错误。在这种情况下,需要检查配置以解决此问题。 以下是两个实例: 例1 如果对象不存在,则可以尝…

    Java 2023年5月5日
    00
  • javaSE基础如何通俗的理解javaBean是什么

    JavaSE作为Java语言的基础和通用部分,包含了大量的API和基础概念。其中,JavaBean是JavaSE中的一个重要概念,它作为JavaSE中的一个基础部分,也是JavaEE开发中常用的一种设计模式。下面我们来详细讲解如何通俗的理解JavaBean。 一、JavaBean的含义 JavaBean是一种Java语言编写的可重用组件。它通常用于表示一个实…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部