Jsp分页查询

Jsp分页查询详解

首先来介绍一下jsp:

JSP(全称JavaServer Pages)是由[Sun Microsystems](https://baike.baidu.com/item/Sun Microsystems?fromModule=lemma_inlink)公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTMLXML或其他格式文档的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);
    }
}

posted @   清欢qing  阅读(317)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
点击右上角即可分享
微信分享提示