You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

146 lines
13 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
// 获取当前项目的上下文路径,例如在部署到服务器后,可能是项目名称对应的路径部分,后续用于构建完整的资源访问路径等。
String path = request.getContextPath();
// 构建项目的基础路径包括协议如http或https、服务器名称、服务器端口以及上下文路径用于准确地定位项目中的各种资源比如样式表、脚本文件、图片等资源的引用地址都会基于这个基础路径来构建。
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<!DOCTYPE html>
<html>
<head>
<!-- 设置页面的字符编码为utf-8确保能正确显示各种字符 -->
<meta charset="utf-8">
<!-- 定义页面的渲染引擎模式这里指定了webkit适用于Chrome、Safari等浏览器、ie-comp兼容IE的某些模式、ie-stand标准IE模式等多种模式以提高页面在不同浏览器上的兼容性 -->
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<!-- 强制让页面以IE的最高版本模式或者Chrome浏览器的模式渲染避免在IE中出现兼容性问题 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<!-- 设置页面的视口viewport相关属性规定页面宽度等于设备宽度初始缩放比例、最小缩放比例、最大缩放比例都设为1.0,禁止用户手动缩放页面,以实现页面在移动设备上较好的展示效果 -->
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<!-- 禁止浏览器对页面进行缓存,每次访问都重新获取页面内容,常用于页面内容经常更新的情况 -->
<meta http-equiv="Cache-Control" content="no-siteapp" />
<!-- 条件注释当浏览器版本小于IE9时引入html5shiv.js和respond.min.js脚本文件这两个文件用于让低版本IE浏览器IE8及以下支持HTML5标签和CSS3的媒体查询特性 -->
<if lt IE 9>
<script type="text/javascript" src="lib/html5shiv.js"></script>
<script type="text/javascript" src="lib/respond.min.js"></script>
<![endif]>
<!-- 引入H-ui框架的核心样式表文件用于构建页面的基本样式布局 -->
<link rel="stylesheet" type="text/css" href="<%=basePath%>static/h-ui/css/H-ui.min.css" />
<!-- 引入H-ui.admin框架的样式表文件通常用于后台管理系统的页面样式定制包含了更多与管理界面相关的样式设置 -->
<link rel="stylesheet" type="text/css" href="<%=basePath%>static/h-ui.admin/css/H-ui.admin.css" />
<!-- 引入Hui-iconfont图标字体库的样式表文件用于在页面中使用相应的图标字体来展示各种图标提高页面的可视化效果 -->
<link rel="stylesheet" type="text/css" href="<%=basePath%>lib/Hui-iconfont/1.0.8/iconfont.css" />
<!-- 引入H-ui.admin框架的默认皮肤样式表文件用于设置页面的皮肤风格这里可以根据需要切换不同的皮肤样式id为"skin"方便后续通过JavaScript等方式动态切换皮肤 -->
<link rel="stylesheet" type="text/css" href="<%=basePath%>static/h-ui.admin/skin/default/skin.css" id="skin" />
<!-- 引入H-ui.admin框架的额外样式表文件可能包含一些自定义的样式规则用于进一步调整页面的外观显示 -->
<link rel="stylesheet" type="text/css" href="<%=basePath%>static/h-ui.admin/css/style.css" />
<!-- 条件注释当浏览器版本为IE6时引入DD_belatedPNG_0.0.8a-min.js脚本文件并执行相关函数来修复IE6下的PNG图片透明等显示问题 -->
<if IE 6>
<script type="text/javascript" src="lib/DD_belatedPNG_0.0.8a-min.js" ></script>
<script>DD_belatedPNG.fix('*');</script>
<![endif]>
<title>车次列表</title>
</head>
<body>
<!-- 使用nav标签创建一个面包屑导航栏用于显示当前页面在整个网站结构中的位置路径方便用户进行页面导航 -->
<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页 <span class="c-gray en">&gt;</span> 车次管理 <span class="c-gray en">&gt;</span> 车次列表 <a class="btn btn-success radius r" style="line-height:1.6em;margin-top:3px" href="javascript:location.replace(location.href);" title="刷新" ><i class="Hui-iconfont">&#xe68f;</i></a></nav>
<!-- 创建一个页面容器page-container通常用于将页面内容进行分组和布局方便样式设置和整体管理 -->
<div class="page-container">
<!-- 创建一个包含多个类名的div用于设置布局样式cl类可能用于控制列相关布局pd-5可能设置内边距为5bg-1和bk-gray可能用于设置背景颜色等样式mt-20设置上边距为20px -->
<div class="cl pd-5 bg-1 bk-gray mt-20">
<!-- 创建一个左侧的span元素用于放置添加车次的按钮 -->
<span class="l">
<!-- 创建一个按钮a标签模拟按钮样式添加了多个类用于设置按钮的样式如btn btn-primary radius表示主要按钮、圆角样式等data-title属性可用于设置一些提示信息比如在弹出框等场景显示data-href和href属性都指向添加车次的JSP页面地址通过basePath构建完整路径点击该按钮可跳转到添加车次页面 -->
<a class="btn btn-primary radius" data-title="添加车次" data-href="<%=basePath%>pages/admin/right/addTrain.jsp" href="<%=basePath%>pages/admin/right/addTrain.jsp"><i class="Hui-iconfont">&#xe600;</i> 添加车次</a>
</span>
<!-- 创建一个右侧的span元素用于显示数据总数信息 -->
<span class="r">共有数据:<strong>${trainList.size()}</strong> 条</span>
</div>
<!-- 创建一个距离顶部20px的div用于放置车次列表表格 -->
<div class="mt-20">
<!-- 创建一个HTML表格table并添加了多个类用于设置表格的样式如表格有边框、边框样式、背景颜色、鼠标悬停效果、可排序以及响应式布局等特性 -->
<table class="table table-border table-bordered table-bg table-hover table-sort table-responsive">
<!-- 创建表头thead部分用于定义表格每列的标题 -->
<thead>
<tr class="text-c">
<!-- 定义表格列设置列宽为80px用于显示序号 -->
<th width="80">序号</th>
<!-- 定义表格列设置列宽为80px用于显示车次信息 -->
<th width="80">车次</th>
<!-- 定义表格列设置列宽为80px用于显示起始站信息 -->
<th width="80">起始站</th>
<!-- 定义表格列设置列宽为80px用于显示终点站信息 -->
<th width="80">终点站</th>
<!-- 定义表格列设置列宽为120px用于显示开车时间信息 -->
<th width="120">开车时间</th>
<!-- 定义表格列设置列宽为120px用于显示到达时间信息 -->
<th width="120">到达时间</th>
<!-- 定义表格列设置列宽为60px用于显示票价信息 -->
<th width="60">票价</th>
<!-- 定义表格列设置列宽为60px用于显示剩余座位数信息 -->
<th width="60">剩余座位数</th>
<!-- 定义表格列设置列宽为120px用于显示操作按钮如编辑、删除等 -->
<th width="120">操作</th>
</tr>
</thead>
<!-- 创建表体tbody部分用于填充表格的具体数据行 -->
<tbody>
<!-- 使用JSTL的forEach标签循环遍历名为trainList的集合可能是从后台传递过来的车次信息列表每次循环将当前元素赋值给allTrain变量同时通过varStatus获取循环状态如当前索引等信息 -->
<c:forEach items="${trainList}" var="allTrain" varStatus="status">
<tr class="text-c">
<!-- 在表格单元格中显示当前行的序号序号通过循环状态的索引从0开始加1来计算 -->
<td>${status.index + 1}</td>
<!-- 在表格单元格中显示当前车次的车次编号通过从allTrain对象中获取trainNumber属性值来显示 -->
<td>${allTrain.trainNumber}</td>
<td>${allTrain.startStation}</td>
<td>${allTrain.endStation}</td>
<td>${allTrain.startTime}</td>
<td>${allTrain.endTime}</td>
<td>${allTrain.price}</td>
<td>${allTrain.seatNumber}</td>
<td class="f-14 td-manage">
<!-- 创建一个编辑操作的链接a标签设置无文本装饰样式添加了左侧外边距ml-5用于间隔href属性指向编辑车次的Servlet地址通过传递当前车次的trainId作为参数title属性设置鼠标悬停时的提示信息为"编辑"内部通过图标字体Hui-iconfont显示编辑图标 -->
<a style="text-decoration:none" class="ml-5" href="<%=basePath%>UpdateTrainServlet?trainId=${allTrain.trainId}" title="编辑"><i class="Hui-iconfont">&#xe6df;</i></a>
<!-- 创建一个删除操作的链接a标签同样设置无文本装饰样式和左侧外边距href属性指向删除车次的Servlet地址传递当前车次的trainId作为参数title属性设置鼠标悬停时的提示信息为"删除",内部通过图标字体显示删除图标 -->
<a style="text-decoration:none" class="ml-5" href="<%=basePath%>DeleteTrainServlet?trainId=${allTrain.trainId}" title="删除"><i class="Hui-iconfont">&#xe6e2;</i></a>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</div>
<!--_footer 作为公共模版分离出去-->
<script type="text/javascript" src="<%=basePath%>lib/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="<%=basePath%>lib/layer/2.4/layer.js"></script>
<script type="text/javascript" src="<%=basePath%>static/h-ui/js/H-ui.min.js"></script>
<script type="text/javascript" src="<%=basePath%>static/h-ui.admin/js/H-ui.admin.js"></script> <!--/_footer 作为公共模版分离出去-->
<!--请在下方写此页面业务相关的脚本这里预留了位置方便添加与该页面特定业务逻辑相关的JavaScript代码比如对表格的进一步操作、数据交互等功能的代码 -->
<script type="text/javascript" src="<%=basePath%>lib/My97DatePicker/4.8/WdatePicker.js"></script>
<script type="text/javascript" src="<%=basePath%>lib/datatables/1.10.0/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="<%=basePath%>lib/laypage/1.2/laypage.js"></script>
<script type="text/javascript">
// 使用jQuery选择器选中类名为table-sort的表格元素并调用dataTable方法将其初始化为一个具有排序、状态保存等功能的DataTable表格。
$('.table-sort').dataTable({
// 设置默认的排序方式按照第一列索引为0进行升序asc排序即表格加载时会自动按照第一列的值从小到大排序。
"aaSorting": [[0, "asc"]],
// 设置是否保存表格的状态如排序状态、分页状态等设置为true表示会保存这些状态下次访问页面时会恢复上次的状态。
"bStateSave": true,
// 这里可能是拼写错误,正确的应该是"paging"用于设置是否显示分页功能若设为false则不显示分页表格会一次性展示所有数据如果数据量较多可能会影响页面性能和展示效果
"pading": false,
// 通过aoColumnDefs配置列的相关属性这里设置了第八列索引为8对应操作列不参与排序即用户点击该列标题时不会触发排序操作。
"aoColumnDefs": [
// {"bVisible": false, "aTargets": [ 3 ]} //控制列的隐藏显示,这行代码被注释掉了,如果取消注释可以用于隐藏指定的列(这里原本可能是想隐藏第四列,可根据实际需求调整)。
{"orderable": false, "aTargets": [8]}
]
});
</script>
</body>
</html>