Jsp分页查询
Jsp分页查询详解
首先来介绍一下jsp:
JSP(全称JavaServer Pages)是由[Sun Microsystems](https://baike.baidu.com/item/Sun Microsystems?fromModule=lemma_inlink)公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。
JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。JSP引入了被称为“JSP动作”的XML标签,用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签一样使用它们。标签库能增强功能和服务器性能,而且不受跨平台问题的限制。JSP文件在运行时会被其编译器转换成更原始的Servlet代码。JSP编译器可以把JSP文件编译成用Java代码写的Servlet,然后再由Java编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。
分页查询重要的数据:
1.总记录数*
2.总页数*
3.每页显示的记录数*
4.每页展示的数据集合*
5.导航栏的页码
6.是否是第一页
7.是否是最后一页
8.当前页
page.jsp
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2022/8/31
Time: 16:19
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--
分页查询:
1、总记录数
2、总页数
3、每页显示的记录数
4、每页展示的数据集合
5、导航栏的页码 【1,2,3,4,5】
6、是否是第一页
7、是否是最后一页
8、当前页
--%>
<h1><a href="${pageContext.request.contextPath}/page.do?pagenum=1">加载分页导航</a></h1>
当前页:【${requestScope.pagenum}】,总页数【${requestScope.pageCount}】
<hr>
<c:if test="${requestScope.pagenum ne 1}">
<a href="${pageContext.request.contextPath}/page.do?pagenum=1">首页</a>
<a href="${pageContext.request.contextPath}/page.do?pagenum=${requestScope.pagenum - 1}">上一页</a>
</c:if>
<c:if test="${requestScope.pagenum eq 1}">
<span>首页</span>
<span>上一页</span>
</c:if>
<c:forEach begin="1" end="${requestScope.pageCount}" var="i">
<c:if test="${requestScope.pagenum eq i}">
<span>${i}</span>
</c:if>
<c:if test="${requestScope.pagenum ne i}">
<a href="${pageContext.request.contextPath}/page.do?pagenum=${i}">${i}</a>
</c:if>
</c:forEach>
<c:if test="${requestScope.pagenum ne requestScope.pageCount}">
<a href="${pageContext.request.contextPath}/page.do?pagenum=${requestScope.pagenum + 1}">下一页</a>
<a href="${pageContext.request.contextPath}/page.do?pagenum=${requestScope.pageCount}">尾页</a>
</c:if>
</body>
</html>
PageServlet
package com.jsoft.controller;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.Objects;
/*
*
* https://www.baidu.com/s?wd=13123&pn=10&oq=13123&tn=68018901_24_oem_dg&ie=utf-8&usm=1&rsv_pq=924fee8a00000717&rsv_t=6878n7PBQC7GvB9tW2YEZa%2FOPWlvBY3qIg4%2BN48HKM55BNgGpxsLlO65r5ktjoQO0W9Vdy2r%2B49c
*
* */
@WebServlet(name = "PageServlet", value = "/page.do")
public class PageServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String pagenumStr = request.getParameter("pagenum");
Integer pagenum = 1;
Integer pageCount = 20;
try{
if(Objects.nonNull(pagenumStr)){
pagenum = Integer.parseInt(pagenumStr);
}
if(pagenum <= 0){
pagenum = 1;
}
if(pagenum > 20){
pagenum = 20;
}
} catch (Exception e){
pagenum = 1;
}
request.setAttribute("pagenum",pagenum);
request.setAttribute("pageCount",pageCount);
request.getRequestDispatcher("jsp/page.jsp").forward(request,response);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性