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

yizhihongxing

在 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日

相关文章

  • Oracle Faq(如何在ORACLE中更改表的列名和顺序 )

    下面是详细的Oracle Faq攻略,其中包含了如何在ORACLE中更改表的列名和顺序的过程。 问题概述 如何在ORACLE中更改表的列名和顺序? 解决方案 1. 更改表的列名 要更改表的列名,可以使用Oracle的ALTER TABLE语句。以下是ALTER TABLE语句的语法: ALTER TABLE table_name RENAME COLUMN …

    database 2023年5月21日
    00
  • Zabbix监控方案-官方最新4.4版本【推荐】

    Zabbix监控方案-官方最新4.4版本【推荐】 概述 Zabbix是一款高度可配置的企业级开源网络监控系统,能够提供实时监控、报警、可视化等功能。本文将详细介绍如何搭建Zabbix监控方案,让您更好的使用和了解该系统。 准备工作 在开始搭建Zabbix监控方案之前,需要满足以下条件: 已安装CentOS 7操作系统; 已安装MySQL数据库; 已安装Apa…

    database 2023年5月21日
    00
  • mysql如何查询日期与时间

    MySQL提供了多种方法可以查询日期与时间,以下是两种常用的示例: 方法1: 使用DATE_FORMAT函数格式化日期和时间 使用DATE_FORMAT函数可以将日期和时间以字符串格式输出,具体语法为: SELECT DATE_FORMAT(date_column, format_string) FROM table_name 其中,date_column参…

    database 2023年5月22日
    00
  • MongoDB数据库常用28条查询语句总结

    MongoDB数据库常用28条查询语句总结 1. 数据库操作 创建/使用数据库 通过 use 关键字可以选择或创建数据库,例如 use mydb 将会创建名称为 mydb 的数据库并使用它。 查看所有数据库 执行 show dbs 可以查看所有的数据库列表。 删除数据库 执行 db.dropDatabase() 可以删除当前数据库。 2. 集合操作 创建集合…

    database 2023年5月21日
    00
  • 对PHP新手的一些建议(PHP学习经验总结)

    对PHP新手的一些建议(PHP学习经验总结) 确定学习的目标 学习任何一门语言都需要确定一个明确的目标。PHP的应用范围非常广泛,比如网站开发、后台开发、数据处理等等,因此你需要明确自己想要在什么领域应用PHP。例如,如果你想成为一名网站开发工程师,那么你需要学习PHP基本语法和一些常用的PHP框架,以及对网站的设计和实现有一定的了解。 学习PHP基础知识 …

    database 2023年5月18日
    00
  • MongoDB分片方法详解

    MongoDB分片是让我们能够将数据分散存储在多个服务器上,达到数据水平扩展能力的一种方案。今天我们就来一步步详解MongoDB分片的完整攻略。 前置条件 在使用MongoDB分片之前,需要先明确以下几个前置条件: 需要有三个节点的MongoDB副本集。 所有节点的MongoDB版本必须相同。 所有节点的时间必须同步。 所有节点的存储引擎必须相同。 所有节点…

    MongoDB 2023年3月14日
    00
  • MySQL适用于哪些应用场景?

    MySQL是一个开源的关系型数据库管理系统。它的可靠性、性能、灵活性和易用性使得它成为了最受欢迎的数据库之一。 MySQL适用于很多不同的应用场景,下面列出了其中的5个: 1、Web应用程序:MySQL可与Web编程语言如PHP、Python和Java结合使用,为网站提供持久的数据存储解决方案。由于其高度可靠性和短学习曲线,MySQL已成为最受欢迎的Web开…

    2023年3月8日
    00
  • Mysql数据库使用concat函数执行SQL注入查询

    首先,需要明确什么是SQL注入。SQL注入是一种web应用程序安全漏洞,它允许攻击者使用应用程序和后端数据库之间的交互方式,来向应用程序提供恶意的SQL代码。这些恶意代码可以允许攻击者访问敏感数据,以及在数据库中执行任意操作。 具体到使用concat函数进行SQL注入查询,攻击者可以利用该函数将恶意的SQL代码拼接进查询语句中。严格来说,这种方式并不是通过直…

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