|
|
|
@ -4,6 +4,7 @@
|
|
|
|
|
Date: 2020/2/10
|
|
|
|
|
Time: 21:45
|
|
|
|
|
To change this template use File | Settings | File Templates.
|
|
|
|
|
这部分是JSP页面的头部注释,说明了该文件创建时的相关信息,如创建者、创建日期、时间以及提示如何修改模板等内容
|
|
|
|
|
--%>
|
|
|
|
|
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
|
|
|
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
|
|
|
@ -11,38 +12,59 @@
|
|
|
|
|
<head>
|
|
|
|
|
<meta charset="UTF-8">
|
|
|
|
|
<title></title>
|
|
|
|
|
<!-- 设置页面渲染引擎为webkit,用于在一些浏览器中更好地渲染页面样式等 -->
|
|
|
|
|
<meta name="renderer" content="webkit">
|
|
|
|
|
<!-- 配置页面兼容模式,使其在IE浏览器下以最高级别的标准模式(IE=edge)以及启用Chrome Frame(chrome=1)来渲染页面,以提高兼容性 -->
|
|
|
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
|
|
|
|
<!-- 引入字体相关的CSS样式文件,路径通过表达式语言获取当前页面上下文请求路径拼接而成,用于页面中字体的显示样式设置 -->
|
|
|
|
|
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/font.css">
|
|
|
|
|
<!-- 引入xadmin框架的CSS样式文件,用于实现该框架下特定的页面布局和样式效果 -->
|
|
|
|
|
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/xadmin.css">
|
|
|
|
|
<!-- 引入Bootstrap的CSS样式文件,用于实现页面基本的布局和样式美化 -->
|
|
|
|
|
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/bootstrap.css">
|
|
|
|
|
<!-- 引入jQuery库的JavaScript文件,这是一个常用的JavaScript库,用于简化DOM操作、事件处理等功能 -->
|
|
|
|
|
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-3.1.1.js"></script>
|
|
|
|
|
<!-- 引入layui框架的JavaScript核心文件,layui是一个用于构建页面交互界面的前端框架 -->
|
|
|
|
|
<script src="${pageContext.request.contextPath}/lib/layui/layui.js" charset="utf-8"></script>
|
|
|
|
|
<!-- 引入xadmin框架的JavaScript文件,用于实现该框架相关的功能和交互效果 -->
|
|
|
|
|
<script type="text/javascript" src="${pageContext.request.contextPath}/js/xadmin.js"></script>
|
|
|
|
|
<!-- 引入Bootstrap的JavaScript文件,用于实现Bootstrap框架相关的交互功能,比如一些组件的动态效果等 -->
|
|
|
|
|
<script type="text/javascript" src="${pageContext.request.contextPath}/js/bootstrap.js"></script>
|
|
|
|
|
<!-- 再次引入jQuery库的JavaScript文件,此处可能存在重复引入问题,可根据实际情况进行优化 -->
|
|
|
|
|
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-3.1.1.js"></script>
|
|
|
|
|
<!-- 以下是针对IE浏览器版本小于9的情况,引入html5shiv库的JavaScript文件,用于让IE低版本支持HTML5标签 -->
|
|
|
|
|
<!-- 以及引入respond.js库的JavaScript文件,用于让IE低版本支持CSS3的媒体查询功能,提升页面在低版本IE浏览器下的兼容性 -->
|
|
|
|
|
<!--[if lt IE 9]>
|
|
|
|
|
<script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
|
|
|
|
|
<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
|
|
|
|
|
<![endif]-->
|
|
|
|
|
<script>
|
|
|
|
|
function changePageSize() {
|
|
|
|
|
//获取下拉框的值
|
|
|
|
|
// 获取下拉框(id为changePageSize)中用户选择的值,该下拉框通常用于选择每页显示的数据条数
|
|
|
|
|
var pageSize = $("#changePageSize").val();
|
|
|
|
|
//向服务器发送请求,改变每页显示条数
|
|
|
|
|
location.href = "${pageContext.request.contextPath}/findAllAdmin?page=1&size="+ pageSize;
|
|
|
|
|
// 通过修改浏览器地址栏的URL(location.href)向服务器发送请求,传递新的每页显示条数参数(pageSize),同时设置当前页码为1,用于改变每页显示条数后刷新页面数据展示
|
|
|
|
|
location.href = "${pageContext.request.contextPath}/findAllAdmin?page=1&size=" + pageSize;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 当搜索按钮(id为serarch_btn)被点击时执行以下函数
|
|
|
|
|
$("#serarch_btn").click(function () {
|
|
|
|
|
// 获取输入框(id为keyword)中的用户输入的关键字内容,该关键字通常用于在查找管理员数据时进行筛选
|
|
|
|
|
var keyword = $("#keyword").val();
|
|
|
|
|
location.href="${pageContext.request.contextPath}/findAllAdmin?page=1&size=5&keyword="+keyword;
|
|
|
|
|
// 通过修改浏览器地址栏的URL向服务器发送请求,传递关键字参数、设置当前页码为1以及每页显示条数为5,用于根据关键字进行搜索并刷新页面展示搜索结果
|
|
|
|
|
location.href = "${pageContext.request.contextPath}/findAllAdmin?page=1&size=5&keyword=" + keyword;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 当刷新按钮(id为refresh,代码中未展示该按钮的HTML部分,但推测存在此功能按钮)被点击时执行以下函数
|
|
|
|
|
$("#refresh").click(function () {
|
|
|
|
|
// 重置表单(id为myform),将表单中的输入框等元素的值恢复到初始状态(此处假设表单中各元素有相应的重置逻辑实现)
|
|
|
|
|
$("#myform").reset();
|
|
|
|
|
location.href="${pageContext.request.contextPath}/findAllAdmin?page=1&size=5";
|
|
|
|
|
// 通过修改浏览器地址栏的URL向服务器发送请求,设置当前页码为1以及每页显示条数为5,用于刷新页面展示初始的数据列表
|
|
|
|
|
location.href = "${pageContext.request.contextPath}/findAllAdmin?page=1&size=5";
|
|
|
|
|
});
|
|
|
|
|
</script>
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
<%-- 以下这部分代码被注释掉了,原本可能是用于页面导航栏的展示,包含了面包屑导航以及一个刷新按钮,点击刷新按钮可重新加载当前页面 --%>
|
|
|
|
|
<%--<div class="x-nav">
|
|
|
|
|
<span class="layui-breadcrumb">
|
|
|
|
|
<a href="">首页</a>
|
|
|
|
@ -53,32 +75,46 @@
|
|
|
|
|
<a class="layui-btn layui-btn-small" style="line-height:1.6em;margin-top:3px;float:right" onclick="location.reload()" title="刷新">
|
|
|
|
|
<i class="layui-icon layui-icon-refresh" style="line-height:30px"></i></a>
|
|
|
|
|
</div>--%>
|
|
|
|
|
<!-- 使用layui的流体布局容器类layui-fluid,使内部元素能自适应页面宽度 -->
|
|
|
|
|
<div class="layui-fluid">
|
|
|
|
|
<!-- 创建一个layui的行元素,并设置列间距为15px,用于放置页面中的各种模块 -->
|
|
|
|
|
<div class="layui-row layui-col-space15">
|
|
|
|
|
<div class="layui-col-md12">
|
|
|
|
|
<div class="layui-card">
|
|
|
|
|
<div class="layui-card-body ">
|
|
|
|
|
<!-- 创建一个表单,设置id为myform,应用layui的表单样式以及列间距样式,用于放置搜索等相关的表单元素 -->
|
|
|
|
|
<form id="myform" class="layui-form layui-col-space5">
|
|
|
|
|
<!-- 创建一个内联的表单元素块,在小屏幕(xs尺寸)下显示,用于放置一个文本输入框 -->
|
|
|
|
|
<div class="layui-inline layui-show-xs-block">
|
|
|
|
|
<!-- 创建一个文本输入框,设置自动补全关闭,添加占位提示文字,设置name和id属性,方便后续传递参数以及操作该元素,同时通过表达式语言获取并设置输入框的值(如果存在相应参数传入的话) -->
|
|
|
|
|
<input class="layui-input" type="text" autocomplete="off" placeholder="请输入关键字" name="keyword" id="keyword" value="${param.keyword}">
|
|
|
|
|
</div>
|
|
|
|
|
<!-- 创建一个内联的表单元素块,在小屏幕(xs尺寸)下显示,用于放置一个搜索按钮 -->
|
|
|
|
|
<div class="layui-inline layui-show-xs-block">
|
|
|
|
|
<!-- 创建一个layui的按钮,设置id为serarch_btn,添加相应的提交和过滤属性(lay-submit和lay-filter),按钮内部通过图标展示搜索的图标样式 -->
|
|
|
|
|
<button class="layui-btn" id="serarch_btn" lay-submit="" lay-filter="sreach"><i class="layui-icon"></i></button>
|
|
|
|
|
</div>
|
|
|
|
|
<!-- 创建一个内联的表单元素块,在小屏幕(xs尺寸)下显示,并且设置靠右对齐(x-right类,推测是自定义的样式类用于控制布局),用于放置一个链接按钮 -->
|
|
|
|
|
<div class="layui-inline layui-show-xs-block x-right">
|
|
|
|
|
<!-- 创建一个layui的常规按钮样式的链接按钮,点击可跳转到默认的管理员列表页面(设置了固定的每页显示5条数据),按钮内部通过图标展示相应的图标样式 -->
|
|
|
|
|
<a class="layui-btn layui-btn-normal" href="${pageContext.request.contextPath}/findAllAdmin?page=1&size=5"><i class="layui-icon"></i></a>
|
|
|
|
|
</div>
|
|
|
|
|
</form>
|
|
|
|
|
</div>
|
|
|
|
|
<xblock>
|
|
|
|
|
<!-- 创建一个添加按钮,点击可跳转到添加管理员的页面,按钮应用layui的常规按钮样式,按钮内部通过图标展示添加的图标样式 -->
|
|
|
|
|
<a href="${pageContext.request.contextPath}/adminAdd" class="layui-btn layui-btn-normal"><i class="layui-icon"></i>添加</a>
|
|
|
|
|
<!-- 创建一个导出按钮,点击时调用exportInfo函数(会根据权限判断是否能导出),按钮应用layui的暖色调按钮样式,按钮内部通过图标展示导出的图标样式 -->
|
|
|
|
|
<a onclick="exportInfo(${sessionScope.adminInfo.power})" class="layui-btn layui-btn-warm" href="javascript:;"><i class="layui-icon"></i>导出</a>
|
|
|
|
|
<!-- 创建一个靠右对齐的文本元素,用于展示总的数据条数信息,通过表达式语言获取并展示总数据条数(pageInfo.total) -->
|
|
|
|
|
<span class="x-right" style="line-height:40px">共有数据:${pageInfo.total} 条</span>
|
|
|
|
|
</xblock>
|
|
|
|
|
<div class="layui-card-body">
|
|
|
|
|
<!-- 创建一个layui的表格,应用layui的表格和表单样式,用于展示管理员数据列表 -->
|
|
|
|
|
<table class="layui-table layui-form">
|
|
|
|
|
<thead>
|
|
|
|
|
<tr style="text-align: center">
|
|
|
|
|
<!-- 表格表头部分,分别设置各列的标题,如ID、用户名等,并且设置文本居中对齐 -->
|
|
|
|
|
<th style="text-align: center">ID</th>
|
|
|
|
|
<th style="text-align: center">用户名</th>
|
|
|
|
|
<th style="text-align: center">姓名</th>
|
|
|
|
@ -92,8 +128,10 @@
|
|
|
|
|
<%
|
|
|
|
|
int j = 1;
|
|
|
|
|
%>
|
|
|
|
|
<!-- 使用JSTL的<>标签循环遍历从服务器端获取的管理员数据列表(pageInfo.list),每次循环将一个管理员对象赋值给admin变量 -->
|
|
|
|
|
<c:forEach items="${pageInfo.list}" var="admin">
|
|
|
|
|
<tr id="light" style="text-align: center">
|
|
|
|
|
<!-- 在表格行中展示数据,ID列通过Java代码片段(<%=j++%>)自增序号来显示序号,其他列通过表达式语言展示管理员对象的各个属性值,如用户名、姓名等 -->
|
|
|
|
|
<td><%=j++%></td>
|
|
|
|
|
<td>${admin.username}</td>
|
|
|
|
|
<td>${admin.name}</td>
|
|
|
|
@ -102,25 +140,31 @@
|
|
|
|
|
<td>${admin.power}</td>
|
|
|
|
|
<td>${admin.description}</td>
|
|
|
|
|
<td class="td-manage">
|
|
|
|
|
<!-- 创建一个编辑操作的链接按钮,点击可跳转到编辑管理员信息的页面,通过传递管理员的id参数来指定要编辑的对象,按钮内部通过图标展示编辑的图标样式 -->
|
|
|
|
|
<a title="编辑" href="${pageContext.request.contextPath}/adminEdit?id=${admin.id}">
|
|
|
|
|
<i class="layui-icon"></i>
|
|
|
|
|
</a>
|
|
|
|
|
<!-- 创建一个授权操作的链接按钮,点击时调用put_power函数,并传递当前管理员的id以及当前用户的权限信息(用于判断是否有权限进行授权操作),按钮内部通过图标展示授权的图标样式 -->
|
|
|
|
|
<a title="授权" onclick="put_power(this,${admin.id},${sessionScope.adminInfo.power})" href="javascript:;">
|
|
|
|
|
<i class="layui-icon"></i>
|
|
|
|
|
</a>
|
|
|
|
|
<!-- 创建一个删除操作的链接按钮,点击时调用member_del函数,并传递当前管理员的id以及当前用户的权限信息(用于判断是否有权限进行删除操作),按钮内部通过图标展示删除的图标样式 -->
|
|
|
|
|
<a title="删除" onclick="member_del(this,${admin.id},${sessionScope.adminInfo.power})" href="javascript:;">
|
|
|
|
|
<i class="layui-icon"></i>
|
|
|
|
|
</a>
|
|
|
|
|
</td>
|
|
|
|
|
</c:forEach>
|
|
|
|
|
</tr>
|
|
|
|
|
</c:forEach>
|
|
|
|
|
</tbody>
|
|
|
|
|
</table>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="pull-left">
|
|
|
|
|
<div class="form-group form-inline">
|
|
|
|
|
<!-- 展示分页相关信息,如总页数、当前页码等文本信息,并且通过表达式语言获取相应的数据进行展示 -->
|
|
|
|
|
共 ${pageInfo.pages} 页 当前页:${pageInfo.pageNum} / ${pageInfo.pages}  每页
|
|
|
|
|
<!-- 创建一个下拉框,用于选择每页显示的条数,添加表单控制类样式,设置id属性,当下拉框的值改变时调用changePageSize函数来改变每页显示条数 -->
|
|
|
|
|
<select class="form-control" id="changePageSize" onchange="changePageSize()">
|
|
|
|
|
<!-- 下拉框中的各个选项,通过表达式语言获取当前每页显示条数作为默认选中项,并设置其他可选的每页显示条数选项 -->
|
|
|
|
|
<option value="1">${pageInfo.size}</option>
|
|
|
|
|
<option value="5">5</option>
|
|
|
|
|
<option value="10">10</option>
|
|
|
|
@ -131,24 +175,28 @@
|
|
|
|
|
</div>
|
|
|
|
|
<c:choose>
|
|
|
|
|
<c:when test="${pageInfo.pages < 5}">
|
|
|
|
|
<!-- 当总页数小于5时,设置分页导航的起始页码(begin)和结束页码(end)都为1到总页数,用于展示所有页码链接 -->
|
|
|
|
|
<c:set var="begin" value="1">
|
|
|
|
|
</c:set>
|
|
|
|
|
<c:set var="end" value="${pageInfo.pages}">
|
|
|
|
|
</c:set>
|
|
|
|
|
</c:when>
|
|
|
|
|
<c:when test="${pageInfo.pageNum <= 3}">
|
|
|
|
|
<!-- 当当前页码小于等于3时,设置分页导航的起始页码为1,结束页码为5,通常用于在前面几页时展示固定范围的页码链接 -->
|
|
|
|
|
<c:set var="begin" value="1">
|
|
|
|
|
</c:set>
|
|
|
|
|
<c:set var="end" value="5">
|
|
|
|
|
</c:set>
|
|
|
|
|
</c:when>
|
|
|
|
|
<c:when test="${pageInfo.pageNum > 3 and pageInfo.pageNum <= pageInfo.pages-2}">
|
|
|
|
|
<!-- 当当前页码大于3且小于等于总页数减2时,设置分页导航的起始页码为当前页码减2,结束页码为当前页码加2,用于在中间页码范围时动态展示周边的页码链接 -->
|
|
|
|
|
<c:set var="begin" value="${pageInfo.pageNum - 2}">
|
|
|
|
|
</c:set>
|
|
|
|
|
<c:set var="end" value="${pageInfo.pageNum + 2}">
|
|
|
|
|
</c:set>
|
|
|
|
|
</c:when>
|
|
|
|
|
<c:otherwise>
|
|
|
|
|
<!-- 当当前页码大于总页数减2时(即接近尾页时),设置分页导航的起始页码为总页数减4,结束页码为总页数,用于展示尾页附近的页码链接 -->
|
|
|
|
|
<c:set var="begin" value="${pageInfo.pages - 4}">
|
|
|
|
|
</c:set>
|
|
|
|
|
<c:set var="end" value="${pageInfo.pages}">
|
|
|
|
@ -158,101 +206,10 @@
|
|
|
|
|
<div class="layui-card-body x-right" style="height: min-content">
|
|
|
|
|
<div class="page">
|
|
|
|
|
<div>
|
|
|
|
|
<!-- 创建一个首页链接按钮,点击可跳转到第一页,传递每页显示条数以及关键字参数(如果有),按钮应用相应的样式类 -->
|
|
|
|
|
<a class="next" href="${pageContext.request.contextPath}/findAllAdmin?page=1&size=${pageInfo.pageSize}&keyword=${param.keyword}">首页</a>
|
|
|
|
|
<!-- 当当前页码大于1时,创建一个上一页链接按钮,点击可跳转到上一页,传递相应的参数,按钮应用相应的样式类 -->
|
|
|
|
|
<c:if test="${pageInfo.pageNum > 1}">
|
|
|
|
|
<a class="prev" href="${pageContext.request.contextPath}/findAllAdmin?page=${pageInfo.pageNum-1}&size=${pageInfo.pageSize}&keyword=${param.keyword}">上一页</a>
|
|
|
|
|
</c:if>
|
|
|
|
|
<c:forEach var="i" begin="${begin}" end="${end}" step="1">
|
|
|
|
|
<c:if test="${pageInfo.pageNum == i}">
|
|
|
|
|
<span class="current">${i}</span>
|
|
|
|
|
</c:if>
|
|
|
|
|
<c:if test="${pageInfo.pageNum != i}">
|
|
|
|
|
<a class="num" href="${pageContext.request.contextPath}/findAllAdmin?page=${i}&size=${pageInfo.pageSize}&keyword=${param.keyword}">${i}</a>
|
|
|
|
|
</c:if>
|
|
|
|
|
</c:forEach>
|
|
|
|
|
<c:if test="${pageInfo.pageNum < pageInfo.pages}">
|
|
|
|
|
<a class="next" href="${pageContext.request.contextPath}/findAllAdmin?page=${pageInfo.pageNum+1}&size=${pageInfo.pageSize}&keyword=${param.keyword}">下一页</a>
|
|
|
|
|
</c:if>
|
|
|
|
|
<a class="next" href="${pageContext.request.contextPath}/findAllAdmin?page=${pageInfo.pages}&size=${pageInfo.pageSize}&keyword=${param.keyword}">尾页</a>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
//删除操作
|
|
|
|
|
function member_del(obj,id,power){
|
|
|
|
|
layer.confirm('确认要删除吗?',function(index){
|
|
|
|
|
if ( power < 3){
|
|
|
|
|
layer.msg('对不起,您没有权限!');
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
//发异步删除数据
|
|
|
|
|
$.get("${pageContext.request.contextPath}/deleteAdmin",{"id":id},function (data) {
|
|
|
|
|
if(data = true){
|
|
|
|
|
layer.msg('删除成功!',{icon:1,time:2000});
|
|
|
|
|
setTimeout(function () {window.location.href='${pageContext.request.contextPath}/findAllAdmin';},2000);
|
|
|
|
|
|
|
|
|
|
}else {
|
|
|
|
|
layer.msg('删除失败!',{icon:1,time:2000});
|
|
|
|
|
setTimeout(function () {window.location.href='${pageContext.request.contextPath}/findAllAdmin';},2000);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
//授权操作
|
|
|
|
|
function put_power(obj,id,power) {
|
|
|
|
|
//验证是否拥有权限
|
|
|
|
|
if (power < 3) {
|
|
|
|
|
layer.msg('对不起,您没有权限!');
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
//prompt层
|
|
|
|
|
layer.prompt({title: '输入授权密码,完成身份校验', formType: 1}, function(password, index){
|
|
|
|
|
if (password != 123) {
|
|
|
|
|
layer.msg('授权密码有误,身份验证失败');
|
|
|
|
|
layer.close(index);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
layer.close(index);
|
|
|
|
|
layer.prompt({title: '输入权限级别,并确认授权', formType: 1}, function(level, index){
|
|
|
|
|
if (level < 0 || level > 4) {
|
|
|
|
|
layer.msg('授权等级输入有误,请重新输入!')
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (level > power) {
|
|
|
|
|
layer.msg('对不起,您权限不足!')
|
|
|
|
|
layer.close(index);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
$.get("${pageContext.request.contextPath}/put_power",{"id":id,"power":level},function (data) {
|
|
|
|
|
if(data){
|
|
|
|
|
layer.msg('授权成功!');
|
|
|
|
|
layer.close(index);
|
|
|
|
|
setTimeout(function () {window.location.href='${pageContext.request.contextPath}/findAllAdmin';},2000);
|
|
|
|
|
}else {
|
|
|
|
|
layer.msg('授权失败,请联系管理员!');
|
|
|
|
|
layer.close(index);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
layer.close(index);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
//导出Excel操作
|
|
|
|
|
function exportInfo(power) {
|
|
|
|
|
if (power < 3) {
|
|
|
|
|
layer.msg('对不起,您权限不足!');
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
layer.confirm('确定导出管理员数据吗?',function (index) {
|
|
|
|
|
location.href="${pageContext.request.contextPath}/exportAdminInfo";
|
|
|
|
|
layer.close(index);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|
|
|
|
|
<!-- 使用JSTL的标签循环生成页码链接按钮,根据前面设置的起始页码(begin)和
|