Day15--Servlet后端之Jsp了解学习(数据展示分页的实现)

news2025/1/11 9:55:55

JSP(Java Server Pages)是一种基于Java的动态网页开发技术,主要用于创建能够动态生成内容的Web应用程序。他可以前后端语言混合编写,用在编译后会变成一个类,你也可以理解为jsp文件就是一个servlet类,只是jsp对于前端界面的编写更加便捷。

<% 这里放的java代码 %>
<%!声明变量、方法和类的代码%>

1.在“<%!”和“%>”标记之间声明变量,即在“<%!”和“%>”之间放置 Java 的变量声明语句。变量的类型可以是 Java 语言允许的任何数据类型。我们将这些变量称为 JSP 页面的成员变量。

2.在“<%!”和“%>”标记之间声明的方法,在整个 JSP 页面有效,但是,方法内定义的变量只在方法内有效。
在这里插入图片描述
JSP中分页的实现:
先谈实现逻辑:
实现数据展示分页首先需要知道你有多少条数据,一页要展示几条数据,知道这两个数据后我们就能知道分页数,然后通过抽象查询语句实现分页数据的提取,
已知 总数据条数info.size(),一页展示showCount条数据,当前页数PageIndex,则抽象sql如下

SELECT * FROM 表名 LIMIT (PageIndex-1)*showCount,showCount;

我采用的是mybaits的注解+自己封装的GetMapper工具类实现的,相关看文章:
http://t.csdnimg.cn/jLPRQ
我的Mapper接口里的查询分页数据的代码是:

    @Select("select * from student limit #{Index},#{showPage}")
    List<Student> pageIndex(@Param("Index") Integer Index,@Param("showPage") Integer showPage);

知道每页有什么数据后就是写如何展示的逻辑了,请看代码注释:

<%@ page import="Dao.GetMapper" %>
<%@ page import="Model.Student" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>学生信息管理</title>
   
</head>
<body>
<div class="container">
    <h1>学生信息管理</h1>
    <div class="add-student"><a href="insert.jsp">添加学生</a></div>
    <table>
        <tr><th>学号</th><th>姓名</th><th>性别</th><th>年龄</th><th>专业</th><th>操作</th><th>操作1</th></tr>
        <%
            GetMapper getMapper = new GetMapper();//我封装的工具类
            List<Student> info1 = getMapper.selectAll();//获取所有学生信息对象
            int showCount = 2;//每一页展示的数据条数
            int totalPages = (int) Math.ceil(info1.size() * 1.0 / showCount);//获取应该分的总页数,并做向上取整
            //三模运算:当request.getParameter("PageNum") == null成立时PageIndex为1否则就为点击上一页、下一页分页按钮传来的参数
            int PageIndex = request.getParameter("PageNum") == null ? 1 : Integer.parseInt(request.getParameter("PageNum"));
            List<Student> info = getMapper.pageIndex(PageIndex, showCount);//查询分页数据,这个方法在GetMapper中实现的时候已经实现了抽象sql的逻辑

            for (Student student : info) {
        %>
        <tr>
            <td><%= student.getSno() %></td>
            <td><%= student.getName() %></td>
            <td><%= student.getSex() %></td>
            <td><%= student.getAge() %></td>
            <td><%= student.getMajor() %></td>
            <td class="action-links"><a class="delete-link" href="DelUser?Sno=<%= student.getSno() %>" onclick="return confirm('确认删除吗?');">删除</a></td>
            <td class="action-links"><a class="update-link" href="Update?Sno=<%= student.getSno() %>">更新</a></td>
        </tr>
        <%
            }
        %>
    </table>

    <div class="pagination">
        <%
            if (PageIndex > 1) {//当当前页数大于1时首页和上一页不能点击
        %>
        <a href="paging.jsp?PageNum=1">首页</a>
        <a href="paging.jsp?PageNum=<%= PageIndex - 1 %>">上一页</a>
        <%
        } else {
        %>
        <span class="disabled">首页</span>
        <span class="disabled">上一页</span>
        <%
            }
            if (PageIndex < totalPages) {//当前页数大于1,小于最大页数时首都可以点击
        %>
        <a href="paging.jsp?PageNum=<%= PageIndex + 1 %>">下一页</a>
        <a href="paging.jsp?PageNum=<%= totalPages %>">尾页</a>
        <%
        } else {//不在上面两种情况,即当前页就是尾页时,尾页下一页无法点击
        %>
        <span class="disabled">下一页</span>
        <span class="disabled">尾页</span>
        <%
            }
        %>
    </div>
</div>
</body>
</html>

美化样式代码

 <style>
        body {
            font-family: 'Arial', sans-serif;
            background-color: #f0f2f5;
            margin: 0;
            padding: 0;
            color: #333;
        }
        .container {
            max-width: 900px;
            margin: 30px auto;
            background: #ffffff;
            padding: 20px;
            border-radius: 8px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
        }
        h1 {
            text-align: center;
            color: #007BFF;
            margin-bottom: 20px;
        }
        table {
            width: 100%;
            border-collapse: collapse;
            margin: 20px 0;
        }
        th, td {
            border: 1px solid #ddd;
            padding: 12px;
            text-align: left;
        }
        th {
            background-color: #007BFF;
            color: #ffffff;
        }
        tr:nth-child(even) {
            background-color: #f9f9f9;
        }
        tr:hover {
            background-color: #f1f1f1;
        }
        a {
            text-decoration: none;
            color: #007BFF;
            font-weight: bold;
        }
        a:hover {
            text-decoration: underline;
        }
        .pagination {
            text-align: center;
            margin: 20px 0;
        }
        .pagination a, .pagination span {
            display: inline-block;
            padding: 10px 20px;
            margin: 0 5px;
            border: 1px solid #ddd;
            border-radius: 4px;
            color: #007BFF;
            transition: background-color 0.3s, color 0.3s;
        }
        .pagination a:hover {
            background-color: #007BFF;
            color: #ffffff;
        }
        .pagination .disabled {
            color: #b0b0b0;
            border-color: #b0b0b0;
            cursor: not-allowed;
        }
        .action-links a {
            display: inline-block;
            margin: 0 5px;
            padding: 6px 12px;
            border-radius: 4px;
            text-decoration: none;
            font-weight: bold;
        }
        .delete-link {
            background-color: #dc3545;
            color: #ffffff;
        }
        .update-link {
            background-color: #28a745;
            color: #ffffff;
        }
        .action-links a:hover {
            opacity: 0.9;
        }
        .add-student {
            text-align: right;
            margin-bottom: 15px;
        }
        .add-student a {
            background-color: #007BFF;
            color: #ffffff;
            padding: 10px 20px;
            border-radius: 4px;
            font-weight: bold;
            text-decoration: none;
        }
        .add-student a:hover {
            background-color: #0056b3;
        }
    </style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1969122.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024第18届中国西部体育博览会诚邀代理招展

2024第18届中国西部体育博览会诚邀代理招展 2024第18届中国西部体育博览会诚邀全国各关联商会、协会&#xff0c;联盟、各专业会展公司、各关联产业园区、各关联网站报纸杂志及平台等资源方组团参展&#xff0c;组委会将给予最优惠的代理招展政策&#xff0c;群策群力共同把中…

pycharm无法导入pyside2模块;“ModuleNotFoundError: No module named ‘PySide2“

参考博客&#xff1a; 1&#xff09;pycharm中配置pyqt designer和pyside2【功能是在pycharm中可以打开designer,并且可以把.ui文件转换为.py文件】 https://blog.csdn.net/kuntliu/article/details/117219237 2&#xff09;.ui转化为.py后&#xff0c;点击运行&#xff0c;报错…

C++为何难以割舍历史包袱?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「c&#xff0b;&#xff0b;的资料从专业入门到高级教程」&#xff0c;点个关注在评论区回复“666”之后私信回复“666”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 你以为…

Llama 3.1:Meta 的开源 AI 巨兽,智能新高度

在人工智能的世界里&#xff0c;大型语言模型&#xff08;LLMs&#xff09;就像是会魔法的巨人&#xff0c;它们能读懂我们的心思&#xff0c;帮我们解决问题。最近&#xff0c;Meta 公司&#xff08;就是 Facebook 的母公司&#xff09;发布了一个叫做 Llama 3.1 的超级智能模…

科学碳目标的制定流程

科学碳目标&#xff08;Science-Based Target&#xff0c;简称SBT&#xff09;的制定流程是一个系统而严谨的过程&#xff0c;旨在确保企业或组织设定的温室气体减排目标与气候科学的最新研究成果和《巴黎协定》的目标相一致。以下是科学碳目标制定流程的主要步骤&#xff1a; …

java springboot Reflections工具扫描项目中带有某个注解的方法(类似@SpringBootApplication扫描各种注解)

文章目录 java springboot Reflections工具扫描项目中带有某个注解的方法&#xff08;类似SpringBootApplication扫描各种注解&#xff09;简单示范EnableDistributeDelayTask配置路径扫描示范&#xff08;类似于SpringBootApplication&#xff09; java springboot Reflection…

Jupyter Notebook的配置基础

Jupyter Notebook的配置基础 Tab 补全 和 * 任意字符 在 Python 的 IPython 或 Jupyter Notebook 环境中&#xff0c;使用 Tab 补全来快速找到内置函数的方法如下&#xff1a; 开始输入&#xff1a;在代码单元格中开始输入一个函数的名称&#xff0c;可以是内置函数的名称的任…

物联网开发中是否必须了解嵌入式技术?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 1&#xff0c;首先要跟上…

(python)multiprocessing子进程(Process类的使用)总结教程

Python提供了multiprocessing模块来开启子进程&#xff0c;并在子进程中执行我们定制的任务。 &#xff08;python&#xff09;multiprocessing子进程&#xff08;Process类的使用&#xff09; 两种使用方法第一种方法&#xff1a;使用Process类第二种方法&#xff1a;使用mul…

Spring框架和Maven项目搭建

Spring Spring框架是一个用于构建企业级应用程序的开源Java框架。它提供了一个全面的编程和配置模型&#xff0c;用于开发现代化的Java应用程序。 Spring从早期的大量XML配置逐渐演变为采用注解和自动配置的方式&#xff0c;显著减少了配置的工作量。同时&#xff0c;Maven的…

为什么Transformer需要进行 Multi-head Attention?

目录 1. 前言 2. 基本概念 2.1. Word2Vec 2.2. Attention is all you need 2.3. Self-attention 2.3.1. 概述self-attention 2.3.2. 训练细节 2.4. Multi-head Attention 2.4.1. 多头理论细节 2.4.2. 多头代码实现 2.5. 总结 3. 讨论观点 3.1. 观点1&#xff1a; …

Canto - hackmyvm

简介 靶机名称&#xff1a;Canto 难度&#xff1a;简单 靶场地址&#xff1a;https://hackmyvm.eu/machines/machine.php?vmCanto 本地环境 虚拟机&#xff1a;vitual box 靶场IP&#xff08;Canto&#xff09;&#xff1a;192.168.130.53 windows_IP&#xff1a;192.1…

证书及公钥SHA256值计算方法

证书及公钥SHA256值计算方法 移除开头和结尾的标记以及所有空白字符Base64 解码进行 SHA-256 哈希运算 已有文件&#xff1a;证书&#xff08;后缀如crt&#xff09;获取网站证书方法不再赘述 以bilibili为例&#xff1a;浏览器访问&#xff1a;https://bilibili.com 查看证书 …

实验2-4-8 找出三位水仙花数

//实验2-4-8 找出三位水仙花数 //输出给定正整数M和N区间内的所有三位水仙花数 //三位水仙花数&#xff0c;即其个位、十位、百位数字的立方和等于该数本身#include<stdio.h> #include<math.h> int main(){int m,n;scanf("%d %d",&m,&n);//输入在…

Qt 的线性渐变的类QLinearGradient 学习笔记

QLinearGradient 是 Qt 中用于创建线性渐变的类&#xff0c;它允许你在控件上应用从一个颜色到另一个颜色的渐变效果。QLinearGradient 的参数用于定义渐变的方向、范围以及颜色变化。下面是 QLinearGradient 的各个主要参数及其详细解释&#xff1a;1. x1 和 y1 定义&#xff…

FFmpeg有理数相关的源码:AVRational结构体和其相关的函数分析

一、引言 有理数是整数&#xff08;正整数、0、负整数&#xff09;和分数的统称&#xff0c;是整数和分数的集合。整数也可看作是分母是1的分数。不是有理数的实数称为无理数&#xff0c;即无理数的小数部分是无限不循环的数。 AVRational是FFmpeg源码中的一个结构体&#xf…

企业邮箱如何支持免费试用?

企业邮箱如何支持免费试用&#xff1f;Zoho企业邮箱提供多种版本&#xff0c;支持免费试用&#xff0c;具备权威认证、信息安全、全球部署等特点。试用步骤包括访问官网、选择版本、输入信息、验证域名等。特色功能包括定制化界面、搜索、日程安排等。支持多种设备和操作系统。…

linux内核:文件系统的组织(超级块,索引节点,目录项,文件对象)

在虚拟文件系统中抽象了4个对象&#xff1a;超级块、索引节点、目录项和文件对象。 超级块&#xff1a;存放描述文件系统的有关信息。每个文件系统都有自己的超级块&#xff0c;不同文件系统的超级块不同。文件系统的超级块在文件系统安装时建立&#xff0c;在卸载时自动删除。…

【问题解决方案】npm install报错问题:npm ERR! - 多种解决方案,总有一种可以解决

文章目录 1.问题重述2.解决方案方案1.确认根目录正确方案2.确认文件名正确方案3. 确认node.js安装完成&#xff08;注意这个环境变量配置没有写完&#xff09;方案4 改用yarn安装&#xff08;亲测可用&#xff09; 3.延申问题解决方案问题1&#xff1a;需要低版本的node.js 写在…

【计算机毕业设计】727网上拍卖系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…