新闻列表的分页查询java代码实现

在 Java Web 开发中,新闻列表的分页查询是一个非常常见的需求。为了实现新闻列表的分页查询,我们可以使用 Servlet 和 JSP 共同完成。

以下是一些实现新闻列表的分页查询 Java 代码实现的步骤:

  1. 在数据库表中存储新闻信息和相关的分页信息,如当前页数、每页显示的记录数、总的记录数等等。
CREATE TABLE news (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
content TEXT NOT NULL,
author VARCHAR(20) NOT NULL,
create_time DATETIME NOT NULL,
category VARCHAR(20) NOT NULL
);

CREATE TABLE page_info (
total_count INT NOT NULL,
page_size INT NOT NULL,
current_page INT NOT NULL,
total_page INT NOT NULL
);
  1. 创建一个 News 类来表示新闻信息,可以包含 id、title、content、author、createTime、category 等字段。同时也可以创建一个 PageInfo 类来表示分页信息,包含 totalCount、pageSize、currentPage、totalPage 等属性。
public class News {
    private Integer id;
    private String title;
    private String content;
    private String author;
    private Date createTime;
    private String category;
    // 省略 getter 和 setter 方法
}

public class PageInfo {
    private Integer totalCount;
    private Integer pageSize;
    private Integer currentPage;
    private Integer totalPage;
    // 省略 getter 和 setter 方法
}
  1. 编写一个 NewsDao 类,用于与数据库进行交互,提供分页查询等方法。
public class NewsDao {
    public List<News> queryForPage(int pageNo, int pageSize) {
        // SELECT * FROM news LIMIT ?, ?
        // 其中?分别为:(pageNo-1)*pageSize, pageSize
    }

    public PageInfo getPageInfo(int pageNo, int pageSize) {
        // 统计总记录数totalCount
        PageInfo pageInfo = new PageInfo();
        pageInfo.setCurrentPage(pageNo);
        pageInfo.setPageSize(pageSize);
        pageInfo.setTotalCount(totalCount);
        return pageInfo;
    }
}
  1. 编写一个 NewsController 类,实现查询数据库中的新闻数据和分页信息,并将其传递给 JSP 页面。
public class NewsController extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 获取当前页码和每页记录数
        int pageNo = Integer.parseInt(request.getParameter("pageNo"));
        int pageSize = Integer.parseInt(request.getParameter("pageSize"));
        // 查询数据
        NewsDao newsDao = new NewsDao();
        List<News> newsList = newsDao.queryForPage(pageNo, pageSize);
        PageInfo pageInfo = newsDao.getPageInfo(pageNo, pageSize);
        // 转发到 jsp 页面
        request.setAttribute("newsList", newsList);
        request.setAttribute("pageInfo", pageInfo);
        request.getRequestDispatcher("/news-list.jsp").forward(request, response);
    }
}
  1. 在 JSP 页面中设置分页导航栏,使用户可以点击不同的页码进行跳转。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>新闻列表</title>
</head>
<body>
    <table>
        <thead>
            <tr>
                <th>标题</th>
                <th>作者</th>
                <th>分类</th>
                <th>发布时间</th>
            </tr>
        </thead>
        <tbody>
            <c:forEach var="news" items="${newsList}">
                <tr>
                    <td>${news.title}</td>
                    <td>${news.author}</td>
                    <td>${news.category}</td>
                    <td>${news.createTime}</td>
                </tr>
            </c:forEach>
        </tbody>
    </table>
    <div>
        <a href="/news?pageNo=1&pageSize=${pageInfo.pageSize}">首页</a>
        <a href="/news?pageNo=${pageInfo.currentPage - 1}&pageSize=${pageInfo.pageSize}">上一页</a>
        <% if (pageInfo.currentPage > 1) { %>
            <a href="/news?pageNo=${pageInfo.currentPage - 1}&pageSize=${pageInfo.pageSize}">${pageInfo.currentPage - 1}</a>
        <% } %>
        <a href="#" class="active">${pageInfo.currentPage}</a>
        <% if (pageInfo.currentPage < pageInfo.totalPage) { %>
            <a href="/news?pageNo=${pageInfo.currentPage + 1}&pageSize=${pageInfo.pageSize}">${pageInfo.currentPage + 1}</a>
        <% } %>
        <a href="/news?pageNo=${pageInfo.totalPage}&pageSize=${pageInfo.pageSize}">末页</a>
    </div>
</body>
</html>

以上就是实现新闻列表的分页查询 Java 代码实现的主要步骤。这里提供两条示例说明:

示例1:当用户请求包含当前页码和每页记录数的 URL,如 /news?pageNo=2&pageSize=10 时,服务器将查询第 2 页、每页显示 10 条记录的新闻信息并返回给浏览器。

示例2:当用户请求包含当前页码和每页记录数的 URL,如 /news?pageNo=1&pageSize=10 时,服务器将查询总记录数后,计算出总页数、当前页码、每页显示数量等分页信息,并返回给浏览器。浏览器通过 JSP 页面将分页信息展示给用户,并提供分页导航栏,用户可以点击不同的页码进行跳转。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:新闻列表的分页查询java代码实现 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • 如何利用percona-toolkit工具检查MySQL数据库主从一致性以及修复

    如何利用percona-toolkit工具检查MySQL数据库主从一致性以及修复 Percona Toolkit 是由 Percona 公司出品的一套 MySQL 工具集,其中包括各种用于分析和管理 MySQL 数据库的工具。本文将重点介绍如何使用 percona-toolkit 工具检查 MySQL 数据库主从一致性,并修复主从不一致的问题。 1. 安装 …

    database 2023年5月18日
    00
  • SQL Server 2005中更改sa的用户名的方法

    要在SQL Server 2005中更改”sa”用户的用户名,可以使用以下步骤: 步骤一:确保有其他管理员账户 首先,您需要确保在SQL Server 2005中至少存在一个其他管理员账户,以便在更改”sa”用户的用户名时不会丢失对其进行管理的能力。如果没有其他管理员账户,请创建一个。 步骤二:创建一个临时管理员账户 接下来,我们需要创建一个临时管理员账户,…

    database 2023年5月21日
    00
  • MySQL开启记录执行过的SQL语句方法

    要开启MySQL记录执行过的SQL语句,需要进行以下步骤: 1. 修改MySQL配置文件 首先需要修改MySQL配置文件,将MySQL的general log打开。在MySQL配置文件my.cnf中加入以下配置: [mysqld] general_log_file=/usr/local/mysql/data/mysql.log general_log=1 其…

    database 2023年5月22日
    00
  • ubuntu下安装Java 8的步骤教程

    以下是ubuntu下安装Java 8的步骤教程的完整攻略。 1. 更新本地软件包索引 在安装Java 8之前,我们需要更新本地软件包索引,确保我们获取的是最新的软件包信息。在终端中执行以下命令: sudo apt update 2. 安装Java 8 2.1. 在默认存储库中安装Java 在Ubuntu默认存储库中,我们可以找到Java 8的安装包。但是,默…

    database 2023年5月22日
    00
  • Couchbase 和 MariaDB 的区别

    了解 Couchbase 和 MariaDB 的区别,需要深入了解它们的特点和适用场景。 Couchbase和MariaDB的简介 Couchbase是一种NoSQL数据库,可以将多个数据中心和云提供商的数据存储在一个分布式系统中。MariaDB则是一种关系型数据库,是MySQL的分支,有着广泛的使用。 数据模型的区别 Couchbase使用键值对存储数据,…

    database 2023年3月27日
    00
  • Linux 安装二进制MySQL 及 破解MySQL密码的方法

    安装二进制MySQL 及 破解MySQL密码的方法 下载MySQL二进制安装包 首先,需要从MySQL官方网站下载MySQL二进制安装包,下载地址为: https://dev.mysql.com/downloads/mysql/ 选择所需的操作系统和版本后进行下载。 安装MySQL 在Linux系统上,可以使用以下命令进行MySQL的安装: tar xvf …

    database 2023年5月22日
    00
  • 一起raid数据恢复及回迁成功的案例

    关于“一起raid数据恢复及回迁成功的案例”的攻略,我将分为以下几个步骤进行讲解: 1. 了解 RAID RAID是指“Redundant Array of Independent Disks”,也就是独立磁盘冗余阵列。它通过将多块硬盘组合成一个数据存储单元,以提高数据读写速度和数据冗余度。因此,在操作 RAID 时,我们需要清楚其不同的级别和操作方式,包括…

    database 2023年5月22日
    00
  • Spark学习笔记(一)Spark初识【特性、组成、应用】

    Spark学习笔记(一)Spark初识:特性、组成与应用 什么是Spark? Spark是一种基于内存的大数据处理框架。它提供了一个分布式计算引擎,可在大规模数据集上迅速进行计算。Spark可以跨越多个计算平台,包括Hadoop、Mesos、Kubernetes等。 Spark的特性 Spark的特点可以总结如下: 更快的速度:Spark通过内存计算和更好的…

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