在 Java Web 开发中,新闻列表的分页查询是一个非常常见的需求。为了实现新闻列表的分页查询,我们可以使用 Servlet 和 JSP 共同完成。
以下是一些实现新闻列表的分页查询 Java 代码实现的步骤:
- 在数据库表中存储新闻信息和相关的分页信息,如当前页数、每页显示的记录数、总的记录数等等。
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
);
- 创建一个 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 方法
}
- 编写一个 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;
}
}
- 编写一个 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);
}
}
- 在 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技术站