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中各种集合的线程安全性问题,以及如何使用这些集合类来保证线程安全。 简介 Java中常用的集合类可以分为List、Set和Map三大类。其中,List表示有序的集合,元素可以重…

    Java 2023年5月18日
    00
  • 浅谈Spring Boot 属性配置和自定义属性配置

    浅谈Spring Boot属性配置和自定义属性配置攻略 Spring Boot属性配置 Spring Boot通过提供大量的默认属性值来简化应用程序的配置。这些属性可以在application.properties文件中定义,也可以在application.yml文件中定义。在这两种文件类型中,属性都按照键值对的形式定义,具体的格式和语法规则可以参见官方文档…

    Java 2023年5月15日
    00
  • 解决中文乱码的几种解决方法(推荐)

    解决中文乱码问题对于我们在编写网站、处理数据、撰写文章等工作中非常常见且重要。本文将总结几种推荐的方法来解决中文乱码问题。 方法一:使用UTF-8编码格式 UTF-8是我们现在常用的编码格式之一。在网页中,可以在标签中使用以下代码来指定UTF-8编码格式。 <meta http-equiv="Content-Type" conten…

    Java 2023年5月20日
    00
  • 详解Lombok快速上手(安装、使用与注解参数)

    详解 Lombok 快速上手 Lombok 是一个 Java 库,可以在编码时自动生成样板代码,以减少 Java 项目中冗长的样板代码量。 安装 Lombok 安装 Lombok 很简单。只需要在项目依赖中加入 Lombok,就能让 Lombok 自动为你生成样板代码。 下面是 Maven 和 Gradle 的配置: Maven <dependency…

    Java 2023年6月1日
    00
  • c#使用S22.Imap收剑灵激活码邮件代码示例(imap收邮件)

    c#是一种广泛应用于Windows平台开发的高级编程语言,S22.Imap是一个.NET实现的轻量级IMAP客户端,用于与IMAP邮件服务器进行交互操作。本文将详细讲解如何使用S22.Imap收取邮件,特别是在收取剑灵激活码邮件时的注意事项及代码示例。 收取剑灵激活码邮件的注意事项 剑灵是由韩国NCSoft开发的一款热门游戏,激活码是该游戏玩家兑换游戏物品的…

    Java 2023年5月19日
    00
  • ChatGPT 对接微信公众号技术方案实现!

    作者:小傅哥 博客:https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获!? 9天假期写了8天代码和10篇文章,这个5.1过的很爽?! 如假期前小傅哥的计划一样,这个假期开启了新的技术项目《ChatGPT 微服务应用体系构建》教程;从搭建环境、开发chatgpt-sdk-java、对接公众号、封装api,直至假期最后一天,完成了…

    Java 2023年5月8日
    00
  • Spring Data Jpa框架最佳实践示例

    下面是针对“Spring Data JPA框架最佳实践示例”的详细攻略。 1. 简介 Spring Data JPA 旨在为JPA 提供更加方便的数据访问和处理方式。通过Spring Data JPA,我们可以减少很多代码量,这部分代码通常是模板式重复的。这样我们的代码可以更加专注于业务逻辑的实现。通过以下示例,了解如何使用Spring Data JPA 完…

    Java 2023年6月2日
    00
  • jsp页面验证码完整实例

    下面是关于”JSP页面验证码完整实例”的完整攻略: 1. 流程介绍 验证码是一种常见的安全验证,可以有效地防止机器人程序以及恶意攻击。在 JSP 页面中,使用验证码可以有效地保障数据的安全性。 本文将介绍如何在 JSP 页面中实现验证码的功能,包括生成随机验证码、将验证码展示在页面中、验证用户输入的验证码是否正确等。具体流程如下: 用户在页面中填写用户名、密…

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