新闻列表的分页查询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日

相关文章

  • Redis各特性的应用场景

    l Strings l Hashs l Lists l Sets l Sorted Sets l Pub/Sub Redis各特性的应用场景 Strings Strings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字。 常用方法 方法 说明 特性 set 设置key对应的的值为String类型的value     …

    Redis 2023年4月11日
    00
  • Linux下PHP网站服务器安全配置加固防护方法【推荐】

    针对“Linux下PHP网站服务器安全配置加固防护方法”这个话题,我为您提供以下完整攻略: 目录 前言 安装操作系统和软件 SSH相关配置 防火墙设置 禁止root登录 安全设置PHP HTTPS设置 防止目录遍历攻击 恶意IP、失败登录尝试防护 总结 1. 前言 作为网站的作者,在实现一个网站的同时必须需要保证网站的安全,特别是服务器的安全,因为安全对于一…

    database 2023年5月22日
    00
  • Redis哨兵(sentinel)

    目录 前言 原理 架构图 下载 命令 配置 启动 查看 Sentinel(哨兵)配置 常用命令 Q&A Redis主从配置异常解决:Error condition on socket for SYNC: Connection refused (DENIED Redis is running in protected mode) 前言 背景:测试环境的…

    Redis 2023年4月13日
    00
  • SQL SERVER中的流程控制语句

    下面是关于SQL Server中的流程控制语句的详细讲解。 什么是流程控制语句 流程控制语句是一种编程语言用于控制程序执行流程的语句。在SQL Server中,也存在特定的流程控制语句,用于控制存储过程、触发器等对象的执行流程。 SQL SERVER中的流程控制语句类型 SQL Server中的流程控制语句主要包括以下类型: IF…ELSE…:用于根…

    database 2023年5月21日
    00
  • scrapy爬虫-scrapy-redis分布式

    1、如何将一个scrapy爬虫项目修改成为一个简单的分布式爬虫项目 官方文档:https://scrapy-redis.readthedocs.io/en/stable/ 只用修改scrapy项目的两个文件就可以了 一个是爬虫组件文件# -*- coding: utf-8 -*- scrapy from scrapy_redis.spiders import…

    Redis 2023年4月13日
    00
  • 解决resultMap映射数据错误的问题

    当使用MyBatis进行数据映射时,我们可以通过ResultMap来手动指定SQL查询结果和Java对象之间的映射关系。但是,在使用ResultMap时,有时候会出现映射数据错误的问题。下面是解决此类问题的完整攻略: 1.确认SQL查询结果是否正确 首先需要确认SQL查询结果是否正确。可以通过直接在数据库查询中手动执行SQL语句或通过MyBatis生成的SQ…

    database 2023年5月18日
    00
  • 29_对项目的redis cluster实验多master写入、读写分离、高可用性

    redis cluster搭建起来了 redis cluster,提供了多个master,数据可以分布式存储在多个master上; 每个master都带着slave,自动就做读写分离; 每个master如果故障,那么久会自动将slave切换成master,高可用 redis cluster的基本功能,来测试一下 1、实验多master写入 -> 海量数…

    Redis 2023年4月11日
    00
  • SQL 把Null值转换为实际值

    当我们在进行SQL查询时,经常会遇到Null值,它在SQL中代表的就是一个缺失值。有时候我们需要将这些Null值转换为实际的值,这时就需要使用SQL中的一些函数来实现。 在SQL中,可以使用IFNULL函数将Null值转换为实际值。其语法如下: IFNULL(expression, value_if_expression_is_null) 其中,expres…

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