|
|
|
|
@ -3,142 +3,176 @@
|
|
|
|
|
<%@page import="com.hua.entity.OptionalCourse"%>
|
|
|
|
|
<%@page import="java.util.Map"%>
|
|
|
|
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
|
|
|
|
|
pageEncoding="UTF-8"%>
|
|
|
|
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
|
|
|
|
pageEncoding="UTF-8"%>
|
|
|
|
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
|
|
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
|
|
|
<html>
|
|
|
|
|
<head>
|
|
|
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
|
|
|
<title>教务管理系统</title>
|
|
|
|
|
<!-- 设置页面的HTTP响应头中的内容类型为HTML,字符编码为UTF-8 -->
|
|
|
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
|
|
|
<title>教务管理系统</title>
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
<h1>${sessionScope.user.name },您好!</h1>
|
|
|
|
|
<!-- 从session作用域中获取名为"user"的对象的"name"属性值,并展示问候语。使用了EL表达式(Expression Language)来方便地获取session中的数据 -->
|
|
|
|
|
<h1>${sessionScope.user.name },您好!</h1>
|
|
|
|
|
<div>
|
|
|
|
|
<!-- 使用JSP脚本片段()将当前请求的URI路径存储到session的"path"属性中,可能用于后续记录页面来源、进行页面跳转等相关操作 -->
|
|
|
|
|
<%session.setAttribute("path", request.getRequestURI()); %>
|
|
|
|
|
<!-- 创建一个超链接,点击可跳转到修改密码页面。链接的路径通过获取当前应用的上下文路径(request.getContextPath())与具体的JSP页面路径(/modify/modifypassword.jsp)拼接而成 -->
|
|
|
|
|
<a href="<%=request.getContextPath()%>/modify/modifypassword.jsp">修改密码</a>
|
|
|
|
|
<!-- 创建一个超链接,点击可触发注销操作,具体的注销逻辑应该在对应的Servlet中实现,此处只是链接到相应的Servlet路径(/logoutServlet) -->
|
|
|
|
|
<a href="<%=request.getContextPath()%>/logoutServlet">注销</a>
|
|
|
|
|
<br><br>
|
|
|
|
|
<!-- 创建一个超链接,点击可返回上一步,跳转到指定的JSP页面(/acdemic_dean/acdemic_dean.jsp),同样是通过应用上下文路径与具体页面路径拼接来确定目标地址 -->
|
|
|
|
|
<a href="<%=request.getContextPath() %>/acdemic_dean/acdemic_dean.jsp">返回上一步</a>
|
|
|
|
|
</div>
|
|
|
|
|
<!-- 创建一个表单,用于提交查询选修课程相关信息的请求。表单的action属性指定了提交的目标地址(通过应用上下文路径与/optStudent.List拼接),提交方式为POST -->
|
|
|
|
|
<form action="<%=request.getContextPath()%>/optStudent.List" method="post">
|
|
|
|
|
<!-- 创建一个表格,用于在表单中布局各个查询条件的输入项和选择项,使页面布局更规整 -->
|
|
|
|
|
<table>
|
|
|
|
|
<!-- 表格中的一行,用于显示和选择学年学期的查询条件 -->
|
|
|
|
|
<tr>
|
|
|
|
|
<td>学年学期:</td>
|
|
|
|
|
<td>
|
|
|
|
|
<!-- 创建一个下拉选择框,用于选择学年学期,name属性设置为"yearTerm",这样在表单提交时,所选的值会以该名称作为参数名传递给后端 -->
|
|
|
|
|
<select name="yearTerm">
|
|
|
|
|
<!-- 一个空的选项,默认情况下显示为空,方便用户进行选择操作 -->
|
|
|
|
|
<option value=""></option>
|
|
|
|
|
<option value="2017秋季">2017秋季</option>
|
|
|
|
|
<option value="2017春季">2017春季</option>
|
|
|
|
|
<option value="2016秋季">2016秋季</option>
|
|
|
|
|
<option value="2016春季">2016春季</option>
|
|
|
|
|
</select>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<!-- 表格中的一行,用于显示和选择学院的查询条件 -->
|
|
|
|
|
<tr>
|
|
|
|
|
<td>学院:</td>
|
|
|
|
|
<td>
|
|
|
|
|
<!-- 创建一个下拉选择框,用于选择学院,name属性为"academy",用于在表单提交时传递所选学院的值给后端 -->
|
|
|
|
|
<select name="academy">
|
|
|
|
|
<option value=""></option>
|
|
|
|
|
<option value="自动化学院">自动化学院</option>
|
|
|
|
|
<option value="物理学院">物理学院</option>
|
|
|
|
|
<option value="电子信息学院">电子信息学院</option>
|
|
|
|
|
<option value="计算机学院">计算机学院</option>
|
|
|
|
|
</select>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<!-- 表格中的一行,用于显示和选择专业的查询条件 -->
|
|
|
|
|
<tr>
|
|
|
|
|
<td>专业:</td>
|
|
|
|
|
<td>
|
|
|
|
|
<!-- 创建一个下拉选择框,用于选择专业,name属性为"profession",在表单提交时将所选专业的值传递给后端 -->
|
|
|
|
|
<select name="profession">
|
|
|
|
|
<option value=""></option>
|
|
|
|
|
<option value="自动化">自动化</option>
|
|
|
|
|
<option value="应用物理">应用物理</option>
|
|
|
|
|
<option value="电子信息工程">电子信息工程</option>
|
|
|
|
|
<option value="计算机科学与技术">计算机科学与技术</option>
|
|
|
|
|
</select>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<!-- 表格中的一行,用于显示和选择班级的查询条件 -->
|
|
|
|
|
<tr>
|
|
|
|
|
<td>班级:</td>
|
|
|
|
|
<td>
|
|
|
|
|
<!-- 创建一个下拉选择框,用于选择班级,name属性为"className",用于在表单提交时向后端传递所选班级的值 -->
|
|
|
|
|
<select name="className">
|
|
|
|
|
<option value=""></option>
|
|
|
|
|
<option value="电子15(1)">电子15(1)</option>
|
|
|
|
|
<option value="电子15(2)">电子15(2)</option>
|
|
|
|
|
<option value="计算机14(1)">计算机14(1)</option>
|
|
|
|
|
<option value="计算机14(2)">计算机14(2)</option>
|
|
|
|
|
</select>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<!-- 表格中的一行,用于输入学号的查询条件,使用文本输入框,name属性为"studentId",用户输入的值将以此名称作为参数传递给后端 -->
|
|
|
|
|
<tr>
|
|
|
|
|
<td>学号:</td>
|
|
|
|
|
<td><input type="text" name="studentId"/></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<!-- 表格中的一行,用于输入学生姓名的查询条件,同样是文本输入框,name属性为"studentName",输入的值会传递给后端 -->
|
|
|
|
|
<tr>
|
|
|
|
|
<td>学生姓名:</td>
|
|
|
|
|
<td><input type="text" name="studentName"/></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<!-- 表格中的一行,放置一个提交按钮,按钮上显示的文字为"查询",点击该按钮时,会将表单中的数据按照设定的方式(POST)提交到指定的action地址(即/optStudent.List对应的处理逻辑) -->
|
|
|
|
|
<tr>
|
|
|
|
|
<td><input type="submit" value="查询"/></td>
|
|
|
|
|
</tr>
|
|
|
|
|
</table>
|
|
|
|
|
</form>
|
|
|
|
|
<!-- 使用JSTL的标签进行条件判断,如果session作用域中的"map"属性不为null(意味着后端已经将选修课程相关的查询结果存入了该属性中),则执行以下代码块 -->
|
|
|
|
|
<c:if test="${sessionScope.map!= null }">
|
|
|
|
|
<!-- 创建一个div容器,用于包裹下面的表格,起到一定的页面布局作用,方便对展示的内容进行整体的样式设置等操作 -->
|
|
|
|
|
<div>
|
|
|
|
|
<%session.setAttribute("path", request.getRequestURI()); %>
|
|
|
|
|
<a href="<%=request.getContextPath()%>/modify/modifypassword.jsp">修改密码</a>
|
|
|
|
|
<a href="<%=request.getContextPath()%>/logoutServlet">注销</a>
|
|
|
|
|
<br><br>
|
|
|
|
|
<a href="<%=request.getContextPath() %>/acdemic_dean/acdemic_dean.jsp">返回上一步</a>
|
|
|
|
|
</div>
|
|
|
|
|
<form action="<%=request.getContextPath()%>/optStudent.List" method="post">
|
|
|
|
|
|
|
|
|
|
<table>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>学年学期:</td>
|
|
|
|
|
<td>
|
|
|
|
|
<select name="yearTerm">
|
|
|
|
|
<option value=""></option>
|
|
|
|
|
<option value="2017秋季">2017秋季</option>
|
|
|
|
|
<option value="2017春季">2017春季</option>
|
|
|
|
|
<option value="2016秋季">2016秋季</option>
|
|
|
|
|
<option value="2016春季">2016春季</option>
|
|
|
|
|
</select>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>学院:</td>
|
|
|
|
|
<td>
|
|
|
|
|
<select name="academy">
|
|
|
|
|
<option value=""></option>
|
|
|
|
|
<option value="自动化学院">自动化学院</option>
|
|
|
|
|
<option value="物理学院">物理学院</option>
|
|
|
|
|
<option value="电子信息学院">电子信息学院</option>
|
|
|
|
|
<option value="计算机学院">计算机学院</option>
|
|
|
|
|
</select>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>专业:</td>
|
|
|
|
|
<td>
|
|
|
|
|
<select name="profession">
|
|
|
|
|
<option value=""></option>
|
|
|
|
|
<option value="自动化">自动化</option>
|
|
|
|
|
<option value="应用物理">应用物理</option>
|
|
|
|
|
<option value="电子信息工程">电子信息工程</option>
|
|
|
|
|
<option value="计算机科学与技术">计算机科学与技术</option>
|
|
|
|
|
</select>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>班级:</td>
|
|
|
|
|
<td>
|
|
|
|
|
<select name="className">
|
|
|
|
|
<option value=""></option>
|
|
|
|
|
<option value="电子15(1)">电子15(1)</option>
|
|
|
|
|
<option value="电子15(2)">电子15(2)</option>
|
|
|
|
|
<option value="计算机14(1)">计算机14(1)</option>
|
|
|
|
|
<option value="计算机14(2)">计算机14(2)</option>
|
|
|
|
|
</select>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<!-- 创建一个带有边框(border="1")、单元格边距(cellpadding="0")和单元格间距(cellspacing="0")设置的表格,用于展示选修课程的详细信息 -->
|
|
|
|
|
<table border="1" cellpadding="0" cellspacing="0">
|
|
|
|
|
<!-- 表格的表头行,定义了各个列显示的标题内容,用于清晰展示选修课程信息的各个字段 -->
|
|
|
|
|
<tr>
|
|
|
|
|
<td>学号:</td>
|
|
|
|
|
<td><input type="text" name="studentId"/></td>
|
|
|
|
|
<th>学年学期</th>
|
|
|
|
|
<th>学号</th>
|
|
|
|
|
<th>学生姓名</th>
|
|
|
|
|
<th>学院</th>
|
|
|
|
|
<th>专业</th>
|
|
|
|
|
<th>班级</th>
|
|
|
|
|
<th>课程编号</th>
|
|
|
|
|
<th>课程名称</th>
|
|
|
|
|
<th>学分</th>
|
|
|
|
|
<th>课程类型</th>
|
|
|
|
|
<th>任课老师</th>
|
|
|
|
|
<th>上课方式</th>
|
|
|
|
|
<th>上课时间</th>
|
|
|
|
|
<th></th>
|
|
|
|
|
</tr>
|
|
|
|
|
<!-- 以下是JSP脚本片段,用于从session作用域中获取名为"map"的属性值,并将其转换为特定的类型(Map<StudentBasicInformation, List<OptionalCourse>>),同时移除session中的"map"属性,可能是为了避免数据重复使用或者释放内存等考虑 -->
|
|
|
|
|
<%
|
|
|
|
|
Map<StudentBasicInformation, List<OptionalCourse>> map =
|
|
|
|
|
(Map<StudentBasicInformation, List<OptionalCourse>>)session.getAttribute("map");
|
|
|
|
|
session.removeAttribute("map");
|
|
|
|
|
%>
|
|
|
|
|
<!-- 以下是嵌套的循环代码块,外层循环遍历前面获取到的"map"中的键值对(每个键值对表示一个学生对应的选修课程列表信息),内层循环遍历每个学生对应的选修课程列表,用于逐行展示选修课程的详细信息 -->
|
|
|
|
|
<%
|
|
|
|
|
for(Map.Entry<StudentBasicInformation, List<OptionalCourse>> entry : map.entrySet()){
|
|
|
|
|
StudentBasicInformation stu = entry.getKey();
|
|
|
|
|
List<OptionalCourse> optionalCourses = entry.getValue();
|
|
|
|
|
for(OptionalCourse optionalCourse : optionalCourses){
|
|
|
|
|
%>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>学生姓名:</td>
|
|
|
|
|
<td><input type="text" name="studentName"/></td>
|
|
|
|
|
<!-- 在表格的单元格中展示选修课程的学年学期信息,通过Java代码获取选修课程对象(optionalCourse)中的学年学期属性值并输出显示 -->
|
|
|
|
|
<td><%= optionalCourse.getYearTerm() %></td>
|
|
|
|
|
<!-- 在表格的单元格中展示学生的学号信息,通过Java代码获取学生对象(stu)中的学号属性值并输出显示 -->
|
|
|
|
|
<td><%= stu.getStudentId() %></td>
|
|
|
|
|
<!-- 在表格的单元格中展示学生的姓名信息,通过Java代码获取学生对象(stu)中的姓名属性值并输出显示 -->
|
|
|
|
|
<td><%= stu.getStudentName() %></td>
|
|
|
|
|
<!-- 在表格的单元格中展示学生所在学院信息,通过Java代码获取学生对象(stu)中的学院属性值并输出显示 -->
|
|
|
|
|
<td><%= stu.getAcademy() %></td>
|
|
|
|
|
<!-- 在表格的单元格中展示学生的专业信息,通过Java代码获取学生对象(stu)中的专业属性值并输出显示 -->
|
|
|
|
|
<td><%= stu.getProfession() %></td>
|
|
|
|
|
<!-- 在表格的单元格中展示学生所在班级信息,通过Java代码获取学生对象(stu)中的班级属性值并输出显示 -->
|
|
|
|
|
<td><%= stu.getClassName() %></td>
|
|
|
|
|
<!-- 在表格的单元格中展示选修课程的编号信息,通过Java代码获取选修课程对象(optionalCourse)中的课程编号属性值并输出显示 -->
|
|
|
|
|
<td><%= optionalCourse.getCourseId() %></td>
|
|
|
|
|
<!-- 在表格的单元格中展示选修课程的名称信息,通过Java代码获取选修课程对象(optionalCourse)中的课程名称属性值并输出显示 -->
|
|
|
|
|
<td><%= optionalCourse.getCourseName() %></td>
|
|
|
|
|
<!-- 在表格的单元格中展示选修课程的学分信息,通过Java代码获取选修课程对象(optionalCourse)中的学分属性值并输出显示 -->
|
|
|
|
|
<td><%= optionalCourse.getCredit() %></td>
|
|
|
|
|
<!-- 在表格的单元格中展示选修课程的类型信息,通过Java代码获取选修课程对象(optionalCourse)中的课程类型属性值并输出显示 -->
|
|
|
|
|
<td><%= optionalCourse.getCourseType() %></td>
|
|
|
|
|
<!-- 在表格的单元格中展示选修课程的任课老师信息,通过Java代码获取选修课程对象(optionalCourse)中的任课老师属性值并输出显示 -->
|
|
|
|
|
<td><%= optionalCourse.getTeacher() %></td>
|
|
|
|
|
<!-- 在表格的单元格中展示选修课程的上课方式信息,通过Java代码获取选修课程对象(optionalCourse)中的上课方式属性值并输出显示 -->
|
|
|
|
|
<td><%= optionalCourse.getClassWay() %></td>
|
|
|
|
|
<!-- 在表格的单元格中展示选修课程的上课时间信息,通过Java代码获取选修课程对象(optionalCourse)中的上课时间属性值并输出显示 -->
|
|
|
|
|
<td><%= optionalCourse.getClassTime() %></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><input type="submit" value="查询"/></td>
|
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
|
|
<%
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
%>
|
|
|
|
|
</table>
|
|
|
|
|
|
|
|
|
|
</form>
|
|
|
|
|
<c:if test="${sessionScope.map != null }">
|
|
|
|
|
<div>
|
|
|
|
|
<table border="1" cellpadding="0" cellspacing="0">
|
|
|
|
|
<tr>
|
|
|
|
|
<th>学年学期</th>
|
|
|
|
|
<th>学号</th>
|
|
|
|
|
<th>学生姓名</th>
|
|
|
|
|
<th>学院</th>
|
|
|
|
|
<th>专业</th>
|
|
|
|
|
<th>班级</th>
|
|
|
|
|
<th>课程编号</th>
|
|
|
|
|
<th>课程名称</th>
|
|
|
|
|
<th>学分</th>
|
|
|
|
|
<th>课程类型</th>
|
|
|
|
|
<th>任课老师</th>
|
|
|
|
|
<th>上课方式</th>
|
|
|
|
|
<th>上课时间</th>
|
|
|
|
|
<th></th>
|
|
|
|
|
</tr>
|
|
|
|
|
<%
|
|
|
|
|
Map<StudentBasicInformation,List<OptionalCourse>> map =
|
|
|
|
|
(Map<StudentBasicInformation,List<OptionalCourse>>)session.getAttribute("map");
|
|
|
|
|
session.removeAttribute("map");
|
|
|
|
|
%>
|
|
|
|
|
<%
|
|
|
|
|
for(Map.Entry<StudentBasicInformation,List<OptionalCourse>> entry : map.entrySet()){
|
|
|
|
|
StudentBasicInformation stu = entry.getKey();
|
|
|
|
|
List<OptionalCourse> optionalCourses = entry.getValue();
|
|
|
|
|
for(OptionalCourse optionalCourse : optionalCourses){
|
|
|
|
|
|
|
|
|
|
%>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><%= optionalCourse.getYearTerm() %></td>
|
|
|
|
|
<td><%= stu.getStudentId() %></td>
|
|
|
|
|
<td><%= stu.getStudentName() %></td>
|
|
|
|
|
<td><%= stu.getAcademy() %></td>
|
|
|
|
|
<td><%= stu.getProfession() %></td>
|
|
|
|
|
<td><%= stu.getClassName() %></td>
|
|
|
|
|
<td><%= optionalCourse.getCourseId() %></td>
|
|
|
|
|
<td><%= optionalCourse.getCourseName() %></td>
|
|
|
|
|
<td><%= optionalCourse.getCredit() %></td>
|
|
|
|
|
<td><%= optionalCourse.getCourseType() %></td>
|
|
|
|
|
<td><%= optionalCourse.getTeacher() %></td>
|
|
|
|
|
<td><%= optionalCourse.getClassWay() %></td>
|
|
|
|
|
<td><%= optionalCourse.getClassTime() %></td>
|
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
|
|
<%
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
%>
|
|
|
|
|
</table>
|
|
|
|
|
</div>
|
|
|
|
|
</c:if>
|
|
|
|
|
</div>
|
|
|
|
|
</c:if>
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|