JSP(JavaServer Pages)是一种用于创建动态Web内容的技术,它允许在HTML或XML等文档中嵌入Java代码片段和表达式。新闻分页控件是一种常见的Web应用功能,用于将大量的新闻数据分成多个页面显示,以提高用户体验和页面加载效率。
以下是一个简单的JSP分页控件示例,使用Java Servlet和JDBC从数据库获取新闻数据并进行分页。
<%@ page import="java.util.List" %>
<%@ page import="com.example.News" %>
<html>
<head>
<title>新闻列表</title>
</head>
<body>
<h1>新闻列表</h1>
<table border="1">
<tr>
<th>标题</th>
<th>发布日期</th>
</tr>
<%
List<News> newsList = (List<News>) request.getAttribute("newsList");
for (News news : newsList) { %>
<tr>
<td><%= news.getTitle() %></td>
<td><%= news.getPubDate() %></td>
</tr>
<% } %>
</table>
<div>
<%
int currentPage = (int) request.getAttribute("currentPage");
int totalPages = (int) request.getAttribute("totalPages");
for (int i = 1; i <= totalPages; i++) { %>
<a href="news?page=<%= i %>"><%= i %></a>
<% } %>
</div>
</body>
</html>
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/news")
public class NewsServlet extends HttpServlet {
private static final int PAGE_SIZE = 10;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int page = Integer.parseInt(request.getParameter("page"));
int offset = (page - 1) * PAGE_SIZE;
List<News> newsList = new ArrayList<>();
int totalRecords = 0;
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/newsdb", "user", "password")) {
// 获取总记录数
PreparedStatement countStmt = conn.prepareStatement("SELECT COUNT(*) FROM news");
ResultSet rs = countStmt.executeQuery();
if (rs.next()) {
totalRecords = rs.getInt(1);
}
// 获取当前页的新闻数据
PreparedStatement selectStmt = conn.prepareStatement("SELECT * FROM news LIMIT ? OFFSET ?");
selectStmt.setInt(1, PAGE_SIZE);
selectStmt.setInt(2, offset);
rs = selectStmt.executeQuery();
while (rs.next()) {
News news = new News();
news.setTitle(rs.getString("title"));
news.setPubDate(rs.getDate("pub_date"));
newsList.add(news);
}
} catch (SQLException e) {
e.printStackTrace();
}
int totalPages = (int) Math.ceil((double) totalRecords / PAGE_SIZE);
request.setAttribute("newsList", newsList);
request.setAttribute("currentPage", page);
request.setAttribute("totalPages", totalPages);
request.getRequestDispatcher("/news.jsp").forward(request, response);
}
}
通过以上方法,可以有效实现和优化JSP新闻分页控件,提升Web应用的用户体验和性能。
领取专属 10元无门槛券
手把手带您无忧上云