JSP分页显示的实例代码

JSP分页是指将大量数据分为多页进行展示,提高用户体验并减少服务器压力。下面将详细讲解如何实现JSP分页显示,以及两个示例说明。

一、分页的基本思路

  1. 在JSP页面中,使用SQL语句查询出所有数据数量;
  2. 计算总页数,每页显示数据数量,以及当前页码;
  3. 使用SQL语句查询出当前页码的数据;
  4. 在JSP页面中循环显示当前页码的数据,并在页面上添加分页控件。

二、实现步骤

1. 数据库准备

假设我们需要对一张名为user的表进行分页显示。表中包含idname两个字段。

2. 在JSP页面中进行查询

在JSP页面中编写SQL查询语句,查询出数据库中数据的总数量,并将其存储到totalCount变量中。

<%
    Connection conn = null;
    PreparedStatement ps = null;
    ResultSet rs = null;

    String sql = "SELECT COUNT(*) FROM user";

    try {
        Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
        ps = conn.prepareStatement(sql);
        rs = ps.executeQuery();
        if (rs.next()) {
            int totalCount = rs.getInt(1);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        // 关闭数据库连接
    }
%>

3. 分页计算

计算总页数,每页显示数据数量以及当前页码,并将其存储到相应的变量中。这里我们设定每页显示5条数据。

<%
    int pageSize = 5;
    int currentPage = 1;
    int totalCount = 0;
    int totalPage = 0;

    // 上面查询数据库的代码

    if (request.getParameter("currentPage") != null) {
        currentPage = Integer.parseInt(request.getParameter("currentPage"));
    }

    totalPage = (totalCount + pageSize - 1) / pageSize;
%>

4. 查询当前页码数据

根据当前页码和每页显示数据数量,在SQL语句中加上LIMIT限制条件,从数据库中查询出当前页码的数据。

<%
    String sql = "SELECT * FROM user LIMIT ?, ?";
    int start = (currentPage - 1) * pageSize;
    ps = conn.prepareStatement(sql);
    ps.setInt(1, start);
    ps.setInt(2, pageSize);
    rs = ps.executeQuery();

    while (rs.next()) {
        int id = rs.getInt("id");
        String name = rs.getString("name");
        // 将数据展示到页面上
    }
%>

5. 分页控件的实现

在页面上以列表的形式展示数据,并在底部添加分页的控件。通常的分页控件有“上一页”、“下一页”、“首页”、“尾页”和页码数字等。这里以Bootstrap为例实现一个简单的分页控件。

<nav aria-label="Page navigation">
  <ul class="pagination">
    <li <% if (currentPage == 1) { %>class="disabled"<% } %>>
      <a href="/index.jsp?currentPage=<%= currentPage - 1 %>" aria-label="Previous">
        <span aria-hidden="true">&laquo;</span>
      </a>
    </li>
    <% for (int i = 1; i <= totalPage; i++) { %>
    <li <% if (i == currentPage) { %>class="active"<% } %>>
      <a href="/index.jsp?currentPage=<%= i %>"><%= i %></a>
    </li>
    <% } %>
    <li <% if (currentPage == totalPage) { %>class="disabled"<% } %>>
      <a href="/index.jsp?currentPage=<%= currentPage + 1 %>" aria-label="Next">
        <span aria-hidden="true">&raquo;</span>
      </a>
    </li>
  </ul>
</nav>

三、示例说明

示例1:分页查询学生信息

我们需要将一张名为student的表进行分页展示,其中包含字段idnameagescore。并按照分数从高到低进行排序。

具体实现过程如下:

  1. 在JSP页面中,使用SQL语句查询出所有学生数据数量;
  2. 计算总页数,每页显示10条数据,以及当前页码;
  3. 使用SQL语句查询出当前页码的学生数据,并按照分数从高到低排序;
  4. 在JSP页面中循环显示当前页码的学生数据,并在页面上添加分页控件。

示例代码如下:

<%
    Connection conn = null;
    PreparedStatement ps = null;
    ResultSet rs = null;

    String sql = "SELECT COUNT(*) FROM student";

    try {
        Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
        ps = conn.prepareStatement(sql);
        rs = ps.executeQuery();
        if (rs.next()) {
            int totalCount = rs.getInt(1);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        // 关闭数据库连接
    }

    int pageSize = 10;
    int currentPage = 1;
    int totalPage = 0;

    if (request.getParameter("currentPage") != null) {
        currentPage = Integer.parseInt(request.getParameter("currentPage"));
    }

    totalPage = (totalCount + pageSize - 1) / pageSize;

    sql = "SELECT * FROM student ORDER BY score DESC LIMIT ?, ?";
    int start = (currentPage - 1) * pageSize;
    ps = conn.prepareStatement(sql);
    ps.setInt(1, start);
    ps.setInt(2, pageSize);
    rs = ps.executeQuery();

    while (rs.next()) {
        int id = rs.getInt("id");
        String name = rs.getString("name");
        int age = rs.getInt("age");
        float score = rs.getFloat("score");
        // 将数据展示到页面上
    }
%>

<nav aria-label="Page navigation">
  <ul class="pagination">
    <li <% if (currentPage == 1) { %>class="disabled"<% } %>>
      <a href="/student.jsp?currentPage=<%= currentPage - 1 %>" aria-label="Previous">
        <span aria-hidden="true">&laquo;</span>
      </a>
    </li>
    <% for (int i = 1; i <= totalPage; i++) { %>
    <li <% if (i == currentPage) { %>class="active"<% } %>>
      <a href="/student.jsp?currentPage=<%= i %>"><%= i %></a>
    </li>
    <% } %>
    <li <% if (currentPage == totalPage) { %>class="disabled"<% } %>>
      <a href="/student.jsp?currentPage=<%= currentPage + 1 %>" aria-label="Next">
        <span aria-hidden="true">&raquo;</span>
      </a>
    </li>
  </ul>
</nav>

示例2:分页查询商品信息

我们需要将一张名为goods的表进行分页展示,其中包含字段idnamepriceimage。并按照价格从低到高进行排序。

具体实现过程如下:

  1. 在JSP页面中,使用SQL语句查询出所有商品数据数量;
  2. 计算总页数,每页显示20条数据,以及当前页码;
  3. 使用SQL语句查询出当前页码的商品数据,并按照价格从低到高排序;
  4. 在JSP页面中循环显示当前页码的商品数据,并在页面上添加分页控件。

示例代码如下:

<%
    Connection conn = null;
    PreparedStatement ps = null;
    ResultSet rs = null;

    String sql = "SELECT COUNT(*) FROM goods";

    try {
        Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
        ps = conn.prepareStatement(sql);
        rs = ps.executeQuery();
        if (rs.next()) {
            int totalCount = rs.getInt(1);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        // 关闭数据库连接
    }

    int pageSize = 20;
    int currentPage = 1;
    int totalPage = 0;

    if (request.getParameter("currentPage") != null) {
        currentPage = Integer.parseInt(request.getParameter("currentPage"));
    }

    totalPage = (totalCount + pageSize - 1) / pageSize;

    sql = "SELECT * FROM goods ORDER BY price ASC LIMIT ?, ?";
    int start = (currentPage - 1) * pageSize;
    ps = conn.prepareStatement(sql);
    ps.setInt(1, start);
    ps.setInt(2, pageSize);
    rs = ps.executeQuery();

    while (rs.next()) {
        int id = rs.getInt("id");
        String name = rs.getString("name");
        float price = rs.getFloat("price");
        String image = rs.getString("image");
        // 将数据展示到页面上
    }
%>

<nav aria-label="Page navigation">
  <ul class="pagination">
    <li <% if (currentPage == 1) { %>class="disabled"<% } %>>
      <a href="/goods.jsp?currentPage=<%= currentPage - 1 %>" aria-label="Previous">
        <span aria-hidden="true">&laquo;</span>
      </a>
    </li>
    <% for (int i = 1; i <= totalPage; i++) { %>
    <li <% if (i == currentPage) { %>class="active"<% } %>>
      <a href="/goods.jsp?currentPage=<%= i %>"><%= i %></a>
    </li>
    <% } %>
    <li <% if (currentPage == totalPage) { %>class="disabled"<% } %>>
      <a href="/goods.jsp?currentPage=<%= currentPage + 1 %>" aria-label="Next">
        <span aria-hidden="true">&raquo;</span>
      </a>
    </li>
  </ul>
</nav>

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

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

相关文章

  • python playwright之元素定位示例详解

    首先我们来讲一下“python playwright之元素定位示例详解”的完整攻略。该攻略主要介绍如何使用Python语言中的Playwright框架来进行网页元素定位的操作。在该攻略中,我们将包含以下几个部分的内容: 介绍 Playwright 框架的概述及基本用法; 使用 Playwright 进行元素定位的方式及示例; 通过示例来说明 Playwrig…

    css 2023年6月9日
    00
  • 页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)

    页面缩放兼容性处理方法是指在不同浏览器中,确保网页可以适应不同屏幕大小进行缩放显示。下面给出的是zoom和Firefox火狐浏览器的缩放兼容性处理方法。 Zoom缩放 在IE浏览器中,我们可以使用zoom缩放属性实现页面的缩放。zoom属性的原理是以当前视图作为参考,将元素的尺寸放大或缩小。 示例代码: /* 以100%的缩放比例显示页面 */ body {…

    css 2023年6月10日
    00
  • 使用jquery实现HTML5响应式导航菜单教程

    使用jQuery实现HTML5响应式导航菜单是一种常见的开发技术,可以方便实现移动设备上的导航功能。下面就这个话题,提供一个详细的攻略。 准备工作 在开始实现之前,我们需要一个HTML5页面模板、一个CSS文件和最新版的jQuery库。可以通过下面的链接下载: HTML5页面模板:https://www.w3schools.com/html/html5_te…

    css 2023年6月10日
    00
  • jQuery的图片轮播插件PgwSlideshow使用详解

    让我来详细讲解一下“jQuery的图片轮播插件PgwSlideshow使用详解”。 什么是PgwSlideshow PgwSlideshow是一款基于 jQuery 的图片轮播插件。它可以用来展示图片,同时支持缩略图显示、分页功能等。在网页开发中使用 PgwSlideshow 可以让页面更加美观和动态。 如何使用PgwSlideshow 下载PgwSlide…

    css 2023年6月9日
    00
  • css使用@media响应式适配各种屏幕的方法示例

    当今互联网的用户设备多种多样,如何让网站在不同的设备、不同的屏幕尺寸上都能呈现出良好的效果,是一个值得注意的问题。可以使用CSS的@media媒体查询技术来实现响应式布局,以适应各种不同尺寸屏幕设备的需求。 步骤1:定义媒体查询 使用@media规则可以定义不同媒体设备(如屏幕、打印机等)和屏幕尺寸下的样式。通常情况下,需要使用以下语法来定义媒体查询: @m…

    css 2023年6月10日
    00
  • CSS学习之css代码的简写的十条规则

    当我们编写CSS样式代码的时候,有许多简写的方法可以使用,这些简写的方法可以让我们的CSS代码更加简洁、简单易懂。下面我将介绍CSS简写的十条规则,帮助大家更好地理解和应用CSS简写。 1. margin 和 padding 简写规则 margin 和 padding 可以分别用 4 个值的方式指定上、右、下和左边距或填充。他们的顺序是: 上 右 下 左 比…

    css 2023年6月10日
    00
  • CSS实现带箭头的提示框效果【示例代码】

    下面是针对CSS实现带箭头的提示框效果的详细攻略: 1. 准备工作 在开始制作之前,需要准备好以下资源: HTML结构 CSS代码 在 HTML 结构中,需要一个包裹提示框的容器,比如一个 <div> 标签,和触发提示框的元素,比如一个按钮或者一个链接。 2. CSS 样式 2.1 容器样式 首先,需要给容器设置一些样式,包括背景颜色,边框,圆角…

    css 2023年6月9日
    00
  • 标记语言——CSS布局

    标记语言——CSS布局攻略 在网页设计中,CSS布局是非常重要的一部分。它可以帮助设计师实现各种布局效果,包括响应式布局、栅格布局、弹性布局等。本攻略将详细讲解CSS布局的基本知识和常用技巧,并提供两个示例说明。 1. 基本概念 盒模型 在CSS中,每个HTML元素都被视为一个矩形盒子,称为盒模型。盒模型由四个部分组成:内容区域、内边距、边框和外边距。设计师…

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