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

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>
  • 14
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT ·南栀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值