wyy 1 year ago
parent 602c093b90
commit b5efd6960d

@ -10,7 +10,11 @@ import java.sql.Statement;
import java.util.Properties;
/**
<<<<<<< HEAD
* Druid,dao
=======
* Druid,dao--
>>>>>>> remotes/origin/develop
*/
public class JDBCUtils {
private static DataSource dataSource; //定义成员变量DataSource

@ -15,57 +15,212 @@ import java.util.Date;
@WebServlet("/addStudentInfoServlet")
public class AddStudentInfoServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置请求编码
request.setCharacterEncoding("utf-8");
//创建学生服务对象
StudentService service= new StudentServiceImpl();
//先进行判断是否已存在该学生
String sid = request.getParameter("student-id");
// 创建一个Student对象
Student s = new Student();
// 设置学生ID
s.setS_id(sid);
// 根据学生ID查找学生
Student newStudent = service.findStudentById(s);
// 如果找到了该学生
if (newStudent != null) {
// 设置更新消息
request.setAttribute("update_msg","已存在该学生,请重新添加!"+String.format("%tT",new Date()));
// 转发到addStudentServlet
request.getRequestDispatcher("addStudentServlet").forward(request, response);
}else {
// 获取学生姓名
String name = request.getParameter("student-name");
// 获取学生性别
String sex = request.getParameter("student-sex");
// 获取学生年龄
String age = request.getParameter("student-age");
// 获取学生电话
String phone = request.getParameter("student-phone");
// 获取学生邮箱
String email = request.getParameter("student-email");
// 获取学生地址
String address = request.getParameter("student-address");
// 获取学生所在学院
String college = request.getParameter("selectCollege");
// 获取学生所在系
String department = request.getParameter("selectDepartment");
// 获取学生所在班级
// 获取请求参数selectClass的值
String cclass = request.getParameter("selectClass");
// 如果college参数为空则将其赋值为"待分配"
if ("".equals(college)) {
college = "待分配";
}
// 如果department参数为空则将其赋值为"待分配"
if ("".equals(department)) {
department = "待分配";
}
// 如果cclass参数为空则将其赋值为"待分配"
// 如果cclass为空则将其设置为"待分配"
if ("".equals(cclass)) {
cclass = "待分配";
}
// 创建一个Student对象
Student updateStudent = new Student();
// 设置Student对象的属性
// 设置学生ID
updateStudent.setS_id(sid);
// 设置学生姓名
updateStudent.setS_name(name);
// 设置学生性别
updateStudent.setS_sex(sex);
// 设置学生年龄
updateStudent.setS_age(age);
// 设置学生电话
updateStudent.setS_phone(phone);
// 设置学生邮箱
updateStudent.setS_email(email);
// 设置学生地址
updateStudent.setS_address(address);
// 设置学生学院
updateStudent.setS_college(college);
// 设置学生系别
updateStudent.setS_department(department);
// 设置学生班级
updateStudent.setS_class(cclass);
//protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//调用service层的方法添加学生信息
service.addStudentAllInfo(updateStudent);
<<<<<<< HEAD
request.setAttribute("update_msg","添加成功!"+String.format("%tT",new Date()));
=======
//将添加信息返回给客户端
request.setAttribute("update_msg","添加成功!"+String.format("%tT",new Date()));//返回添加信息
//将请求转发到addStudentServlet
>>>>>>> remotes/origin/develop
request.getRequestDispatcher("addStudentServlet").forward(request, response);
}
}
//处理get请求
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//调用doPost方法
doPost(request,response);
}
}
//package web.servlet.admin;
//
//import domain.Student;
//import service.StudentService;
//import service.impl.StudentServiceImpl;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//import java.util.Date;
//
//@WebServlet("/addStudentInfoServlet")
//public class AddStudentInfoServlet extends HttpServlet {
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// //设置请求编码
// request.setCharacterEncoding("utf-8");
// //创建学生服务对象
// StudentService service= new StudentServiceImpl();
// //先进行判断是否已存在该学生-
// String sid = request.getParameter("student-id");
// // 创建一个Student对象
// Student s = new Student();
// // 设置学生ID
// s.setS_id(sid);
// // 根据学生ID查找学生
// Student newStudent = service.findStudentById(s);
// // 如果找到了该学生
// if (newStudent != null) {
// // 设置更新消息
// request.setAttribute("update_msg","已存在该学生,请重新添加!"+String.format("%tT",new Date()));
// // 转发到addStudentServlet
// request.getRequestDispatcher("addStudentServlet").forward(request, response);
// }else {
// // 获取学生姓名
// String name = request.getParameter("student-name");
// // 获取学生性别
// String sex = request.getParameter("student-sex");
// // 获取学生年龄
// String age = request.getParameter("student-age");
// // 获取学生电话
// String phone = request.getParameter("student-phone");
// // 获取学生邮箱
// String email = request.getParameter("student-email");
// // 获取学生地址
// String address = request.getParameter("student-address");
// // 获取学生所在学院
// String college = request.getParameter("selectCollege");
// // 获取学生所在系
// String department = request.getParameter("selectDepartment");
// // 获取学生所在班级
// // 获取请求参数selectClass的值
// String cclass = request.getParameter("selectClass");
// // 如果college参数为空则将其赋值为"待分配"
// if ("".equals(college)) {
// college = "待分配";
// }
// // 如果department参数为空则将其赋值为"待分配"
// if ("".equals(department)) {
// department = "待分配";
// }
// // 如果cclass参数为空则将其赋值为"待分配"
// // 如果cclass为空则将其设置为"待分配"
// if ("".equals(cclass)) {
// cclass = "待分配";
// }
//
// // 创建一个Student对象
// Student updateStudent = new Student();
//
// // 设置Student对象的属性
// // 设置学生ID
// updateStudent.setS_id(sid);
// // 设置学生姓名
// updateStudent.setS_name(name);
// // 设置学生性别
// updateStudent.setS_sex(sex);
// // 设置学生年龄
// updateStudent.setS_age(age);
// // 设置学生电话
// updateStudent.setS_phone(phone);
// // 设置学生邮箱
// updateStudent.setS_email(email);
// // 设置学生地址
// updateStudent.setS_address(address);
// // 设置学生学院
// updateStudent.setS_college(college);
// // 设置学生系别
// updateStudent.setS_department(department);
// // 设置学生班级
// updateStudent.setS_class(cclass);
//
////protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// //调用service层的方法添加学生信息
// service.addStudentAllInfo(updateStudent);
// //将添加信息返回给客户端
// request.setAttribute("update_msg","添加成功!"+String.format("%tT",new Date()));//返回添加信息
// //将请求转发到addStudentServlet
// request.getRequestDispatcher("addStudentServlet").forward(request, response);
//
// }
// }
//
// //处理get请求
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// //调用doPost方法
// doPost(request,response);
// }
//}

@ -22,15 +22,26 @@ public class AddStudentServlet extends HttpServlet {
request.setCharacterEncoding("utf-8");
HttpSession session = request.getSession();
<<<<<<< HEAD
=======
// 创建CDCService的实例通常用于处理与学院、系、班级相关的业务逻辑
// 创建CDCService的实现类
>>>>>>> remotes/origin/develop
CDCService service2 = new CDCServiceImpl();
// 调用findAllCollege方法获取所有学院列表
List<CDC> collegeList = service2.findAllCollege();
// 调用findAllDepartment方法获取所有部门列表
List<CDC> departmentList = service2.findAllDepartment();
// 调用findAllClass方法获取所有班级列表
// 获取所有班级信息
List<CDC> classList = service2.findAllClass();
// 将学院列表、系列表、班级列表存入session中
session.setAttribute("collegeLists",collegeList);
session.setAttribute("departmentLists",departmentList);
session.setAttribute("classLists",classList);
// 转发到添加学生页面
request.getRequestDispatcher("/WEB-INF/admin/addStudent.jsp").forward(request,response);
}
@ -38,3 +49,55 @@ public class AddStudentServlet extends HttpServlet {
doPost(request,response);
}
}
//package web.servlet.admin;
//
//import domain.CDC;
//import domain.Student;
//import service.CDCService;
//import service.StudentService;
//import service.impl.CDCServiceImpl;
//import service.impl.StudentServiceImpl;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//import java.io.IOException;
//import java.util.List;
//
///**
// * 添加学生的Servlet处理类
// */
//@WebServlet("/addStudentServlet")
//public class AddStudentServlet extends HttpServlet {
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// // 设置请求编码为UTF-8以支持中文字符的正确处理
// request.setCharacterEncoding("utf-8");
// HttpSession session = request.getSession();
//
// // 创建CDCService的实例通常用于处理与学院、系、班级相关的业务逻辑
// // 创建CDCService的实现类
// CDCService service2 = new CDCServiceImpl();
// // 调用findAllCollege方法获取所有学院列表
// List<CDC> collegeList = service2.findAllCollege();
// // 调用findAllDepartment方法获取所有部门列表
// List<CDC> departmentList = service2.findAllDepartment();
// // 调用findAllClass方法获取所有班级列表
// // 获取所有班级信息
// List<CDC> classList = service2.findAllClass();
//
// // 将学院列表、系列表、班级列表存入session中
// session.setAttribute("collegeLists",collegeList);
// session.setAttribute("departmentLists",departmentList);
// session.setAttribute("classLists",classList);
//
// // 转发到添加学生页面
// request.getRequestDispatcher("/WEB-INF/admin/addStudent.jsp").forward(request,response);
// }
//
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost(request,response);
// }
//}

@ -17,3 +17,26 @@ public class AdminPasswordIndexServlet extends HttpServlet {
doPost(request,response);
}
}
//package web.servlet.admin;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//
//@WebServlet("/adminPasswordIndexServlet")
///*
// 管理员密码更新界面的Servlet处理类
// */
//public class AdminPasswordIndexServlet extends HttpServlet {
// // 将请求转发到管理员密码更新界面
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// request.getRequestDispatcher("/WEB-INF/admin/adminUpdatePassword.jsp").forward(request,response);
// }
//
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost(request,response);
// }
//}

@ -18,32 +18,51 @@ import java.util.Date;
@WebServlet("/adminPasswordUpdateServlet")
public class AdminPasswordUpdateServlet extends HttpServlet {
// 处理POST请求
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置请求编码为utf-8
request.setCharacterEncoding("utf-8");
// 获取当前会话
HttpSession session = request.getSession();
// 从会话中获取管理员对象
Admin admin= (Admin) session.getAttribute("admin");
// 获取管理员ID
String adminid = admin.getA_id();
// 获取新密码
String newpassword = request.getParameter("admin-newpassword");
// 获取确认新密码
String ennewpassword = request.getParameter("admin-ennewpassword");
// 定义正则表达式,用于验证密码格式
String regex = "^[\\w]{3,12}$";
// 判断新密码是否符合正则表达式
boolean flag = newpassword.matches(regex);
// 如果不符合,则设置错误信息,并跳转到更新密码页面
if (!flag) {
request.setAttribute("update_msg", "密码格式错误,重新提交!"+String.format("%tT",new Date()));
request.getRequestDispatcher("/WEB-INF/admin/adminUpdatePassword.jsp").forward(request, response);
// 如果新密码和确认密码不一致,则设置错误信息,并跳转到更新密码页面
} else if (!newpassword.equals(ennewpassword)) {
request.setAttribute("update_msg", "密码确认错误,请重新提交!" + String.format("%tT", new Date()));
request.getRequestDispatcher("/WEB-INF/admin/adminUpdatePassword.jsp").forward(request, response);
// 如果新密码和确认密码一致,则继续执行
} else {
// 创建AdminService实例
AdminService service= new AdminServiceImpl();
// 调用updatePassword方法更新密码
service.updatePassword(adminid,newpassword);
// 调用findAdminById方法根据adminid查找管理员信息
Admin newAdmin = service.findAdminById(admin);
// 将新的管理员信息赋值给admin
admin = newAdmin;
// 将新的管理员信息存入session中
session.setAttribute("admin",admin);
// 设置更新成功的信息
request.setAttribute("update_msg", "修改成功!" + String.format("%tT", new Date()));
// 转发到adminUpdatePassword.jsp页面
request.getRequestDispatcher("/WEB-INF/admin/adminUpdatePassword.jsp").forward(request, response);
}
@ -53,3 +72,79 @@ public class AdminPasswordUpdateServlet extends HttpServlet {
doPost(request,response);
}
}
//package web.servlet.admin;
//
//import domain.Admin;
//import domain.Student;
//import service.AdminService;
//import service.StudentService;
//import service.impl.AdminServiceImpl;
//import service.impl.StudentServiceImpl;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//import java.io.IOException;
//import java.util.Date;
///**
// * 管理员密码更新的Servlet处理类
// */
//@WebServlet("/adminPasswordUpdateServlet")
//public class AdminPasswordUpdateServlet extends HttpServlet {
// // 处理POST请求
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// // 设置请求编码为utf-8
// request.setCharacterEncoding("utf-8");
// // 获取当前会话
// HttpSession session = request.getSession();
// // 从会话中获取管理员对象
// Admin admin= (Admin) session.getAttribute("admin");
//
// // 获取管理员ID
// String adminid = admin.getA_id();
// // 获取新密码
// String newpassword = request.getParameter("admin-newpassword");
// // 获取确认新密码
// String ennewpassword = request.getParameter("admin-ennewpassword");
// // 定义正则表达式,用于验证密码格式
// String regex = "^[\\w]{3,12}$";
// // 判断新密码是否符合正则表达式
// boolean flag = newpassword.matches(regex);
// // 如果不符合,则设置错误信息,并跳转到更新密码页面
// if (!flag) {
// request.setAttribute("update_msg", "密码格式错误,重新提交!"+String.format("%tT",new Date()));
// request.getRequestDispatcher("/WEB-INF/admin/adminUpdatePassword.jsp").forward(request, response);
// // 如果新密码和确认密码不一致,则设置错误信息,并跳转到更新密码页面
// } else if (!newpassword.equals(ennewpassword)) {
// request.setAttribute("update_msg", "密码确认错误,请重新提交!" + String.format("%tT", new Date()));
// request.getRequestDispatcher("/WEB-INF/admin/adminUpdatePassword.jsp").forward(request, response);
// // 如果新密码和确认密码一致,则继续执行
// } else {
//
// // 创建AdminService实例
// AdminService service= new AdminServiceImpl();
// // 调用updatePassword方法更新密码
// service.updatePassword(adminid,newpassword);
//
// // 调用findAdminById方法根据adminid查找管理员信息
// Admin newAdmin = service.findAdminById(admin);
// // 将新的管理员信息赋值给admin
// admin = newAdmin;
// // 将新的管理员信息存入session中
// session.setAttribute("admin",admin);
//
// // 设置更新成功的信息
// request.setAttribute("update_msg", "修改成功!" + String.format("%tT", new Date()));
// // 转发到adminUpdatePassword.jsp页面
// request.getRequestDispatcher("/WEB-INF/admin/adminUpdatePassword.jsp").forward(request, response);
// }
//
// }
//
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost(request,response);
// }
//}

@ -16,12 +16,29 @@ import java.io.IOException;
@WebServlet("/doDeleteSelectCourseServlet")
public class DoDeleteSelectCourseServlet extends HttpServlet {
<<<<<<< HEAD
=======
/**
* POST
*
* @param request HTTP
* @param response HTTP
* @throws IOException
*/
// 处理POST请求
>>>>>>> remotes/origin/develop
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置请求编码为utf-8
request.setCharacterEncoding("utf-8");
// 获取当前会话
HttpSession session = request.getSession();
// 获取请求参数cid
String cid = request.getParameter("cid");
// 创建CourseService实例
CourseService service = new CourseServiceImpl();
// 根据cid删除课程
service.deleteServiceById(cid);
// 转发到studentOptionalCourseServlet
request.getRequestDispatcher("/studentOptionalCourseServlet").forward(request,response);
}
@ -29,3 +46,50 @@ public class DoDeleteSelectCourseServlet extends HttpServlet {
doPost(request,response);
}
}
//package web.servlet.admin;
//
//import domain.Course;
//import service.CourseService;
//import service.StudentService;
//import service.impl.CourseServiceImpl;
//import service.impl.StudentServiceImpl;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//import java.io.IOException;
///**
// * 处理学生选课删除请求的Servlet
// */
//@WebServlet("/doDeleteSelectCourseServlet")
//public class DoDeleteSelectCourseServlet extends HttpServlet {
// /**
// * 处理POST请求执行选课删除操作。
// *
// * @param request HTTP请求对象包含客户端发送的数据。
// * @param response HTTP响应对象用于生成返回给客户端的响应。
// * @throws IOException 如果输入或输出异常发生。
// */
// // 处理POST请求
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// // 设置请求编码为utf-8
// request.setCharacterEncoding("utf-8");
// // 获取当前会话
// HttpSession session = request.getSession();
// // 获取请求参数cid
// String cid = request.getParameter("cid");
// // 创建CourseService实例
// CourseService service = new CourseServiceImpl();
// // 根据cid删除课程
// service.deleteServiceById(cid);
// // 转发到studentOptionalCourseServlet
// request.getRequestDispatcher("/studentOptionalCourseServlet").forward(request,response);
// }
//
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost(request,response);
// }
//}

@ -31,19 +31,29 @@ public class UpdateStudentInfoServlet extends HttpServlet {
//保存输入内容
// 获取请求参数中的学生姓名
String name = request.getParameter("student-name");
// 输出学生姓名
System.out.println("sname:"+name);
// 获取请求参数中的学生性别
String sex = request.getParameter("student-sex");
// 输出学生性别
System.out.println("ssex:"+sex);
// 获取请求参数中的学生年龄
String age = request.getParameter("student-age");
// 获取请求参数中的学生电话
String phone = request.getParameter("student-phone");
// 获取请求参数中的学生邮箱
String email = request.getParameter("student-email");
// 获取请求参数中的学生地址
String address = request.getParameter("student-address");
// 获取请求参数
String college = request.getParameter("selectCollege");
String department = request.getParameter("selectDepartment");
String cclass = request.getParameter("selectClass");
// 创建一个学生对象
Student updateStudent = new Student();
//判断输入位数是否大于数据库位数
@ -51,16 +61,30 @@ public class UpdateStudentInfoServlet extends HttpServlet {
request.setAttribute("update_msg","格式错误,请重新提交!"+String.format("%tT",new Date()));
request.getRequestDispatcher("updateStudentServlet?sid="+sid).forward(request, response);
}else {
<<<<<<< HEAD
//封装学生对象
=======
//封装学生对象-
// 设置学生ID
>>>>>>> remotes/origin/develop
updateStudent.setS_id(sid);
// 设置学生姓名
updateStudent.setS_name(name);
// 设置学生性别
updateStudent.setS_sex(sex);
// 设置学生年龄
updateStudent.setS_age(age);
// 设置学生电话
updateStudent.setS_phone(phone);
// 设置学生邮箱
updateStudent.setS_email(email);
// 设置学生地址
updateStudent.setS_address(address);
// 设置学生学院
updateStudent.setS_college(college);
// 设置学生系别
updateStudent.setS_department(department);
// 设置学生班级
updateStudent.setS_class(cclass);
//调用studentUpdata服务
@ -77,3 +101,102 @@ public class UpdateStudentInfoServlet extends HttpServlet {
doPost(request,response);
}
}
//package web.servlet.admin;
//
//
//
//import domain.CDC;
//import domain.Student;
//import service.CDCService;
//import service.StudentService;
//import service.impl.CDCServiceImpl;
//import service.impl.StudentServiceImpl;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//import java.io.IOException;
//import java.text.SimpleDateFormat;
//import java.util.Date;
//import java.util.List;
//
//@WebServlet("/updateStudentInfoServlet")
//public class UpdateStudentInfoServlet extends HttpServlet {
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//
// request.setCharacterEncoding("utf-8");
//// HttpSession session = request.getSession();
// String sid = request.getParameter("student-id");
// System.out.println("sid:"+sid);
//
//
// //保存输入内容
// // 获取请求参数中的学生姓名
// String name = request.getParameter("student-name");
// // 输出学生姓名
// System.out.println("sname:"+name);
// // 获取请求参数中的学生性别
// String sex = request.getParameter("student-sex");
// // 输出学生性别
// System.out.println("ssex:"+sex);
// // 获取请求参数中的学生年龄
// String age = request.getParameter("student-age");
// // 获取请求参数中的学生电话
// String phone = request.getParameter("student-phone");
// // 获取请求参数中的学生邮箱
// String email = request.getParameter("student-email");
// // 获取请求参数中的学生地址
// String address = request.getParameter("student-address");
//
// // 获取请求参数
// String college = request.getParameter("selectCollege");
// String department = request.getParameter("selectDepartment");
// String cclass = request.getParameter("selectClass");
//
// // 创建一个学生对象
// Student updateStudent = new Student();
//
// //判断输入位数是否大于数据库位数-
// if (name.length() > 4 || phone.length() > 11 || email.length()>24 || address.length() > 24 || age.length()>2 || name.contains("<") || phone.contains("<") || email.contains("<") || address.contains("<") || age.contains("<")) {
// request.setAttribute("update_msg","格式错误,请重新提交!"+String.format("%tT",new Date()));
// request.getRequestDispatcher("updateStudentServlet?sid="+sid).forward(request, response);
// }else {
// //封装学生对象-
// // 设置学生ID
// updateStudent.setS_id(sid);
// // 设置学生姓名
// updateStudent.setS_name(name);
// // 设置学生性别
// updateStudent.setS_sex(sex);
// // 设置学生年龄
// updateStudent.setS_age(age);
// // 设置学生电话
// updateStudent.setS_phone(phone);
// // 设置学生邮箱
// updateStudent.setS_email(email);
// // 设置学生地址
// updateStudent.setS_address(address);
// // 设置学生学院
// updateStudent.setS_college(college);
// // 设置学生系别
// updateStudent.setS_department(department);
// // 设置学生班级
// updateStudent.setS_class(cclass);
//
// //调用studentUpdata服务-
// StudentService service= new StudentServiceImpl();
// service.updateInfo(updateStudent);
//
// //成功则返回并给提示
// request.setAttribute("update_msg", "修改成功!"+String.format("%tT",new Date()));
// request.getRequestDispatcher("updateStudentServlet?sid="+sid).forward(request, response);
// }
// }
//
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost(request,response);
// }
//}

@ -30,13 +30,24 @@ public class UpdateStudentServlet extends HttpServlet {
Student newStudent = service.findStudentById(student);
request.setAttribute("student",newStudent);
<<<<<<< HEAD
=======
// 创建 CDCService 的实现类实例,用于处理与院系、系别和班级相关的业务逻辑
// 创建CDCService实例
>>>>>>> remotes/origin/develop
CDCService service2 = new CDCServiceImpl();
// 调用findAllCollege方法获取所有学院列表
List<CDC> collegeList = service2.findAllCollege();
// 调用findAllDepartment方法获取所有部门列表
List<CDC> departmentList = service2.findAllDepartment();
// 调用findAllClass方法获取所有班级列表
List<CDC> classList = service2.findAllClass();
// 将学院列表存入session中
session.setAttribute("collegeLists",collegeList);
// 将部门列表存入session中
session.setAttribute("departmentLists",departmentList);
// 将班级列表存入session中
session.setAttribute("classLists",classList);
request.getRequestDispatcher("/WEB-INF/admin/updateStudent.jsp").forward(request,response);
@ -46,3 +57,60 @@ public class UpdateStudentServlet extends HttpServlet {
doPost(request,response);
}
}
//package web.servlet.admin;
//
//import domain.CDC;
//import domain.Student;
//import service.CDCService;
//import service.StudentService;
//import service.impl.CDCServiceImpl;
//import service.impl.StudentServiceImpl;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//import java.io.IOException;
//import java.util.List;
//
//@WebServlet("/updateStudentServlet")
//public class UpdateStudentServlet extends HttpServlet {
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// request.setCharacterEncoding("utf-8");
// HttpSession session = request.getSession();
// String studentid = request.getParameter("sid");
//// session.setAttribute("sid",studentid);
//
// Student student = new Student();
// student.setS_id(studentid);
// // 创建学生服务的实现类实例,用于处理与学生相关的业务逻辑
// StudentService service = new StudentServiceImpl();
// Student newStudent = service.findStudentById(student);
// request.setAttribute("student",newStudent);
//
// // 创建 CDCService 的实现类实例,用于处理与院系、系别和班级相关的业务逻辑
// // 创建CDCService实例
// CDCService service2 = new CDCServiceImpl();
// // 调用findAllCollege方法获取所有学院列表
// List<CDC> collegeList = service2.findAllCollege();
// // 调用findAllDepartment方法获取所有部门列表
// List<CDC> departmentList = service2.findAllDepartment();
// // 调用findAllClass方法获取所有班级列表
// List<CDC> classList = service2.findAllClass();
//
// // 将学院列表存入session中
// session.setAttribute("collegeLists",collegeList);
// // 将部门列表存入session中
// session.setAttribute("departmentLists",departmentList);
// // 将班级列表存入session中
// session.setAttribute("classLists",classList);
//
// request.getRequestDispatcher("/WEB-INF/admin/updateStudent.jsp").forward(request,response);
// }
//
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost(request,response);
// }
//}

@ -28,17 +28,25 @@ public class CDCListServlet extends HttpServlet {
//将list存入request域
request.setAttribute("cdcs",cdcs);
// 获取当前会话
HttpSession session = request.getSession();
// 从会话中获取学生对象
Student student= (Student)session.getAttribute("student");
// 从会话中获取管理员对象
Admin admin= (Admin)session.getAttribute("admin");
// 从会话中获取教师对象
Teacher teacher= (Teacher)session.getAttribute("teacher");
// 如果会话中存在学生对象且不存在管理员对象和教师对象则跳转到学生CDC列表页面
if (student != null && admin == null && teacher == null) {
request.getRequestDispatcher("/WEB-INF/student/sCDCList.jsp").forward(request, response);
// 如果会话中存在管理员对象且不存在学生对象和教师对象则跳转到管理员CDC列表页面
} else if (admin != null && student == null && teacher == null) {
request.getRequestDispatcher("/WEB-INF/admin/aCDCList.jsp").forward(request, response);
// 如果会话中存在教师对象且不存在学生对象和管理员对象则跳转到教师CDC列表页面
} else if (teacher != null && admin == null && student == null) {
request.getRequestDispatcher("/WEB-INF/teacher/tCDCList.jsp").forward(request, response);
// 如果会话中不存在学生对象、管理员对象和教师对象,则跳转到错误页面
} else {
request.getRequestDispatcher("error.jsp").forward(request, response);
}
@ -48,3 +56,61 @@ public class CDCListServlet extends HttpServlet {
this.doPost(request,response);
}
}
//package web.servlet.cdc;
//
//import domain.Admin;
//import domain.CDC;
//import domain.Student;
//import domain.Teacher;
//import service.CDCService;
//import service.StudentService;
//import service.impl.CDCServiceImpl;
//import service.impl.StudentServiceImpl;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//import java.io.IOException;
//import java.util.List;
//
//@WebServlet("/cdcListServlet")
//public class CDCListServlet extends HttpServlet {
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// request.setCharacterEncoding("utf-8");
// //调用StudentService完成查询-
// CDCService service = new CDCServiceImpl();
// List<CDC> cdcs = service.findAll();
// //将list存入request域-
// request.setAttribute("cdcs",cdcs);
//
// // 获取当前会话
// HttpSession session = request.getSession();
// // 从会话中获取学生对象
// Student student= (Student)session.getAttribute("student");
// // 从会话中获取管理员对象
// Admin admin= (Admin)session.getAttribute("admin");
// // 从会话中获取教师对象
// Teacher teacher= (Teacher)session.getAttribute("teacher");
//
// // 如果会话中存在学生对象且不存在管理员对象和教师对象则跳转到学生CDC列表页面
// if (student != null && admin == null && teacher == null) {
// request.getRequestDispatcher("/WEB-INF/student/sCDCList.jsp").forward(request, response);
// // 如果会话中存在管理员对象且不存在学生对象和教师对象则跳转到管理员CDC列表页面
// } else if (admin != null && student == null && teacher == null) {
// request.getRequestDispatcher("/WEB-INF/admin/aCDCList.jsp").forward(request, response);
// // 如果会话中存在教师对象且不存在学生对象和管理员对象则跳转到教师CDC列表页面
// } else if (teacher != null && admin == null && student == null) {
// request.getRequestDispatcher("/WEB-INF/teacher/tCDCList.jsp").forward(request, response);
// // 如果会话中不存在学生对象、管理员对象和教师对象,则跳转到错误页面
// } else {
// request.getRequestDispatcher("error.jsp").forward(request, response);
// }
// }
//
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// this.doPost(request,response);
// }
//}

@ -29,12 +29,19 @@ public class AddComplaintsServlet extends HttpServlet {
text = text.replace("/script","");
}
// 判断文本是否为空
if (!text.equals("")) {
// 设置投诉内容
complaint.setContent(text);
// 获取当前时间
Date d = new Date();
// 设置时间格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 设置投诉日期
complaint.setCdate(sdf.format(d));
// 创建投诉服务对象
ComplaintService service = new ComplaintServiceImpl();
// 添加投诉
service.addComplaint(complaint);
}
@ -46,3 +53,58 @@ public class AddComplaintsServlet extends HttpServlet {
doPost(request,response);
}
}
//package web.servlet.complaints;
//
//import domain.Complaint;
//import service.ComplaintService;
//import service.NotifyService;
//import service.impl.ComplaintServiceImpl;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//import java.text.SimpleDateFormat;
//import java.util.Date;
//
//@WebServlet("/addComplaintsServlet")
//public class AddComplaintsServlet extends HttpServlet {
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// request.setCharacterEncoding("utf-8");
//
// //获取参数-
// Complaint complaint = new Complaint();
//
// String text = (String) request.getParameter("complaint");
//
// if (text.contains("script") && text.contains("/script")) {
// text = text.replace("script","");
// text = text.replace("/script","");
// }
//
// // 判断文本是否为空
// if (!text.equals("")) {
// // 设置投诉内容
// complaint.setContent(text);
// // 获取当前时间
// Date d = new Date();
// // 设置时间格式
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// // 设置投诉日期
// complaint.setCdate(sdf.format(d));
// // 创建投诉服务对象
// ComplaintService service = new ComplaintServiceImpl();
// // 添加投诉
// service.addComplaint(complaint);
// }
//
// response.sendRedirect("complaintServlet");
//// request.getRequestDispatcher("/complaintListServlet").forward(request,response);
// }
//
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost(request,response);
// }
//}

@ -14,14 +14,54 @@ import java.util.List;
@WebServlet("/complaintListServlet")
public class ComplaintListServlet extends HttpServlet {
// 处理 POST 请求
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置请求编码为 utf-8
request.setCharacterEncoding("utf-8");
// 创建投诉服务对象
ComplaintService service = new ComplaintServiceImpl();
// 查询所有投诉信息
List<Complaint> complaints = service.findAll();
request.setAttribute("complaints",complaints);
// 转发请求到 JSP 页面
request.getRequestDispatcher("/WEB-INF/complaint/complaintsList.jsp").forward(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
//package web.servlet.complaints;
//
//import domain.Complaint;
//import service.ComplaintService;
//import service.impl.ComplaintServiceImpl;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//import java.util.List;
///**
// * 投诉列表处理的Servlet
// */
//@WebServlet("/complaintListServlet")
//public class ComplaintListServlet extends HttpServlet {
// // 处理 POST 请求
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// // 设置请求编码为 utf-8
// request.setCharacterEncoding("utf-8");
// // 创建投诉服务对象
// ComplaintService service = new ComplaintServiceImpl();
// // 查询所有投诉信息
// List<Complaint> complaints = service.findAll();
// // 将查询到的投诉信息存入请求属性,以便在后续的 JSP 页面中使用
// request.setAttribute("complaints",complaints);
// // 转发请求到 JSP 页面
// request.getRequestDispatcher("/WEB-INF/complaint/complaintsList.jsp").forward(request,response);
// }
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost(request,response);
// }
//}

@ -15,10 +15,19 @@ import java.util.List;
@WebServlet("/complaintServlet")
public class ComplaintServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
<<<<<<< HEAD
=======
// 设置请求编码为UTF-8以支持中文字符的正确处理
// 设置请求的字符编码为utf-8
>>>>>>> remotes/origin/develop
request.setCharacterEncoding("utf-8");
// 创建ComplaintService实例
ComplaintService service = new ComplaintServiceImpl();
// 调用findAll方法获取所有投诉信息
List<Complaint> complaints = service.findAll();
// 将投诉信息存入request对象中
request.setAttribute("complaints",complaints);
// 将请求转发到complaintsList.jsp页面
request.getRequestDispatcher("/WEB-INF/complaint/complaintsList.jsp").forward(request,response);
}
@ -26,3 +35,46 @@ public class ComplaintServlet extends HttpServlet {
doPost(request,response);
}
}
//package web.servlet.complaints;
//
//import domain.Complaint;
//import service.ComplaintService;
//import service.impl.ComplaintServiceImpl;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//import java.util.List;
///**
// * 投诉处理的Servlet
// */
//@WebServlet("/complaintServlet")
//public class ComplaintServlet extends HttpServlet {
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// // 设置请求编码为UTF-8以支持中文字符的正确处理
// // 设置请求的字符编码为utf-8
// request.setCharacterEncoding("utf-8");
// // 创建ComplaintService实例
// ComplaintService service = new ComplaintServiceImpl();
// // 调用findAll方法获取所有投诉信息
// List<Complaint> complaints = service.findAll();
// // 将投诉信息存入request对象中
// request.setAttribute("complaints",complaints);
// // 将请求转发到complaintsList.jsp页面
// request.getRequestDispatcher("/WEB-INF/complaint/complaintsList.jsp").forward(request,response);
// }
// /**
// * 处理GET请求调用POST请求处理方法。
// *
// * @param request HTTP请求对象包含客户端发送的数据。
// * @param response HTTP响应对象用于生成返回给客户端的响应。
// * @throws IOException 如果输入或输出异常发生。
// */
//
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost(request,response);
// }
//}

@ -10,10 +10,27 @@ import java.io.IOException;
@WebServlet("/deleteFileServlet")
public class DeleteFileServlet extends HttpServlet {
<<<<<<< HEAD
=======
/**
* POST
*
* @param request HTTP
* @param response HTTP
* @throws ServletException
* @throws IOException
*/
// 处理POST请求
>>>>>>> remotes/origin/develop
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置请求编码为utf-8
request.setCharacterEncoding("utf-8");
// 获取请求参数filename
String fileName = request.getParameter("filename");
// 获取上传文件的路径
File file = new File(this.getServletContext().getRealPath("upload")+File.separator+fileName);
// 如果文件存在,则删除
if (file.exists()) {
file.delete();
}
@ -24,3 +41,45 @@ public class DeleteFileServlet extends HttpServlet {
doPost(request,response);
}
}
//package web.servlet.file;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.File;
//import java.io.IOException;
///**
// * 删除文件的Servlet
// */
//@WebServlet("/deleteFileServlet")
//public class DeleteFileServlet extends HttpServlet {
//
// /**
// * 处理POST请求执行文件删除操作。
// *
// * @param request HTTP请求对象包含客户端发送的数据。
// * @param response HTTP响应对象用于生成返回给客户端的响应。
// * @throws ServletException 如果处理请求时发生错误。
// * @throws IOException 如果输入或输出异常发生。
// */
// // 处理POST请求
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// // 设置请求编码为utf-8
// request.setCharacterEncoding("utf-8");
// // 获取请求参数filename
// String fileName = request.getParameter("filename");
// // 获取上传文件的路径
// File file = new File(this.getServletContext().getRealPath("upload")+File.separator+fileName);
// // 如果文件存在,则删除
// if (file.exists()) {
// file.delete();
// }
// request.getRequestDispatcher("/fileListServlet").forward(request,response);
// }
//
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost(request,response);
// }
//}

@ -17,18 +17,38 @@ import java.net.URLEncoder;
@WebServlet("/downloadServlet")
public class DownloadServlet extends HttpServlet {
<<<<<<< HEAD
=======
/**
* POST
*
* @param request HTTP
* @param response HTTP
* @throws ServletException
* @throws IOException
*/
// 处理POST请求
>>>>>>> remotes/origin/develop
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取请求参数filename
String filename = request.getParameter("filename");
// 判断filename是否为../或/
if (filename.equalsIgnoreCase("../") || filename.equalsIgnoreCase("/")) {
// 如果是则转发到error.jsp页面
request.getRequestDispatcher("error.jsp").forward(request, response);
}
// 设置响应头content-Type为application/octet-stream
response.addHeader("content-Type", "application/octet-stream");
// 获取请求头User-Agent
String agent = request.getHeader("User-Agent");
// 判断User-Agent是否包含chrome
if (agent.toLowerCase().indexOf("chrome") > 0) {
// 如果包含则设置响应头content-Disposition为attachment;filename并将filename进行UTF-8和ISO8859-1编码
response.addHeader("content-Disposition", "attachment;filename=" + new String(filename.getBytes("UTF-8"), "ISO8859-1"));
} else {
// 如果不包含则设置响应头content-Disposition为attachment;filename并将filename进行UTF-8编码
response.addHeader("content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
}
InputStream in = getServletContext().getResourceAsStream("/upload/" + filename);
@ -41,16 +61,24 @@ public class DownloadServlet extends HttpServlet {
out.close();
in.close();
// 获取当前会话
HttpSession session = request.getSession();
// 从会话中获取学生对象
Student student= (Student)session.getAttribute("student");
// 从会话中获取管理员对象
Admin admin= (Admin)session.getAttribute("admin");
// 从会话中获取教师对象
Teacher teacher= (Teacher)session.getAttribute("teacher");
// 如果会话中存在学生对象,且不存在管理员对象和教师对象,则跳转到学生查找文件列表页面
if (student != null && admin == null && teacher == null) {
request.getRequestDispatcher("/WEB-INF/student/sFindFileList.jsp").forward(request, response);
// 如果会话中存在管理员对象,且不存在学生对象和教师对象,则跳转到管理员查找文件列表页面
} else if (admin != null && student == null && teacher == null) {
request.getRequestDispatcher("/WEB-INF/admin/aFindFileList.jsp").forward(request, response);
// 如果会话中存在教师对象,且不存在学生对象和管理员对象,则跳转到教师查找文件列表页面
} else if (teacher != null && admin == null && student == null) {
request.getRequestDispatcher("/WEB-INF/teacher/tFindFileList.jsp").forward(request, response);
// 如果会话中不存在学生对象、管理员对象和教师对象,则跳转到错误页面
} else {
request.getRequestDispatcher("error.jsp").forward(request, response);
}
@ -60,3 +88,92 @@ public class DownloadServlet extends HttpServlet {
doPost(request, response);
}
}
//package web.servlet.file;
//
//import domain.Admin;
//import domain.Student;
//import domain.Teacher;
//
//import javax.servlet.ServletException;
//import javax.servlet.ServletOutputStream;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//import java.io.IOException;
//import java.io.InputStream;
//import java.net.URLEncoder;
///**
// * 文件下载的Servlet
// */
//@WebServlet("/downloadServlet")
//public class DownloadServlet extends HttpServlet {
// /**
// * 处理POST请求执行文件下载操作。
// *
// * @param request HTTP请求对象包含客户端发送的数据。
// * @param response HTTP响应对象用于生成返回给客户端的响应。
// * @throws ServletException 如果处理请求时发生错误。
// * @throws IOException 如果输入或输出异常发生。
// */
// // 处理POST请求
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// // 获取请求参数filename
// String filename = request.getParameter("filename");
// // 判断filename是否为../或/
// if (filename.equalsIgnoreCase("../") || filename.equalsIgnoreCase("/")) {
// // 如果是则转发到error.jsp页面
// request.getRequestDispatcher("error.jsp").forward(request, response);
// }
// // 设置响应头content-Type为application/octet-stream
// response.addHeader("content-Type", "application/octet-stream");
//
// // 获取请求头User-Agent
// String agent = request.getHeader("User-Agent");
//
// // 判断User-Agent是否包含chrome
// if (agent.toLowerCase().indexOf("chrome") > 0) {
// // 如果包含则设置响应头content-Disposition为attachment;filename并将filename进行UTF-8和ISO8859-1编码
// response.addHeader("content-Disposition", "attachment;filename=" + new String(filename.getBytes("UTF-8"), "ISO8859-1"));
// } else {
// // 如果不包含则设置响应头content-Disposition为attachment;filename并将filename进行UTF-8编码
// response.addHeader("content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
// }
// InputStream in = getServletContext().getResourceAsStream("/upload/" + filename);
// ServletOutputStream out = response.getOutputStream();
// byte[] bs = new byte[1024];
// int len = -1;
// while ((len = in.read(bs)) != -1) {
// out.write(bs, 0, len);
// }
// out.close();
// in.close();
//
// // 获取当前会话
// HttpSession session = request.getSession();
// // 从会话中获取学生对象
// Student student= (Student)session.getAttribute("student");
// // 从会话中获取管理员对象
// Admin admin= (Admin)session.getAttribute("admin");
// // 从会话中获取教师对象
// Teacher teacher= (Teacher)session.getAttribute("teacher");
// // 如果会话中存在学生对象,且不存在管理员对象和教师对象,则跳转到学生查找文件列表页面
// if (student != null && admin == null && teacher == null) {
// request.getRequestDispatcher("/WEB-INF/student/sFindFileList.jsp").forward(request, response);
// // 如果会话中存在管理员对象,且不存在学生对象和教师对象,则跳转到管理员查找文件列表页面
// } else if (admin != null && student == null && teacher == null) {
// request.getRequestDispatcher("/WEB-INF/admin/aFindFileList.jsp").forward(request, response);
// // 如果会话中存在教师对象,且不存在学生对象和管理员对象,则跳转到教师查找文件列表页面
// } else if (teacher != null && admin == null && student == null) {
// request.getRequestDispatcher("/WEB-INF/teacher/tFindFileList.jsp").forward(request, response);
// // 如果会话中不存在学生对象、管理员对象和教师对象,则跳转到错误页面
// } else {
// request.getRequestDispatcher("error.jsp").forward(request, response);
// }
// }
//
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost(request, response);
// }
//}

@ -20,23 +20,38 @@ import java.util.List;
@WebServlet("/fileListServlet")
public class FileListServlet extends HttpServlet {
// 处理POST请求
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置请求编码为utf-8
request.setCharacterEncoding("utf-8");
// 获取上传文件的目录
File dir = new File(this.getServletContext().getRealPath("upload"));
// 如果目录不存在且不是目录
if (!dir.exists() && !dir.isDirectory()) {
// 输出提示信息
System.out.println(this.getServletContext().getRealPath("upload") + "目录不存在,需要创建");
// 创建目录
dir.mkdir();
}
// 获取目录下的所有文件
File[] arrs = dir.listFiles();
// 创建一个List来存储文件信息
List<FileClass> fileLists = new ArrayList<FileClass>();
// 遍历所有文件
for(File f:arrs){
// 获取文件大小
long l = f.length();
// 将文件大小转换为可读的格式
String fileSize = getPrintSize(l);
// 创建一个FileClass对象
FileClass file = new FileClass();
// 设置文件名
file.setFileName(f.getName());
// 设置文件路径
file.setFilePath(f.getAbsolutePath());
// 设置文件大小
file.setFileSize(fileSize);
// 将文件信息添加到List中
fileLists.add(file);
}
request.setAttribute("fileLists",fileLists);
@ -44,14 +59,20 @@ public class FileListServlet extends HttpServlet {
HttpSession session = request.getSession();
Student student= (Student)session.getAttribute("student");
// 从session中获取admin对象
Admin admin= (Admin)session.getAttribute("admin");
// 从session中获取teacher对象
Teacher teacher= (Teacher)session.getAttribute("teacher");
// 如果student对象不为空admin对象为空teacher对象为空则跳转到student的文件列表页面
if (student != null && admin == null && teacher == null) {
request.getRequestDispatcher("/WEB-INF/student/sFindFileList.jsp").forward(request, response);
// 如果admin对象不为空student对象为空teacher对象为空则跳转到admin的文件列表页面
} else if (admin != null && student == null && teacher == null) {
request.getRequestDispatcher("/WEB-INF/admin/aFindFileList.jsp").forward(request, response);
// 如果teacher对象不为空admin对象为空student对象为空则跳转到teacher的文件列表页面
} else if (teacher != null && admin == null && student == null) {
request.getRequestDispatcher("/WEB-INF/teacher/tFindFileList.jsp").forward(request, response);
// 否则跳转到错误页面
} else {
request.getRequestDispatcher("error.jsp").forward(request, response);
}
@ -86,3 +107,112 @@ public class FileListServlet extends HttpServlet {
}
}
}
//package web.servlet.file;
//
//import domain.Admin;
//import domain.FileClass;
//import domain.Student;
//import domain.Teacher;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//import java.io.File;
//import java.io.IOException;
//import java.math.BigDecimal;
//import java.math.RoundingMode;
//import java.util.ArrayList;
//import java.util.List;
//
//@WebServlet("/fileListServlet")
//public class FileListServlet extends HttpServlet {
// // 处理POST请求
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// // 设置请求编码为utf-8
// request.setCharacterEncoding("utf-8");
// // 获取上传文件的目录
// File dir = new File(this.getServletContext().getRealPath("upload"));
// // 如果目录不存在且不是目录
// if (!dir.exists() && !dir.isDirectory()) {
// // 输出提示信息
// System.out.println(this.getServletContext().getRealPath("upload") + "目录不存在,需要创建");
// // 创建目录-
// dir.mkdir();
// }
// // 获取目录下的所有文件
// File[] arrs = dir.listFiles();
// // 创建一个List来存储文件信息
// List<FileClass> fileLists = new ArrayList<FileClass>();
// // 遍历所有文件
// for(File f:arrs){
// // 获取文件大小
// long l = f.length();
// // 将文件大小转换为可读的格式
// String fileSize = getPrintSize(l);
// // 创建一个FileClass对象
// FileClass file = new FileClass();
// // 设置文件名
// file.setFileName(f.getName());
// // 设置文件路径
// file.setFilePath(f.getAbsolutePath());
// // 设置文件大小
// file.setFileSize(fileSize);
// // 将文件信息添加到List中
// fileLists.add(file);
// }
// request.setAttribute("fileLists",fileLists);
//
// HttpSession session = request.getSession();
// Student student= (Student)session.getAttribute("student");
//
// // 从session中获取admin对象
// Admin admin= (Admin)session.getAttribute("admin");
// // 从session中获取teacher对象
// Teacher teacher= (Teacher)session.getAttribute("teacher");
// // 如果student对象不为空admin对象为空teacher对象为空则跳转到student的文件列表页面
// if (student != null && admin == null && teacher == null) {
// request.getRequestDispatcher("/WEB-INF/student/sFindFileList.jsp").forward(request, response);
// // 如果admin对象不为空student对象为空teacher对象为空则跳转到admin的文件列表页面
// } else if (admin != null && student == null && teacher == null) {
// request.getRequestDispatcher("/WEB-INF/admin/aFindFileList.jsp").forward(request, response);
// // 如果teacher对象不为空admin对象为空student对象为空则跳转到teacher的文件列表页面
// } else if (teacher != null && admin == null && student == null) {
// request.getRequestDispatcher("/WEB-INF/teacher/tFindFileList.jsp").forward(request, response);
// // 否则跳转到错误页面
// } else {
// request.getRequestDispatcher("error.jsp").forward(request, response);
// }
// }
//
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost(request,response);
// }
//
// public static String getPrintSize(long size) {
// // 如果字节数少于1024则直接以B为单位否则先除于1024后3位因太少无意义-
// double value = (double) size;
// if (value < 1024) {
// return String.valueOf(value) + "B";
// } else {
// value = new BigDecimal(value / 1024).setScale(2, BigDecimal.ROUND_DOWN).doubleValue();
// }
// // 如果原字节数除于1024之后少于1024则可以直接以KB作为单位-
// // 因为还没有到达要使用另一个单位的时候
// // 接下去以此类推
// if (value < 1024) {
// return String.valueOf(value) + "KB";
// } else {
// value = new BigDecimal(value / 1024).setScale(2, BigDecimal.ROUND_DOWN).doubleValue();
// }
// if (value < 1024) {
// return String.valueOf(value) + "MB";
// } else {
// // 否则如果要以GB为单位的先除于1024再作同样的处理
// value = new BigDecimal(value / 1024).setScale(2, BigDecimal.ROUND_DOWN).doubleValue();
// return String.valueOf(value) + "GB";
// }
// }
//}

@ -17,3 +17,40 @@ public class FileServlet extends HttpServlet {
doPost(request,response);
}
}
//package web.servlet.file;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
///**
// * 文件处理的Servlet用于转发到文件上传页面
// */
//@WebServlet("/fileServlet")
//public class FileServlet extends HttpServlet {
// /**
// * 处理POST请求转发到文件上传页面。
// *
// * @param request HTTP请求对象包含客户端发送的数据。
// * @param response HTTP响应对象用于生成返回给客户端的响应。
// * @throws ServletException 如果处理请求时发生错误。
// * @throws IOException 如果输入或输出异常发生。
// */
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// request.getRequestDispatcher("/WEB-INF/admin/uploadFile.jsp").forward(request,response);
// }
//
// /**
// * 处理GET请求直接调用POST请求处理方法。
// *
// * @param request HTTP请求对象包含客户端发送的数据。
// * @param response HTTP响应对象用于生成返回给客户端的响应。
// * @throws ServletException 如果处理请求时发生错误。
// * @throws IOException 如果输入或输出异常发生。
// */
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost(request,response);
// }
//}

@ -34,18 +34,23 @@ public class ShowPhotoServlet extends HttpServlet {
Student student = (Student) session.getAttribute("student");
Teacher teacher = (Teacher) session.getAttribute("teacher");
Photo p;
// 判断当前用户是学生还是教师
if (student != null) {
// 如果是学生则根据学生id查询照片
PhotoService service = new PhotoServiceImpl();
p = service.findPhotoByPhotoId(student.getS_id());
}else{
// 如果是教师则根据教师id查询照片
PhotoService service = new PhotoServiceImpl();
p = service.findPhotoByPhotoId(teacher.getT_id());
}
String imagePath = "";
// 如果没有查询到照片,则使用默认照片
if (p == null) {
imagePath = this.getServletContext().getRealPath("/photos/") + "0.jpg";
System.out.println(imagePath);
} else {
// 如果查询到照片,则使用查询到的照片
String photoName = p.getPhotoName();
imagePath = this.getServletContext().getRealPath("/photos/") + photoName;
System.out.println(imagePath);
@ -72,14 +77,20 @@ public class ShowPhotoServlet extends HttpServlet {
imageIn.close();// 关闭文件流
}
if (imagePath.toLowerCase().endsWith(".gif"))// 不使用编码处理文件流的情况:
if (imagePath.toLowerCase().endsWith(".gif"))
// 不使用编码处理文件流的情况:
{
response.setContentType(GIF);
ServletContext context = getServletContext();// 得到背景对象
InputStream imageIn = context.getResourceAsStream(imagePath);// 文件流
BufferedInputStream bis = new BufferedInputStream(imageIn);// 输入缓冲流
BufferedOutputStream bos = new BufferedOutputStream(output);// 输出缓冲流
byte data[] = new byte[4096];// 缓冲字节数
ServletContext context = getServletContext();
// 得到背景对象
InputStream imageIn = context.getResourceAsStream(imagePath);
// 文件流
BufferedInputStream bis = new BufferedInputStream(imageIn);
// 输入缓冲流
BufferedOutputStream bos = new BufferedOutputStream(output);
// 输出缓冲流
byte data[] = new byte[4096];
// 缓冲字节数
int size = 0;
size = bis.read(data);
while (size != -1) {
@ -97,3 +108,113 @@ public class ShowPhotoServlet extends HttpServlet {
doPost(request,response);
}
}
//package web.servlet.file;
//
//import com.sun.image.codec.jpeg.JPEGCodec;
//import com.sun.image.codec.jpeg.JPEGImageDecoder;
//import com.sun.image.codec.jpeg.JPEGImageEncoder;
//import domain.Photo;
//import domain.Student;
//import domain.Teacher;
//import service.PhotoService;
//import service.impl.PhotoServiceImpl;
//
//import javax.servlet.ServletContext;
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//import java.awt.image.BufferedImage;
//import java.io.*;
//import java.net.ServerSocket;
//
//@WebServlet("/showPhotoServlet")
//public class ShowPhotoServlet extends HttpServlet {
// private static final String GIF = "image/gif;charset=GB2312";// 设定输出的类型
//
// private static final String JPG = "image/jpeg;charset=GB2312";
//
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// String spec = request.getParameter("spec");// 输出图片的类型的标志
//
// request.setCharacterEncoding("utf-8");
// HttpSession session = request.getSession();
// Student student = (Student) session.getAttribute("student");
// Teacher teacher = (Teacher) session.getAttribute("teacher");
// Photo p;
// // 判断当前用户是学生还是教师
// if (student != null) {
// // 如果是学生则根据学生id查询照片
// PhotoService service = new PhotoServiceImpl();
// p = service.findPhotoByPhotoId(student.getS_id());
// }else{
// // 如果是教师则根据教师id查询照片
// PhotoService service = new PhotoServiceImpl();
// p = service.findPhotoByPhotoId(teacher.getT_id());
// }
// String imagePath = "";
// // 如果没有查询到照片,则使用默认照片
// if (p == null) {
// imagePath = this.getServletContext().getRealPath("/photos/") + "0.jpg";
// System.out.println(imagePath);
// } else {
// // 如果查询到照片,则使用查询到的照片
// String photoName = p.getPhotoName();
// imagePath = this.getServletContext().getRealPath("/photos/") + photoName;
// System.out.println(imagePath);
// }
//
//
// response.reset();
//
// OutputStream output = response.getOutputStream();// 得到输出流
// if (imagePath.toLowerCase().endsWith(".jpg"))// 使用编码处理文件流的情况:
// {
// response.setContentType(JPG);// 设定输出的类型
// // 得到图片的真实路径-
//
// // 得到图片的文件流-
// InputStream imageIn = new FileInputStream(new File(imagePath));
// // 得到输入的编码器将文件流进行jpg格式编码-
// JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(imageIn);
// // 得到编码后的图片对象-
// BufferedImage image = decoder.decodeAsBufferedImage();
// // 得到输出的编码器
// JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(output);
// encoder.encode(image);// 对图片进行输出编码
// imageIn.close();// 关闭文件流
// }
//
// if (imagePath.toLowerCase().endsWith(".gif"))
// // 不使用编码处理文件流的情况:
// {
// response.setContentType(GIF);
// ServletContext context = getServletContext();
// // 得到背景对象
// InputStream imageIn = context.getResourceAsStream(imagePath);
// // 文件流
// BufferedInputStream bis = new BufferedInputStream(imageIn);
// // 输入缓冲流
// BufferedOutputStream bos = new BufferedOutputStream(output);
// // 输出缓冲流
// byte data[] = new byte[4096];
// // 缓冲字节数
// int size = 0;
// size = bis.read(data);
// while (size != -1) {
// bos.write(data, 0, size);
// size = bis.read(data);
// }
// bis.close();
// bos.flush();// 清空输出缓冲流
// bos.close();
// }
// output.close();
// }
//
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost(request,response);
// }
//}

@ -26,14 +26,22 @@ import java.util.List;
@WebServlet("/uploadImageServlet")
public class UploadImageServlet extends HttpServlet {
// 处理POST请求
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取当前会话
HttpSession session = request.getSession();
// 获取当前会话中的学生对象
Student student = (Student) session.getAttribute("student");
// 获取当前会话中的教师对象
Teacher teacher = (Teacher) session.getAttribute("teacher");
// 获取当前会话中的管理员对象
Admin admin = (Admin) session.getAttribute("admin");
// 定义一个字符串变量用于存储用户ID
String id = "";
// 如果当前会话中有学生对象
if (student != null) {
// 将学生ID赋值给id变量
id = student.getS_id();
}
@ -79,6 +87,7 @@ public class UploadImageServlet extends HttpServlet {
filename = filename.substring(filename.lastIndexOf("\\") + 1);
// System.out.print(filename);
// 判断文件名后缀是否为JPG、JPEG、gif、GIF、jpg、jpeg
if (filename.substring(filename.lastIndexOf(".") + 1).equals("JPG")
|| filename.substring(filename.lastIndexOf(".") + 1).equals("JPEG")
|| filename.substring(filename.lastIndexOf(".") + 1).equals("gif")
@ -101,6 +110,7 @@ public class UploadImageServlet extends HttpServlet {
} else { //必须是图片才能上传否则失败
request.setAttribute("update_msg", "上传失败只能上传类型为jpg或GIF的图像文件"+String.format("%tT",new Date()));
// request.getRequestDispatcher("/WEB-INF/index.jsp").forward(request, response);
// 转发到studentAddPhoto.jsp页面
request.getRequestDispatcher("/WEB-INF/student/studentAddPhoto.jsp").forward(request, response);
return;
}
@ -109,9 +119,13 @@ public class UploadImageServlet extends HttpServlet {
e.printStackTrace();
}
// 创建Photo对象
Photo photo = new Photo();
// 设置photoId
photo.setPhotoId(id);
// 设置photoName
photo.setPhotoName(newFileName);
// 创建PhotoService对象
PhotoService service = new PhotoServiceImpl();
@ -130,3 +144,149 @@ public class UploadImageServlet extends HttpServlet {
request.getRequestDispatcher("/WEB-INF/student/studentAddPhoto.jsp").forward(request, response);
}
}
//package web.servlet.file;
//
//import domain.Admin;
//import domain.Photo;
//import domain.Student;
//import domain.Teacher;
//import org.apache.commons.fileupload.FileItem;
//import org.apache.commons.fileupload.FileUploadException;
//import org.apache.commons.fileupload.disk.DiskFileItemFactory;
//import org.apache.commons.fileupload.servlet.ServletFileUpload;
//import service.PhotoService;
//import service.impl.PhotoServiceImpl;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//import java.io.File;
//import java.io.FileOutputStream;
//import java.io.IOException;
//import java.io.InputStream;
//import java.util.Date;
//import java.util.List;
//
//@WebServlet("/uploadImageServlet")
//public class UploadImageServlet extends HttpServlet {
// // 处理POST请求
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//
// // 获取当前会话
// HttpSession session = request.getSession();
// // 获取当前会话中的学生对象
// Student student = (Student) session.getAttribute("student");
// // 获取当前会话中的教师对象
// Teacher teacher = (Teacher) session.getAttribute("teacher");
// // 获取当前会话中的管理员对象
// Admin admin = (Admin) session.getAttribute("admin");
// // 定义一个字符串变量用于存储用户ID
// String id = "";
// // 如果当前会话中有学生对象
// if (student != null) {
// // 将学生ID赋值给id变量
// id = student.getS_id();
// }
//
// request.setAttribute("message", "");
// request.setAttribute("path", "");
// String filename = null;
// String newFileName = null;
// // 设置上传图片的保存路径-
// String savePath = this.getServletContext().getRealPath("/photos");
// File file = new File(savePath);
// // 判断上传文件的保存目录是否存在-
// if (!file.exists() && !file.isDirectory()) {
// System.out.println(savePath + "目录不存在,需要创建");
// // 创建目录
// file.mkdir();
// }
// DiskFileItemFactory factory = new DiskFileItemFactory();
// // 2、创建一个文件上传解析器-
// ServletFileUpload upload = new ServletFileUpload(factory);
// upload.setHeaderEncoding("UTF-8");
// // 3、判断提交上来的数据是否是上传表单的数据-
// if (!ServletFileUpload.isMultipartContent(request)) {
// // 按照传统方式获取数据-
// return;
// }
// try {
// List<FileItem> list = upload.parseRequest(request);
// System.out.println(list.toString());// 文件的路径 以及保存的路径-
// for (FileItem item : list) {
// filename = item.getName();// 获得一个项的文件名称-
// try {
// newFileName = id + filename.substring(filename.lastIndexOf("."));
// filename = id + filename.substring(filename.lastIndexOf("."));
// } catch (Exception e) {
// e.printStackTrace();
// }
// if (filename == null || filename.trim().equals("")) {// 如果為空則跳過
// continue;
// }
// // 報錯 需要過濾文件名稱 java.io.FileNotFoundException:
// // G:\测试02\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\FaceUp\WEB-INF\images\C:\Users\Ray\Pictures\2.jpeg
// // (文件名、目录名或卷标语法不正确。)
//
// filename = filename.substring(filename.lastIndexOf("\\") + 1);
//// System.out.print(filename);
// // 判断文件名后缀是否为JPG、JPEG、gif、GIF、jpg、jpeg
// if (filename.substring(filename.lastIndexOf(".") + 1).equals("JPG")
// || filename.substring(filename.lastIndexOf(".") + 1).equals("JPEG")
// || filename.substring(filename.lastIndexOf(".") + 1).equals("gif")
// || filename.substring(filename.lastIndexOf(".") + 1).equals("GIF")
// || filename.substring(filename.lastIndexOf(".") + 1).equals("jpg")
// || filename.substring(filename.lastIndexOf(".") + 1).equals("jpeg")) {
// InputStream in = item.getInputStream();// 獲得上傳的輸入流
// FileOutputStream out = new FileOutputStream(savePath + "\\" + filename);// 指定web-inf目錄下的images文件
// request.setAttribute("path", "photos"+"\\" + filename);
//
// int len = 0;
// byte buffer[] = new byte[1024];
// while ((len = in.read(buffer)) > 0)// 每次讀取
// {
// out.write(buffer, 0, len);
// }
// in.close();
// out.close();
// item.delete();
// } else { //必须是图片才能上传否则失败
// request.setAttribute("update_msg", "上传失败只能上传类型为jpg或GIF的图像文件"+String.format("%tT",new Date()));
//// request.getRequestDispatcher("/WEB-INF/index.jsp").forward(request, response);
// // 转发到studentAddPhoto.jsp页面
// request.getRequestDispatcher("/WEB-INF/student/studentAddPhoto.jsp").forward(request, response);
// return;
// }
// }
// } catch (FileUploadException e) {
// e.printStackTrace();
// }
//
// // 创建Photo对象
// Photo photo = new Photo();
// // 设置photoId
// photo.setPhotoId(id);
// // 设置photoName
// photo.setPhotoName(newFileName);
// // 创建PhotoService对象
// PhotoService service = new PhotoServiceImpl();
//
//
// Photo photo1= service.findPhotoByPhotoId(id);
// if (photo1==null) {
// service.addPhoto(photo);
// }else {
// service.updatePhoto(photo);
// }
// request.setAttribute("update_msg", "上传成功!"+String.format("%tT",new Date()));
//// request.getRequestDispatcher("/WEB-INF/index.jsp").forward(request, response);
// request.getRequestDispatcher("/WEB-INF/student/studentAddPhoto.jsp").forward(request, response);
// }
//
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// request.getRequestDispatcher("/WEB-INF/student/studentAddPhoto.jsp").forward(request, response);
// }
//}

@ -18,16 +18,37 @@ import org.apache.commons.fileupload.servlet.ServletFileUpload;
@WebServlet("/uploadServlet")
public class UploadServlet extends HttpServlet {
<<<<<<< HEAD
=======
/**
* POST
*
* @param request HTTP
* @param response HTTP
* @throws ServletException
* @throws IOException
*/
// 处理POST请求
>>>>>>> remotes/origin/develop
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置请求编码为utf-8
request.setCharacterEncoding("utf-8");
// 设置响应编码为utf-8
response.setCharacterEncoding("utf-8");
// 设置响应内容类型为text/html编码为utf-8
response.setContentType("text/html; charset=utf-8");
// 判断请求是否为文件上传
boolean isMultipart=ServletFileUpload.isMultipartContent(request);
// 如果是文件上传
if (isMultipart) {
// 创建一个文件项工厂
FileItemFactory factory = new DiskFileItemFactory();
// 创建一个文件上传对象
ServletFileUpload upload = new ServletFileUpload(factory);
// 设置文件上传对象的编码为utf-8
upload.setHeaderEncoding("utf-8");
// upload.setProgressListener(new ProgressListener(){
@ -43,11 +64,17 @@ public class UploadServlet extends HttpServlet {
// });
try {
// 解析请求,获取上传的文件项
List<FileItem> items = upload.parseRequest(request);
// 获取文件项的迭代器
Iterator<FileItem> it = items.iterator();
// 遍历文件项
while (it.hasNext()) {
// 获取下一个文件项
FileItem item = it.next();
// 获取文件项的名称
String itemname = item.getFieldName();
// 初始化学号和姓名
int sno = -1;
String sname = null;
@ -63,21 +90,31 @@ public class UploadServlet extends HttpServlet {
} else {
String filename = item.getName();
//String path=request.getSession().getServletContext().getRealPath("upload");
// 获取上传文件的路径
String path = this.getServletContext().getRealPath("upload");
// 判断上传文件的扩展名是否为jsp、htm或html
if (filename.substring(filename.lastIndexOf(".") + 1).equals("jsp")
|| filename.substring(filename.lastIndexOf(".") + 1).equals("htm")
|| filename.substring(filename.lastIndexOf(".") + 1).equals("html")) {
// 如果是,则转发到错误页面
request.getRequestDispatcher("error.jsp").forward(request, response);
} else {
// 如果不是,则打印上传文件的路径
System.out.println(path);
// 创建文件对象
File file = new File(path);
// 如果文件不存在且不是目录,则创建目录
if (!file.exists() && !file.isDirectory()) {
file.mkdir();
}
// 将上传的文件写入到指定路径
item.write(new File(path, filename));
// 设置上传成功的属性
request.setAttribute("news", filename + " 上传成功!");
// 转发到上传成功页面
request.getRequestDispatcher("/WEB-INF/admin/uploadFile.jsp").forward(request, response);
// response.sendRedirect("fileUploadIndexServlet");
// 打印上传成功的消息
System.out.println(filename + "上传成功!!!");
}
@ -93,11 +130,23 @@ public class UploadServlet extends HttpServlet {
}
}
<<<<<<< HEAD
=======
/**
*
*/
// 定义一个ProcessInfo类用于存储进程信息
>>>>>>> remotes/origin/develop
class ProcessInfo{
// 总大小
public long totalSize = 1;
// 已读大小
public long readSize = 0;
// 显示信息
public String show = "";
// 项目数量
public int itemNum = 0;
// 速率
public int rate = 0;
}
@ -105,3 +154,155 @@ public class UploadServlet extends HttpServlet {
doPost(request, response);
}
}
//package web.servlet.file;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//import java.io.File;
//import java.util.Iterator;
//import java.util.List;
//import org.apache.commons.fileupload.FileItem;
//import org.apache.commons.fileupload.FileItemFactory;
//import org.apache.commons.fileupload.FileUploadException;
//import org.apache.commons.fileupload.ProgressListener;
//import org.apache.commons.fileupload.disk.DiskFileItemFactory;
//import org.apache.commons.fileupload.servlet.ServletFileUpload;
///**
// * 文件上传的Servlet
// */
//@WebServlet("/uploadServlet")
//public class UploadServlet extends HttpServlet {
//
// /**
// * 处理POST请求用于执行文件上传操作。
// *
// * @param request HTTP请求对象包含客户端发送的数据。
// * @param response HTTP响应对象用于生成返回给客户端的响应。
// * @throws ServletException 如果处理请求时发生错误。
// * @throws IOException 如果输入或输出异常发生。
// */
// // 处理POST请求
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// // 设置请求编码为utf-8
// request.setCharacterEncoding("utf-8");
// // 设置响应编码为utf-8
// response.setCharacterEncoding("utf-8");
// // 设置响应内容类型为text/html编码为utf-8
// response.setContentType("text/html; charset=utf-8");
//
//
// // 判断请求是否为文件上传
// boolean isMultipart=ServletFileUpload.isMultipartContent(request);
// // 如果是文件上传
// if (isMultipart) {
// // 创建一个文件项工厂
// FileItemFactory factory = new DiskFileItemFactory();
// // 创建一个文件上传对象
// ServletFileUpload upload = new ServletFileUpload(factory);
// // 设置文件上传对象的编码为utf-8
// upload.setHeaderEncoding("utf-8");
//
//// upload.setProgressListener(new ProgressListener(){
//// public void update(long pBytesRead, long pContentLength, int pItems) {
//// ProcessInfo pri = new ProcessInfo();
//// pri.itemNum = pItems;
//// pri.readSize = pBytesRead;
//// pri.totalSize = pContentLength;
//// pri.show = pBytesRead+"/"+pContentLength+" byte";
//// pri.rate = Math.round(new Float(pBytesRead) / new Float(pContentLength)*100);
//// hs.setAttribute("proInfo", pri);
//// }
//// });
//
// try {
// // 解析请求,获取上传的文件项
// List<FileItem> items = upload.parseRequest(request);
// // 获取文件项的迭代器
// Iterator<FileItem> it = items.iterator();
// // 遍历文件项
// while (it.hasNext()) {
// // 获取下一个文件项
// FileItem item = it.next();
// // 获取文件项的名称
// String itemname = item.getFieldName();
// // 初始化学号和姓名
// int sno = -1;
// String sname = null;
//
// if (item.isFormField()) {
// if (itemname.equals("sno")) {
// sno = Integer.parseInt(item.getString("utf-8"));
// } else if (itemname.equals("sname")) {
// sname = item.getString("utf-8");
// sname = item.getName();
// } else {
// System.out.println("其他字段");
// }
// } else {
// String filename = item.getName();
// //String path=request.getSession().getServletContext().getRealPath("upload");
// // 获取上传文件的路径
// String path = this.getServletContext().getRealPath("upload");
// // 判断上传文件的扩展名是否为jsp、htm或html
// if (filename.substring(filename.lastIndexOf(".") + 1).equals("jsp")
// || filename.substring(filename.lastIndexOf(".") + 1).equals("htm")
// || filename.substring(filename.lastIndexOf(".") + 1).equals("html")) {
// // 如果是,则转发到错误页面
// request.getRequestDispatcher("error.jsp").forward(request, response);
// } else {
// // 如果不是,则打印上传文件的路径
// System.out.println(path);
// // 创建文件对象
// File file = new File(path);
// // 如果文件不存在且不是目录,则创建目录
// if (!file.exists() && !file.isDirectory()) {
// file.mkdir();
// }
// // 将上传的文件写入到指定路径
// item.write(new File(path, filename));
// // 设置上传成功的属性
// request.setAttribute("news", filename + " 上传成功!");
// // 转发到上传成功页面
// request.getRequestDispatcher("/WEB-INF/admin/uploadFile.jsp").forward(request, response);
//// response.sendRedirect("fileUploadIndexServlet");
// // 打印上传成功的消息
// System.out.println(filename + "上传成功!!!");
//
// }
// return;
// }
//
// }
// } catch (FileUploadException e) {
// e.printStackTrace();
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
// }
//
// /**
// * 表示文件上传或下载过程中的信息类
// */
// // 定义一个ProcessInfo类用于存储进程信息
// class ProcessInfo{
// // 总大小
// public long totalSize = 1;
// // 已读大小
// public long readSize = 0;
// // 显示信息
// public String show = "";
// // 项目数量
// public int itemNum = 0;
// // 速率
// public int rate = 0;
// }
//
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost(request, response);
// }
//}

@ -10,13 +10,32 @@ import java.io.IOException;
@WebServlet("/logoutServlet")
public class LogoutServlet extends HttpServlet {
<<<<<<< HEAD
=======
/**
* POST
*
* @param request HTTP
* @param response HTTP
* @throws ServletException
* @throws IOException
*/
// 处理POST请求
>>>>>>> remotes/origin/develop
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置请求编码为UTF-8
request.setCharacterEncoding("UTF-8");
// 获取当前会话
HttpSession session = request.getSession();
// 移除会话中的student属性
session.removeAttribute("student");
// 移除会话中的teacher属性
session.removeAttribute("teacher");
// 移除会话中的admin属性
session.removeAttribute("admin");
// 使会话失效
session.invalidate();
// 重定向到index.jsp页面
response.sendRedirect("index.jsp");
}

@ -13,32 +13,56 @@ import java.io.IOException;
public class RegisterServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
// 获取用户输入的学生ID
String studentid = request.getParameter("studentid");
// 获取用户输入的密码
String password = request.getParameter("password");
// 获取用户输入的确认密码
String repassword = request.getParameter("repassword");
// 获取用户输入的验证码
String vcode = request.getParameter("verifycode");
//从session中获取服务器生成的验证码
String checkcode_server = (String) session.getAttribute("CHECKCODE_SERVER");
session.removeAttribute("CHECKCODE_SERVER");//确保验证一次性
session.removeAttribute("CHECKCODE_SERVER");
//确保验证一次性
// 判断验证码是否正确
if (!vcode.equalsIgnoreCase(checkcode_server)){
// 如果验证码错误将错误信息、用户输入的信息存入request中
request.setAttribute("msg","验证码错误");
// 将用户输入的学号存入request中
request.setAttribute("studentid",studentid);
// 将用户输入的密码存入request中
request.setAttribute("password",password);
// 将用户输入的确认密码存入request中
request.setAttribute("repassword",repassword);
// 将请求转发到register.jsp页面
request.getRequestDispatcher("register.jsp").forward(request,response);
// 返回
return;
}else {
Student student = new Student();
// 设置学生id
student.setS_id(studentid);
// 设置学生密码
student.setS_password(password);
// 打印学生id
System.out.println(studentid);
// 打印学生密码
System.out.println(password);
// 创建学生服务对象
StudentService service= new StudentServiceImpl();
// 调用注册方法
service.register(student);
// 设置注册成功信息
request.setAttribute("msg","注册成功");
// 清空学生id
request.setAttribute("studentid","");
// 清空学生密码
request.setAttribute("password","");
// 清空确认密码
request.setAttribute("repassword","");
// 转发到注册页面
request.getRequestDispatcher("register.jsp").forward(request,response);
}
@ -48,3 +72,88 @@ public class RegisterServlet extends HttpServlet {
doPost(request,response);
}
}
//package web.servlet.login;
//
//import domain.Student;
//import service.StudentService;
//import service.impl.StudentServiceImpl;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.*;
//import java.io.IOException;
///**
// * 用户注册的Servlet
// */
//@WebServlet("/registerServlet")
//public class RegisterServlet extends HttpServlet {
// /**
// * 处理POST请求实现用户注册功能。
// *
// * @param request HTTP请求对象包含客户端发送的数据。
// * @param response HTTP响应对象用于生成返回给客户端的响应。
// * @throws ServletException 如果处理请求时发生错误。
// * @throws IOException 如果输入或输出异常发生。
// */
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// // 获取当前用户的会话
// HttpSession session = request.getSession();
// // 获取用户输入的学生ID
// String studentid = request.getParameter("studentid");
// // 获取用户输入的密码
// String password = request.getParameter("password");
// // 获取用户输入的确认密码
// String repassword = request.getParameter("repassword");
// // 获取用户输入的验证码
// String vcode = request.getParameter("verifycode");
//
// //从session中获取服务器生成的验证码
// String checkcode_server = (String) session.getAttribute("CHECKCODE_SERVER");
// session.removeAttribute("CHECKCODE_SERVER");
// //确保验证一次性
// // 判断验证码是否正确
// if (!vcode.equalsIgnoreCase(checkcode_server)){
// // 如果验证码错误将错误信息、用户输入的信息存入request中
// request.setAttribute("msg","验证码错误");
// // 将用户输入的学号存入request中
// request.setAttribute("studentid",studentid);
// // 将用户输入的密码存入request中
// request.setAttribute("password",password);
// // 将用户输入的确认密码存入request中
// request.setAttribute("repassword",repassword);
// // 将请求转发到register.jsp页面
// request.getRequestDispatcher("register.jsp").forward(request,response);
// // 返回
// return;
// }else {
// Student student = new Student();
// // 设置学生id
// student.setS_id(studentid);
// // 设置学生密码
// student.setS_password(password);
// // 打印学生id
// System.out.println(studentid);
// // 打印学生密码
// System.out.println(password);
// // 创建学生服务对象
// StudentService service= new StudentServiceImpl();
// // 调用注册方法
// service.register(student);
// // 设置注册成功信息
// request.setAttribute("msg","注册成功");
// // 清空学生id
// request.setAttribute("studentid","");
// // 清空学生密码
// request.setAttribute("password","");
// // 清空确认密码
// request.setAttribute("repassword","");
// // 转发到注册页面
// request.getRequestDispatcher("register.jsp").forward(request,response);
//
// }
// }
//
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost(request,response);
// }
//}

@ -37,3 +37,42 @@ public class AddNotifyServlet extends HttpServlet {
doPost(request,response);
}
}
//package web.servlet.notify;
//
//import domain.Notify;
//import org.apache.commons.beanutils.BeanUtils;
//import service.NotifyService;
//import service.impl.NotifyServiceImpl;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//import java.lang.reflect.InvocationTargetException;
//import java.text.SimpleDateFormat;
//import java.util.Date;
//import java.util.List;
//import java.util.Map;
//
//@WebServlet("/addNotifyServlet")
//public class AddNotifyServlet extends HttpServlet {
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// request.setCharacterEncoding("utf-8");
//
// //获取参数-
// Notify notify = new Notify();
// notify.setNotifyInfo((String) request.getParameter("notifyInfo"));
// Date d = new Date();
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// notify.setNotifyDate(sdf.format(d));
// NotifyService service = new NotifyServiceImpl();
// service.addNotify(notify);
//// response.sendRedirect("/notifyListServlet");
// request.getRequestDispatcher("/notifyListServlet").forward(request,response);
// }
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost(request,response);
// }
//}

@ -27,3 +27,43 @@ public class DeleteNotifyServlet extends HttpServlet {
doPost(request,response);
}
}
//package web.servlet.notify;
//
//import domain.Student;
//import service.NotifyService;
//import service.impl.NotifyServiceImpl;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//import java.io.IOException;
///**
// * 删除通知的Servlet
// */
//@WebServlet("/deleteNotifyServlet")
//public class DeleteNotifyServlet extends HttpServlet {
// /**
// * 处理POST请求删除指定ID的通知。
// *
// * @param request HTTP请求对象包含客户端发送的数据。
// * @param response HTTP响应对象用于生成返回给客户端的响应。
// * @throws ServletException 如果处理请求时发生错误。
// * @throws IOException 如果输入或输出异常发生。
// */
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// // 设置请求的字符编码为UTF-8以支持中文字符的正确处理
// request.setCharacterEncoding("utf-8");
// HttpSession session = request.getSession();
// String notifyid = request.getParameter("id");
// NotifyService service = new NotifyServiceImpl();
// service.deleteNotifyById(notifyid);
// request.getRequestDispatcher("/notifyListServlet").forward(request,response);
// }
//
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost(request,response);
// }
//}

@ -25,3 +25,42 @@ public class NotifyListServlet extends HttpServlet {
doPost(request,response);
}
}
//package web.servlet.notify;
//
//import domain.Notify;
//import service.NotifyService;
//import service.impl.NotifyServiceImpl;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//import java.util.List;
///**
// * 显示通知列表的Servlet
// */
//@WebServlet("/notifyListServlet")
//public class NotifyListServlet extends HttpServlet {
// /**
// * 处理POST请求获取所有通知并转发到通知列表页面。
// *
// * @param request HTTP请求对象包含客户端发送的数据。
// * @param response HTTP响应对象用于生成返回给客户端的响应。
// * @throws ServletException 如果处理请求时发生错误。
// * @throws IOException 如果输入或输出异常发生。
// */
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// // 设置请求的字符编码为UTF-8以支持中文字符的正确处理
// request.setCharacterEncoding("utf-8");
// // 创建通知服务的实例,以便获取通知数据
// NotifyService service = new NotifyServiceImpl();
// List<Notify> notifys = service.findAll();
// request.setAttribute("notifys",notifys);
// request.getRequestDispatcher("/WEB-INF/notify/notifyList.jsp").forward(request,response);
// }
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost(request,response);
// }
//}

@ -24,13 +24,19 @@ public class NotifyListToServlet extends HttpServlet {
List<Notify> notifys = service.findAll();
request.setAttribute("notifys",notifys);
// 获取当前会话
HttpSession session = request.getSession();
// 从会话中获取学生对象
Student student= (Student)session.getAttribute("student");
// 从会话中获取教师对象
Teacher teacher= (Teacher)session.getAttribute("teacher");
// 如果会话中存在学生对象且不存在教师对象,则转发到学生通知列表页面
if (student != null && teacher == null) {
request.getRequestDispatcher("/WEB-INF/notify/notifyListToStudent.jsp").forward(request,response);
// 如果会话中存在教师对象且不存在学生对象,则转发到教师通知列表页面
} else if (teacher != null && student == null) {
request.getRequestDispatcher("/WEB-INF/notify/notifyListToTeacher.jsp").forward(request,response);
// 如果会话中既不存在学生对象也不存在教师对象,则转发到错误页面
} else {
request.getRequestDispatcher("error.jsp").forward(request, response);
}
@ -41,3 +47,64 @@ public class NotifyListToServlet extends HttpServlet {
doPost(request,response);
}
}
//package web.servlet.notify;
//
//import domain.Admin;
//import domain.Notify;
//import domain.Student;
//import domain.Teacher;
//import service.NotifyService;
//import service.impl.NotifyServiceImpl;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//import java.io.IOException;
//import java.util.List;
///**
// * 转发到通知列表的Servlet
// */
//@WebServlet("/notifyListToServlet")
//public class NotifyListToServlet extends HttpServlet {
// /**
// * 处理POST请求获取所有通知并转发到通知列表页面。
// *
// * @param request HTTP请求对象包含客户端发送的数据。
// * @param response HTTP响应对象用于生成返回给客户端的响应。
// * @throws ServletException 如果处理请求时发生错误。
// * @throws IOException 如果输入或输出异常发生。
// */
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// // 设置请求的字符编码为UTF-8以支持中文字符的正确处理
// request.setCharacterEncoding("utf-8");
// // 创建通知服务的实例,以便获取通知数据
// NotifyService service = new NotifyServiceImpl();
// List<Notify> notifys = service.findAll();
// request.setAttribute("notifys",notifys);
//
// // 获取当前会话
// HttpSession session = request.getSession();
// // 从会话中获取学生对象
// Student student= (Student)session.getAttribute("student");
// // 从会话中获取教师对象
// Teacher teacher= (Teacher)session.getAttribute("teacher");
// // 如果会话中存在学生对象且不存在教师对象,则转发到学生通知列表页面
// if (student != null && teacher == null) {
// request.getRequestDispatcher("/WEB-INF/notify/notifyListToStudent.jsp").forward(request,response);
// // 如果会话中存在教师对象且不存在学生对象,则转发到教师通知列表页面
// } else if (teacher != null && student == null) {
// request.getRequestDispatcher("/WEB-INF/notify/notifyListToTeacher.jsp").forward(request,response);
// // 如果会话中既不存在学生对象也不存在教师对象,则转发到错误页面
// } else {
// request.getRequestDispatcher("error.jsp").forward(request, response);
// }
//
// }
//
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost(request,response);
// }
//}

@ -17,3 +17,27 @@ public class NotifyServlet extends HttpServlet {
doPost(request,response);
}
}
//package web.servlet.notify;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//
//@WebServlet("/notifyServlet")
//public class NotifyServlet extends HttpServlet {
//
// // 处理POST请求的方法
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// // 将请求转发到指定的JSP页面
// request.getRequestDispatcher("/WEB-INF/notify/addNotify.jsp").forward(request, response);
// }
//
// // 处理GET请求的方法
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// // 将GET请求转发到doPost方法进行处理
// doPost(request, response);
// }
//}

@ -33,23 +33,40 @@ public class FindStudentByPageServlet extends HttpServlet {
//获取条件查询参数
Map<String,String[]> condition = request.getParameterMap();
//创建StudentService对象
StudentService service = new StudentServiceImpl();
//调用findStudentByPage方法传入当前页码、每页显示的行数和查询条件返回PageBean<Student>对象
PageBean<Student> pb = service.findStudentByPage(currentPage,rows,condition);
//将PageBean<Student>对象存入request域中
request.setAttribute("pb",pb);
<<<<<<< HEAD
request.setAttribute("condition",condition);//存入查询条件
=======
//将查询条件存入request域中
request.setAttribute("condition",condition);//存入查询条件-
//设置request的字符编码为utf-8
>>>>>>> remotes/origin/develop
request.setCharacterEncoding("utf-8");
//获取session对象
HttpSession session = request.getSession();
//从session中获取Student对象
Student student= (Student)session.getAttribute("student");
// 从session中获取admin对象
Admin admin= (Admin)session.getAttribute("admin");
// 从session中获取teacher对象
Teacher teacher= (Teacher)session.getAttribute("teacher");
// 如果student对象不为空admin对象为空teacher对象为空则跳转到student的查找学生列表页面
if (student != null && admin == null && teacher == null) {
request.getRequestDispatcher("/WEB-INF/student/sFindStudentList.jsp").forward(request, response);
// 如果admin对象不为空student对象为空teacher对象为空则跳转到admin的查找学生列表页面
} else if (admin != null && student == null && teacher == null) {
request.getRequestDispatcher("/WEB-INF/admin/aFindStudentList.jsp").forward(request, response);
// 如果teacher对象不为空admin对象为空student对象为空则跳转到teacher的查找学生列表页面
} else if (teacher != null && admin == null && student == null) {
request.getRequestDispatcher("/WEB-INF/teacher/tFindStudentList.jsp").forward(request, response);
// 否则跳转到错误页面
} else {
request.getRequestDispatcher("error.jsp").forward(request, response);
}
@ -59,3 +76,79 @@ public class FindStudentByPageServlet extends HttpServlet {
doPost(request,response);
}
}
//package web.servlet.page;
//
//import domain.Admin;
//import domain.PageBean;
//import domain.Student;
//import domain.Teacher;
//import service.StudentService;
//import service.impl.StudentServiceImpl;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//import java.io.IOException;
//import java.util.Map;
//
//@WebServlet("/findStudentByPageServlet")
//public class FindStudentByPageServlet extends HttpServlet {
// // 处理POST请求的方法-
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// // 设置请求的字符编码为UTF-8以支持中文字符-
// request.setCharacterEncoding("utf-8");
// String currentPage = request.getParameter("currentPage");//当前页码
// String rows = request.getParameter("rows");//每页显示条数
//
// if (currentPage == null || "".equals(currentPage)) {
// currentPage = "1";
// }
// if (rows == null || "".equals(rows)) {
// rows = "5";
// }
//
// //获取条件查询参数-
// Map<String,String[]> condition = request.getParameterMap();
//
// //创建StudentService对象
// StudentService service = new StudentServiceImpl();
// //调用findStudentByPage方法传入当前页码、每页显示的行数和查询条件返回PageBean<Student>对象
// PageBean<Student> pb = service.findStudentByPage(currentPage,rows,condition);
//
// //将PageBean<Student>对象存入request域中
// request.setAttribute("pb",pb);
// //将查询条件存入request域中
// request.setAttribute("condition",condition);//存入查询条件-
// //设置request的字符编码为utf-8
// request.setCharacterEncoding("utf-8");
// //获取session对象
// HttpSession session = request.getSession();
// //从session中获取Student对象
// Student student= (Student)session.getAttribute("student");
//
// // 从session中获取admin对象
// Admin admin= (Admin)session.getAttribute("admin");
// // 从session中获取teacher对象
// Teacher teacher= (Teacher)session.getAttribute("teacher");
// // 如果student对象不为空admin对象为空teacher对象为空则跳转到student的查找学生列表页面
// if (student != null && admin == null && teacher == null) {
// request.getRequestDispatcher("/WEB-INF/student/sFindStudentList.jsp").forward(request, response);
// // 如果admin对象不为空student对象为空teacher对象为空则跳转到admin的查找学生列表页面
// } else if (admin != null && student == null && teacher == null) {
// request.getRequestDispatcher("/WEB-INF/admin/aFindStudentList.jsp").forward(request, response);
// // 如果teacher对象不为空admin对象为空student对象为空则跳转到teacher的查找学生列表页面
// } else if (teacher != null && admin == null && student == null) {
// request.getRequestDispatcher("/WEB-INF/teacher/tFindStudentList.jsp").forward(request, response);
// // 否则跳转到错误页面
// } else {
// request.getRequestDispatcher("error.jsp").forward(request, response);
// }
// }
//
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost(request,response);
// }
//}

@ -23,3 +23,39 @@ public class DeleteSelectStudentServlet extends HttpServlet {
doPost(request,response);
}
}
//package web.servlet.student;
//
//import service.StudentService;
//import service.impl.StudentServiceImpl;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//
//@WebServlet("/deleteSelectStudentServlet")
//// 删除选定学生的Servlet
//public class DeleteSelectStudentServlet extends HttpServlet {
//
// // 处理POST请求
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// // 获取选定学生的ID数组
// String[] sids = request.getParameterValues("sid");
//
// // 创建学生服务的实例
// StudentService service = new StudentServiceImpl();
//
// // 调用服务方法删除选定的学生
// service.deleteSelectStudent(sids);
//
// // 重定向到查找学生的页面
// response.sendRedirect(request.getContextPath() + "/findStudentByPageServlet");
// }
//
// // 处理GET请求直接调用doPost方法
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost(request, response);
// }
//}

@ -29,3 +29,50 @@ public class DeleteStudentServlet extends HttpServlet {
doPost(request,response);
}
}
//package web.servlet.student;
//
//import service.NotifyService;
//import service.StudentService;
//import service.impl.NotifyServiceImpl;
//import service.impl.StudentServiceImpl;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//import java.io.IOException;
//
//@WebServlet("/deleteStudentServlet")
//// 删除学生的Servlet
//public class DeleteStudentServlet extends HttpServlet {
//
// // 处理POST请求
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// // 设置请求的字符编码为UTF-8
// request.setCharacterEncoding("utf-8");
//
// // 获取当前会话
// HttpSession session = request.getSession();
//
// // 获取要删除的学生ID
// String studentid = request.getParameter("s_id");
//
// // 创建学生服务的实例
// StudentService service = new StudentServiceImpl();
//
// // 调用服务方法通过学生ID删除学生
// service.deleteStudentById(studentid);
//
// // 重定向到查找学生的页面
// response.sendRedirect("findStudentByPageServlet");
// // 如果需要使用转发,可以使用下面的代码
// // request.getRequestDispatcher("/findStudentByPageServlet").forward(request, response);
// }
//
// // 处理GET请求直接调用doPost方法
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost(request, response);
// }
//}

@ -61,3 +61,76 @@ public class DoSelectCourseServlet extends HttpServlet {
doPost(request,response);
}
}
//package web.servlet.student;
//
//import domain.Course;
//import domain.SelectCourse;
//import domain.Student;
//import service.StudentService;
//import service.impl.StudentServiceImpl;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//import java.io.IOException;
//import java.util.Date;
//import java.util.List;
//
//@WebServlet("/doSelectCourseServlet")
//public class DoSelectCourseServlet extends HttpServlet {
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// request.setCharacterEncoding("utf-8");
// HttpSession session = request.getSession();
// Student student= (Student)session.getAttribute("student");
// String courseid = request.getParameter("id");
// //存不存在已选该课
// //1
// //2
// //3
// //4
// //5
// //6
// //7
// //8
// //9
// //0
// boolean flag = false;
//
// //判断是否已选
// StudentService studentService = new StudentServiceImpl();
// List<SelectCourse> selectcourses = studentService.findAllSelectCourse(student.getS_id());
// for (SelectCourse s:selectcourses) {
// if (s.getC_id().equals(courseid)) {
// flag = true;
// break;
// }
// }
// if (flag == true) {
//
// request.setAttribute("select_msg", "你已选了该课程!" + String.format("%tT", new Date()));
// request.getRequestDispatcher("studentOptionalCourseServlet").forward(request, response);
//// response.sendRedirect("studentOptionalCourseServlet");
// } else {
// //获取到当前学生id
// String studentid = student.getS_id();
//
// //获取当前行的课程id courseid
//
// //调用学生添加选课服务s_id c_id score select_course添加
// StudentService Service = new StudentServiceImpl();
// Service.addSelectCourse(studentid,courseid);
//
// //完成后给提示跳转
// request.setAttribute("select_msg", "选课成功!" + String.format("%tT", new Date()));
// request.getRequestDispatcher("studentOptionalCourseServlet").forward(request, response);
// }
//
// }
//
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost(request,response);
// }
//}

@ -20,16 +20,30 @@ public class StudentInfomationUpdateServlet extends HttpServlet {
request.setCharacterEncoding("utf-8");
<<<<<<< HEAD
//保存输入内容
=======
//保存输入内容-
// 获取学生ID
>>>>>>> remotes/origin/develop
String sid = request.getParameter("student-id");
// 获取学生姓名
String name = request.getParameter("student-name");
// 获取学生性别
String sex = request.getParameter("student-sex");
// 获取学生年龄
String age = request.getParameter("student-age");
// 获取学生电话
String phone = request.getParameter("student-phone");
// 获取学生邮箱
String email = request.getParameter("student-email");
// 获取学生地址
String address = request.getParameter("student-address");
// 获取学生所在学院
String college = request.getParameter("selectCollege");
// 获取学生所在系
String department = request.getParameter("selectDepartment");
// 获取学生所在班级
String cclass = request.getParameter("selectClass");
Student updateStudent = new Student();
@ -42,16 +56,30 @@ public class StudentInfomationUpdateServlet extends HttpServlet {
request.getRequestDispatcher("/WEB-INF/student/sInformation.jsp").forward(request, response);
// response.sendRedirect("studentInfomationServlet");
}else {
<<<<<<< HEAD
//封装学生对象
=======
//封装学生对象-
// 设置学生ID
>>>>>>> remotes/origin/develop
updateStudent.setS_id(sid);
// 设置学生姓名
updateStudent.setS_name(name);
// 设置学生性别
updateStudent.setS_sex(sex);
// 设置学生年龄
updateStudent.setS_age(age);
// 设置学生电话
updateStudent.setS_phone(phone);
// 设置学生邮箱
updateStudent.setS_email(email);
// 设置学生地址
updateStudent.setS_address(address);
// 设置学生学院
updateStudent.setS_college(college);
// 设置学生系别
updateStudent.setS_department(department);
// 设置学生班级
updateStudent.setS_class(cclass);
//调用studentUpdata服务
@ -74,3 +102,119 @@ public class StudentInfomationUpdateServlet extends HttpServlet {
doPost(request,response);
}
}
//package web.servlet.student;
//
//import domain.Student;
//import service.StudentService;
//import service.impl.StudentServiceImpl;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//import java.io.IOException;
//import java.text.SimpleDateFormat;
//import java.util.Date;
//
//@WebServlet("/studentInfomationUpdateServlet")
//public class StudentInfomationUpdateServlet extends HttpServlet {
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//
// request.setCharacterEncoding("utf-8");
//
// //保存输入内容-
// // 获取学生ID
// String sid = request.getParameter("student-id");
// // 获取学生姓名
// String name = request.getParameter("student-name");
// // 获取学生性别
// String sex = request.getParameter("student-sex");
// // 获取学生年龄
// String age = request.getParameter("student-age");
// // 获取学生电话
// String phone = request.getParameter("student-phone");
// // 获取学生邮箱
// String email = request.getParameter("student-email");
// // 获取学生地址
// String address = request.getParameter("student-address");
// // 获取学生所在学院
// String college = request.getParameter("selectCollege");
// // 获取学生所在系
// String department = request.getParameter("selectDepartment");
// // 获取学生所在班级
// String cclass = request.getParameter("selectClass");
// //String sid = request.getParameter("student-id");
// // String name = request.getParameter("student-name");
// // String sex = request.getParameter("student-sex");
// // String age = request.getParameter("student-age");
// // String phone = request.getParameter("student-phone");
// // String email = request.getParameter("student-email");
// // String address = request.getParameter("student-address");
// // String college = request.getParameter("selectCollege");
// // String department = request.getParameter("selectDepartment");
// // String cclass = request.getParameter("selectClass");
//
// Student updateStudent = new Student();
//
//
// //判断输入位数是否大于数据库位数-
// if (name.length() > 4 || phone.length() > 11 || email.length()>24 || address.length() > 24 || age.length()>2 || name.contains("<") || phone.contains("<") || email.contains("<") || address.contains("<") || age.contains("<")) {
// request.setAttribute("update_msg","格式错误,请重新提交!"+String.format("%tT",new Date()));
//
// request.getRequestDispatcher("/WEB-INF/student/sInformation.jsp").forward(request, response);
//// response.sendRedirect("studentInfomationServlet");
// }else {
// //封装学生对象-
// // 设置学生ID
// updateStudent.setS_id(sid);
// // 设置学生姓名
// updateStudent.setS_name(name);
// // 设置学生性别
// updateStudent.setS_sex(sex);
// // 设置学生年龄
// updateStudent.setS_age(age);
// // 设置学生电话
// updateStudent.setS_phone(phone);
// // 设置学生邮箱
// updateStudent.setS_email(email);
// // 设置学生地址
// updateStudent.setS_address(address);
// // 设置学生学院
// updateStudent.setS_college(college);
// // 设置学生系别
// updateStudent.setS_department(department);
// // 设置学生班级
// updateStudent.setS_class(cclass);
// //updateStudent.setS_id(sid);
// // updateStudent.setS_name(name);
// // updateStudent.setS_sex(sex);
// // updateStudent.setS_age(age);
// // updateStudent.setS_phone(phone);
// // updateStudent.setS_email(email);
// // updateStudent.setS_address(address);
// // updateStudent.setS_college(college);
// // updateStudent.setS_department(department);
// // updateStudent.setS_class(cclass);
//
// //调用studentUpdata服务-
// StudentService service= new StudentServiceImpl();
// service.updateInfo(updateStudent);
//
// HttpSession session = request.getSession();
//
// Student s = service.findStudentById(updateStudent);
// session.setAttribute("student",s);
//
// //成功则返回并给提示-
// request.setAttribute("update_msg", "修改成功!"+String.format("%tT",new Date()));
// request.setAttribute("student",updateStudent);
// request.getRequestDispatcher("/WEB-INF/student/sInformation.jsp").forward(request, response);
// }
// }
//
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost(request,response);
// }
//}

@ -26,16 +26,24 @@ public class StudentListServlet extends HttpServlet {
request.setCharacterEncoding("utf-8");
// 获取当前会话
HttpSession session = request.getSession();
// 从会话中获取学生对象
Student student= (Student)session.getAttribute("student");
// 从会话中获取管理员对象
Admin admin= (Admin)session.getAttribute("admin");
// 从会话中获取教师对象
Teacher teacher= (Teacher)session.getAttribute("teacher");
// 如果会话中存在学生对象,且不存在管理员对象和教师对象,则跳转到学生列表页面
if (student != null && admin == null && teacher == null) {
request.getRequestDispatcher("/WEB-INF/student/studentList.jsp").forward(request, response);
// 如果会话中存在管理员对象,且不存在学生对象和教师对象,则跳转到管理员查找学生列表页面
} else if (admin != null && student == null && teacher == null) {
request.getRequestDispatcher("/WEB-INF/admin/aFindStudentList.jsp").forward(request, response);
// 如果会话中存在教师对象,且不存在学生对象和管理员对象,则跳转到教师查找学生列表页面
} else if (teacher != null && admin == null && student == null) {
request.getRequestDispatcher("/WEB-INF/teacher/tFindStudentList.jsp").forward(request, response);
// 如果会话中不存在学生对象、管理员对象和教师对象,则跳转到错误页面
} else {
request.getRequestDispatcher("error.jsp").forward(request, response);
}
@ -45,3 +53,71 @@ public class StudentListServlet extends HttpServlet {
this.doPost(request,response);
}
}
//package web.servlet.student;
//
//import domain.Admin;
//import domain.Student;
//import domain.Teacher;
//import service.StudentService;
//import service.impl.StudentServiceImpl;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//import java.io.IOException;
//import java.util.List;
//
//@WebServlet("/studentListServlet")
//public class StudentListServlet extends HttpServlet {
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// //调用StudentService完成查询-
// StudentService studentService = new StudentServiceImpl();
// List<Student> students = studentService.findAll();
// //将list存入request域-
// request.setAttribute("students",students);
//
// request.setCharacterEncoding("utf-8");
//
// // 获取当前会话
// HttpSession session = request.getSession();
// // 从会话中获取学生对象
// Student student= (Student)session.getAttribute("student");
// // 从会话中获取管理员对象
// Admin admin= (Admin)session.getAttribute("admin");
// // 从会话中获取教师对象
// Teacher teacher= (Teacher)session.getAttribute("teacher");
// // 如果会话中存在学生对象,且不存在管理员对象和教师对象,则跳转到学生列表页面
// if (student != null && admin == null && teacher == null) {
// request.getRequestDispatcher("/WEB-INF/student/studentList.jsp").forward(request, response);
// // 如果会话中存在管理员对象,且不存在学生对象和教师对象,则跳转到管理员查找学生列表页面
// } else if (admin != null && student == null && teacher == null) {
// request.getRequestDispatcher("/WEB-INF/admin/aFindStudentList.jsp").forward(request, response);
// // 如果会话中存在教师对象,且不存在学生对象和管理员对象,则跳转到教师查找学生列表页面
// } else if (teacher != null && admin == null && student == null) {
// request.getRequestDispatcher("/WEB-INF/teacher/tFindStudentList.jsp").forward(request, response);
// // 如果会话中不存在学生对象、管理员对象和教师对象,则跳转到错误页面
// } else {
// request.getRequestDispatcher("error.jsp").forward(request, response);
// }
// }
// // HttpSession session = request.getSession();
// // Student student= (Student)session.getAttribute("student");
// // Admin admin= (Admin)session.getAttribute("admin");
// // Teacher teacher= (Teacher)session.getAttribute("teacher");
// // if (student != null && admin == null && teacher == null) {
// // request.getRequestDispatcher("/WEB-INF/student/studentList.jsp").forward(request, response);
// // } else if (admin != null && student == null && teacher == null) {
// // request.getRequestDispatcher("/WEB-INF/admin/aFindStudentList.jsp").forward(request, response);
// // } else if (teacher != null && admin == null && student == null) {
// // request.getRequestDispatcher("/WEB-INF/teacher/tFindStudentList.jsp").forward(request, response);
// // } else {
// // request.getRequestDispatcher("error.jsp").forward(request, response);
// // }
//
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// this.doPost(request,response);
// }
//}

@ -18,10 +18,15 @@ import java.util.List;
@WebServlet("/studentOptionalCourseServlet")
public class StudentOptionalCourseServlet extends HttpServlet {
// 处理POST请求
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置请求编码为utf-8
request.setCharacterEncoding("utf-8");
// 获取当前会话
HttpSession session = request.getSession();
// 从会话中获取学生对象
Student student= (Student)session.getAttribute("student");
// 从会话中获取管理员对象
Admin admin =(Admin)session.getAttribute("admin");
//调用StudentService完成查询
@ -31,10 +36,13 @@ public class StudentOptionalCourseServlet extends HttpServlet {
request.setAttribute("optionalcourses",optionalcourses);
//转发到list.jsp
// 如果student不为空且admin为空则跳转到studentOptionalCourse.jsp页面
if (student != null && admin == null) {
request.getRequestDispatcher("/WEB-INF/student/studentOptionalCourse.jsp").forward(request,response);
// 如果admin不为空且student为空则跳转到allStudentOptionalCourse.jsp页面
} else if (admin != null && student == null) {
request.getRequestDispatcher("/WEB-INF/admin/allStudentOptionalCourse.jsp").forward(request, response);
// 否则跳转到error.jsp页面
} else {
request.getRequestDispatcher("error.jsp").forward(request, response);
}
@ -45,3 +53,65 @@ public class StudentOptionalCourseServlet extends HttpServlet {
this.doPost(request,response);
}
}
//package web.servlet.student;
//
//import domain.Admin;
//import domain.Course;
//import domain.SelectCourse;
//import domain.Student;
//import service.StudentService;
//import service.impl.StudentServiceImpl;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//import java.io.IOException;
//import java.util.List;
//
//@WebServlet("/studentOptionalCourseServlet")
//public class StudentOptionalCourseServlet extends HttpServlet {
// // 处理POST请求
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// // 设置请求编码为utf-8
// request.setCharacterEncoding("utf-8");
// // 获取当前会话
// HttpSession session = request.getSession();
// // 从会话中获取学生对象
// Student student= (Student)session.getAttribute("student");
// // 从会话中获取管理员对象
// Admin admin =(Admin)session.getAttribute("admin");
//
// //调用StudentService完成查询-
// StudentService studentService = new StudentServiceImpl();
// List<Course> optionalcourses = studentService.findAllOptionalCourse();
// //将list存入request域-
// request.setAttribute("optionalcourses",optionalcourses);
// //转发到list.jsp-
//
// // 如果student不为空且admin为空则跳转到studentOptionalCourse.jsp页面
// if (student != null && admin == null) {
// request.getRequestDispatcher("/WEB-INF/student/studentOptionalCourse.jsp").forward(request,response);
// // 如果admin不为空且student为空则跳转到allStudentOptionalCourse.jsp页面
// } else if (admin != null && student == null) {
// request.getRequestDispatcher("/WEB-INF/admin/allStudentOptionalCourse.jsp").forward(request, response);
// // 否则跳转到error.jsp页面
// } else {
// request.getRequestDispatcher("error.jsp").forward(request, response);
// }
// //if (student != null && admin == null) {
// // request.getRequestDispatcher("/WEB-INF/student/studentOptionalCourse.jsp").forward(request,response);
// // } else if (admin != null && student == null) {
// // request.getRequestDispatcher("/WEB-INF/admin/allStudentOptionalCourse.jsp").forward(request, response);
// // } else {
// // request.getRequestDispatcher("error.jsp").forward(request, response);
// // }
//
// }
//
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// this.doPost(request,response);
// }
//}

@ -16,30 +16,50 @@ import java.util.Date;
@WebServlet("/studentPasswordUpdateServlet")
public class StudentPasswordUpdateServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
<<<<<<< HEAD
=======
// 设置请求的字符编码为UTF-8以支持中文
// 设置请求的字符编码为utf-8
>>>>>>> remotes/origin/develop
request.setCharacterEncoding("utf-8");
// 获取当前会话
HttpSession session = request.getSession();
// 从会话中获取学生对象
Student student= (Student)session.getAttribute("student");
// 获取学生id
String studentid = student.getS_id();
// 获取新密码
String newpassword = request.getParameter("student-newpassword");
// 获取确认新密码
String ennewpassword = request.getParameter("student-ennewpassword");
// 定义正则表达式匹配3-12位字母、数字、下划线
String regex = "^[\\w]{3,12}$";
// 判断新密码是否符合正则表达式
// 判断新密码是否符合正则表达式
boolean flag = newpassword.matches(regex);
// 如果不符合,则设置错误信息,并跳转到修改密码页面
if (!flag) {
request.setAttribute("update_msg", "密码格式错误,重新提交!"+String.format("%tT",new Date()));
request.getRequestDispatcher("/WEB-INF/student/studentUpdatePassword.jsp").forward(request, response);
// 如果新密码和确认密码不一致,则设置错误信息,并跳转到修改密码页面
} else if (!newpassword.equals(ennewpassword)) {
request.setAttribute("update_msg", "密码确认错误,请重新提交!" + String.format("%tT", new Date()));
request.getRequestDispatcher("/WEB-INF/student/studentUpdatePassword.jsp").forward(request, response);
// 如果新密码和确认密码一致,则调用服务层更新密码
} else {
StudentService service= new StudentServiceImpl();
service.updatePassword(studentid,newpassword);
// 根据学号查询学生信息
Student newStudent = service.findStudentById(student);
// 更新学生信息
student = newStudent;
// 将学生信息存入session
session.setAttribute("student",student);
// 设置成功信息,并跳转到修改密码页面
request.setAttribute("update_msg", "修改成功!" + String.format("%tT", new Date()));
request.getRequestDispatcher("/WEB-INF/student/studentUpdatePassword.jsp").forward(request, response);
}
@ -50,3 +70,103 @@ public class StudentPasswordUpdateServlet extends HttpServlet {
doPost(request,response);
}
}
//package web.servlet.student;
//
//import domain.Student;
//import service.StudentService;
//import service.impl.StudentServiceImpl;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//import java.io.IOException;
//import java.util.Date;
//
//@WebServlet("/studentPasswordUpdateServlet")
//// 学生密码更新Servlet
//public class StudentPasswordUpdateServlet extends HttpServlet {
// // 处理POST请求
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// // 设置请求的字符编码为UTF-8以支持中文
// // 设置请求的字符编码为utf-8
// request.setCharacterEncoding("utf-8");
// // 获取当前会话
// HttpSession session = request.getSession();
// // 从会话中获取学生对象
// Student student= (Student)session.getAttribute("student");
//
// // 获取学生id
// String studentid = student.getS_id();
// // 获取新密码
// String newpassword = request.getParameter("student-newpassword");
// // 获取确认新密码
// String ennewpassword = request.getParameter("student-ennewpassword");
// // 定义正则表达式匹配3-12位字母、数字、下划线
// String regex = "^[\\w]{3,12}$";
// // 判断新密码是否符合正则表达式
// // 判断新密码是否符合正则表达式
// boolean flag = newpassword.matches(regex);
// // 如果不符合,则设置错误信息,并跳转到修改密码页面
// if (!flag) {
// request.setAttribute("update_msg", "密码格式错误,重新提交!"+String.format("%tT",new Date()));
// request.getRequestDispatcher("/WEB-INF/student/studentUpdatePassword.jsp").forward(request, response);
// // 如果新密码和确认密码不一致,则设置错误信息,并跳转到修改密码页面
// } else if (!newpassword.equals(ennewpassword)) {
// request.setAttribute("update_msg", "密码确认错误,请重新提交!" + String.format("%tT", new Date()));
// request.getRequestDispatcher("/WEB-INF/student/studentUpdatePassword.jsp").forward(request, response);
// // 如果新密码和确认密码一致,则调用服务层更新密码
// } else {
//
// StudentService service= new StudentServiceImpl();
// service.updatePassword(studentid,newpassword);
//
// // 根据学号查询学生信息
// Student newStudent = service.findStudentById(student);
// // 更新学生信息
// student = newStudent;
// // 将学生信息存入session
// session.setAttribute("student",student);
//
// // 设置成功信息,并跳转到修改密码页面
// request.setAttribute("update_msg", "修改成功!" + String.format("%tT", new Date()));
// request.getRequestDispatcher("/WEB-INF/student/studentUpdatePassword.jsp").forward(request, response);
// }
//
// }
// // request.setCharacterEncoding("utf-8");
// // HttpSession session = request.getSession();
// // Student student= (Student)session.getAttribute("student");
// //
// // String studentid = student.getS_id();
// // String newpassword = request.getParameter("student-newpassword");
// // String ennewpassword = request.getParameter("student-ennewpassword");
// // String regex = "^[\\w]{3,12}$";
// // boolean flag = newpassword.matches(regex);
// // if (!flag) {
// // request.setAttribute("update_msg", "密码格式错误,重新提交!"+String.format("%tT",new Date()));
// // request.getRequestDispatcher("/WEB-INF/student/studentUpdatePassword.jsp").forward(request, response);
// // } else if (!newpassword.equals(ennewpassword)) {
// // request.setAttribute("update_msg", "密码确认错误,请重新提交!" + String.format("%tT", new Date()));
// // request.getRequestDispatcher("/WEB-INF/student/studentUpdatePassword.jsp").forward(request, response);
// // } else {
// //
// // StudentService service= new StudentServiceImpl();
// // service.updatePassword(studentid,newpassword);
// //
// // Student newStudent = service.findStudentById(student);
// // student = newStudent;
// // session.setAttribute("student",student);
// //
// // request.setAttribute("update_msg", "修改成功!" + String.format("%tT", new Date()));
// // request.getRequestDispatcher("/WEB-INF/student/studentUpdatePassword.jsp").forward(request, response);
// // }
// //
// // }
//
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doPost(request,response);
// }
//}

@ -18,11 +18,16 @@ import java.util.List;
@WebServlet("/studentSelectCourseListServlet")
public class StudentSelectCourseListServlet extends HttpServlet {
// 处理POST请求
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置请求编码为utf-8
request.setCharacterEncoding("utf-8");
// 获取当前会话
HttpSession session = request.getSession();
// 从会话中获取学生对象
Student student= (Student)session.getAttribute("student");
// 从会话中获取管理员对象
Admin admin =(Admin)session.getAttribute("admin");
//调用StudentService完成查询
@ -31,13 +36,20 @@ public class StudentSelectCourseListServlet extends HttpServlet {
List<SelectCourse> selectcourses = studentService.findAllSelectCourse(student.getS_id());
//将list存入request域
request.setAttribute("selectcourses",selectcourses);
<<<<<<< HEAD
//转发到list.jsp
=======
//转发到list.jsp-
// 如果学生不为空,则跳转到学生选课列表页面
>>>>>>> remotes/origin/develop
request.getRequestDispatcher("/WEB-INF/student/studentSelectCourseList.jsp").forward(request,response);
} else if (admin != null && student == null) {
// 如果管理员不为空,学生为空,则查询所有学生的选课列表,并跳转到管理员查看所有学生选课列表页面
List<SelectCourse> selectcourses = studentService.findSelectCourseAllStudent();
request.setAttribute("selectcourses", selectcourses);
request.getRequestDispatcher("/WEB-INF/admin/allStudentSelectCourseList.jsp").forward(request, response);
} else {
// 否则,跳转到错误页面
request.getRequestDispatcher("error.jsp").forward(request, response);
}

@ -28,15 +28,24 @@ public class AddOptionalCourseServlet extends HttpServlet {
CourseService service = new CourseServiceImpl();
Course course = service.findSelectCourseByCourseId(cid);
// 判断课程是否为空
if (course != null) {
// 设置请求属性提示课程ID冲突
request.setAttribute("update_msg","课程ID冲突请重新添加"+String.format("%tT",new Date()));
// 转发到添加可选课程页面
request.getRequestDispatcher("/WEB-INF/teacher/addOptionalCourse.jsp").forward(request,response);
}else {
// 创建新的课程对象
Course newCourse = new Course();
// 设置课程ID
newCourse.setC_id(cid);
// 设置课程名称
newCourse.setC_name(cname);
// 设置课程信息
newCourse.setC_info(cinfo);
// 设置教师ID
newCourse.setT_id(teacher.getT_id());
// 设置教师名称
newCourse.setT_name(teacher.getT_name());
service.addOptionalCourse(newCourse);

@ -26,17 +26,26 @@ public class TeacherListServlet extends HttpServlet {
//将list存入request域
request.setAttribute("teachers",teachers);
// 设置请求的字符编码为utf-8
request.setCharacterEncoding("utf-8");
// 获取当前会话
HttpSession session = request.getSession();
// 从会话中获取学生对象
Student student= (Student)session.getAttribute("student");
// 从会话中获取管理员对象
Admin admin= (Admin)session.getAttribute("admin");
// 从会话中获取教师对象
Teacher teacher= (Teacher)session.getAttribute("teacher");
// 如果会话中存在学生对象,且不存在管理员对象和教师对象,则跳转到学生查找教师列表页面
if (student != null && admin == null && teacher == null) {
request.getRequestDispatcher("/WEB-INF/student/sFindTeacherList.jsp").forward(request, response);
// 如果会话中存在管理员对象,且不存在学生对象和教师对象,则跳转到管理员查找教师列表页面
} else if (admin != null && student == null && teacher == null) {
request.getRequestDispatcher("/WEB-INF/admin/aFindTeacherList.jsp").forward(request, response);
// 如果会话中存在教师对象,且不存在学生对象和管理员对象,则跳转到教师查找教师列表页面
} else if (teacher != null && admin == null && student == null) {
request.getRequestDispatcher("/WEB-INF/teacher/tFindTeacherList.jsp").forward(request, response);
// 如果会话中不存在学生对象、管理员对象和教师对象,则跳转到错误页面
} else {
request.getRequestDispatcher("error.jsp").forward(request, response);
}

@ -19,10 +19,15 @@ import java.util.List;
@WebServlet("/teacherOptionalCourseServlet")
public class TeacherOptionalCourseServlet extends HttpServlet {
// 处理POST请求
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置请求编码为utf-8
request.setCharacterEncoding("utf-8");
// 获取当前会话
HttpSession session = request.getSession();
// 从会话中获取教师对象
Teacher t = (Teacher) session.getAttribute("teacher");
// 如果教师对象不为空
if (t != null) {
//调用StudentService完成查询
TeacherService service = new TeacherServiceImpl();

@ -19,31 +19,57 @@ import java.util.Date;
@WebServlet("/teacherPasswordUpdateServlet")
public class TeacherPasswordUpdateServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置请求编码为utf-8
request.setCharacterEncoding("utf-8");
// 获取当前会话
HttpSession session = request.getSession();
// 从会话中获取教师对象
Teacher teacher = (Teacher)session.getAttribute("teacher");
// 获取教师ID
String teacherid = teacher.getT_id();
<<<<<<< HEAD
=======
//3
// 获取新密码
>>>>>>> remotes/origin/develop
String newpassword = request.getParameter("teacher-newpassword");
// 获取确认新密码
String ennewpassword = request.getParameter("teacher-ennewpassword");
// 定义密码格式正则表达式
String regex = "^[\\w]{3,12}$";
// 判断新密码是否符合格式
boolean flag = newpassword.matches(regex);
// 如果新密码不符合格式
if (!flag) {
// 设置错误信息
request.setAttribute("update_msg", "密码格式错误,重新提交!"+String.format("%tT",new Date()));
// 转发到修改密码页面
request.getRequestDispatcher("/WEB-INF/teacher/teacherUpdatePassword.jsp").forward(request, response);
// 如果新密码和确认新密码不一致
} else if (!newpassword.equals(ennewpassword)) {
// 设置错误信息
request.setAttribute("update_msg", "密码确认错误,请重新提交!" + String.format("%tT", new Date()));
// 转发到修改密码页面
request.getRequestDispatcher("/WEB-INF/teacher/teacherUpdatePassword.jsp").forward(request, response);
// 如果新密码和确认新密码一致
} else {
// 创建TeacherService对象
TeacherService service= new TeacherServiceImpl();
// 调用updatePassword方法更新密码
service.updatePassword(teacherid,newpassword);
// 根据teacherid查找新的Teacher对象
Teacher newTeacher = service.findTeacherById(teacher);
// 将新的Teacher对象赋值给teacher
teacher = newTeacher;
// 将teacher对象存入session中
session.setAttribute("teacher",teacher);
// 设置update_msg属性提示修改成功
request.setAttribute("update_msg", "修改成功!" + String.format("%tT", new Date()));
// 转发到teacherUpdatePassword.jsp页面
request.getRequestDispatcher("/WEB-INF/teacher/teacherUpdatePassword.jsp").forward(request, response);
}

@ -23,28 +23,42 @@ import java.util.Date;
@WebServlet("/updateOptionalCourseScoreServlet")
public class UpdateOptionalCourseScoreServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置请求编码为utf-8
request.setCharacterEncoding("utf-8");
// 获取请求参数
String cid = request.getParameter("cid");
String sid = request.getParameter("sid");
String sScore = request.getParameter("student-score");
// 创建学生服务对象
StudentService service = new StudentServiceImpl();
// 创建课程服务对象
CourseService service1 = new CourseServiceImpl();
// 创建选课服务对象
SelectCourseService service2 = new SelectCourseServiceImpl();
// 根据课程id和学生id更新学生成绩
service2.upDateScoreByCidAndSid(cid,sid,sScore);
//创建一个Student对象
Student student = new Student();
//设置Student对象的id
student.setS_id(sid);
//根据Student对象的id查找学生信息
Student s = service.findStudentById(student);
//根据课程id查找选课信息
Course c = service1.findSelectCourseByCourseId(cid);
//根据课程id和学生id查找成绩信息
SelectCourse sc = service2.findScoreByCourseIdAndStudentId(cid,sid);
//将学生信息、选课信息和成绩信息存入request对象中
request.setAttribute("s",s);
request.setAttribute("c",c);
request.setAttribute("sc",sc);
//设置修改分数成功的提示信息
request.setAttribute("update_msg","修改分数成功!"+String.format("%tT",new Date()));
//转发到updateOptionalCourseScore.jsp页面
request.getRequestDispatcher("/WEB-INF/teacher/updateOptionalCourseScore.jsp").forward(request,response);
}

@ -20,24 +20,42 @@ import java.io.IOException;
@WebServlet("/updateScoreServlet")
public class UpdateScoreServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
<<<<<<< HEAD
=======
//中文
// 设置请求的字符编码为utf-8
>>>>>>> remotes/origin/develop
request.setCharacterEncoding("utf-8");
// 获取请求参数cid
String cid = request.getParameter("cid");
// 获取请求参数sid
String sid = request.getParameter("sid");
// 创建StudentService对象
StudentService service = new StudentServiceImpl();
// 创建Student对象
Student student = new Student();
// 设置Student对象的s_id属性
student.setS_id(sid);
// 根据Student对象的s_id属性查找学生信息
// 根据学生id查找学生信息
Student s = service.findStudentById(student);
// 创建CourseServiceImpl对象
CourseService service1 = new CourseServiceImpl();
// 根据课程id查找选课信息
Course c = service1.findSelectCourseByCourseId(cid);
// 创建SelectCourseServiceImpl对象
SelectCourseService service2 = new SelectCourseServiceImpl();
// 根据课程id和学生id查找成绩信息
SelectCourse sc = service2.findScoreByCourseIdAndStudentId(cid,sid);
// 将学生信息、选课信息和成绩信息存入request对象中
request.setAttribute("s",s);
request.setAttribute("c",c);
request.setAttribute("sc",sc);
// 转发到updateOptionalCourseScore.jsp页面
request.getRequestDispatcher("/WEB-INF/teacher/updateOptionalCourseScore.jsp").forward(request,response);
}

@ -16,19 +16,33 @@ import java.util.Date;
@WebServlet("/updateTeacherInfoServlet")
public class UpdateTeacherInfoServlet extends HttpServlet {
// 处理POST请求
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置请求编码为utf-8
request.setCharacterEncoding("utf-8");
// 获取教师ID
String tid = request.getParameter("teacher-id");
// 获取教师姓名
String name = request.getParameter("teacher-name");
// 获取教师性别
String sex = request.getParameter("teacher-sex");
// 获取教师学历
String education = request.getParameter("teacher-education");
// 获取教师职称
String title = request.getParameter("teacher-title");
Teacher updateTeacher = new Teacher();
<<<<<<< HEAD
//判断输入位数是否大于数据库位数
=======
//判断输入位数是否大于数据库位数-
//判断输入的姓名、学历、职称是否合法
>>>>>>> remotes/origin/develop
if (name.length() > 4 || education.length() > 20 || title.length()>24 || name.contains("<") || education.contains("<") || title.contains("<")) {
//将错误信息存入request对象中
request.setAttribute("update_msg","格式错误,请重新提交!"+String.format("%tT",new Date()));
//转发到updateTeacherServlet页面
request.getRequestDispatcher("updateTeacherServlet?tid="+tid).forward(request, response);
}else {
//封装教师对象

@ -17,13 +17,24 @@ import java.util.List;
public class UpdateTeacherOptionalCourseServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
<<<<<<< HEAD
// HttpSession session = request.getSession();
=======
// HttpSession session = request.getSession();-
// 获取请求参数中的课程ID
>>>>>>> remotes/origin/develop
String cid = (String)request.getParameter("cid");
// 创建TeacherService对象
TeacherService service = new TeacherServiceImpl();
// 根据课程ID查找可选课程
Course c = service.findOptionalCourseByCourseId(cid);
// 将课程对象存入请求属性中
request.setAttribute("course",c);
// 输出课程ID
System.out.println(c.getC_id());
// 输出课程名称
System.out.println(c.getC_name());
// 输出课程信息
System.out.println(c.getC_info());
request.getRequestDispatcher("/WEB-INF/teacher/updateTeacherOptionalCourseInfo.jsp").forward(request,response);

@ -22,15 +22,24 @@ import java.util.List;
@WebServlet("/updateTeacherServlet")
public class UpdateTeacherServlet extends HttpServlet {
// 处理POST请求
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置请求编码为utf-8
request.setCharacterEncoding("utf-8");
// 获取当前会话
HttpSession session = request.getSession();
// 获取请求参数中的教师id
String teacherid = request.getParameter("tid");
// 创建教师对象
Teacher teacher = new Teacher();
// 设置教师id
teacher.setT_id(teacherid);
// 创建教师服务对象
TeacherService service = new TeacherServiceImpl();
// 根据教师id查找教师信息
Teacher newTeacher = service.findTeacherById(teacher);
// 将教师信息存入请求属性中
request.setAttribute("teacher",newTeacher);
CDCService service2 = new CDCServiceImpl();
@ -38,6 +47,7 @@ public class UpdateTeacherServlet extends HttpServlet {
List<CDC> departmentList = service2.findAllDepartment();
List<CDC> classList = service2.findAllClass();
//将collegeList、departmentList、classList放入session中
session.setAttribute("collegeLists",collegeList);
session.setAttribute("departmentLists",departmentList);
session.setAttribute("classLists",classList);

@ -1,5 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<<<<<<< HEAD
=======
<component name="FacetManager">
<facet type="web" name="Web">
<configuration>
<descriptors>
<deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/web/WEB-INF/web.xml" />
</descriptors>
<webroots>
<root url="file://$MODULE_DIR$/web" relative="/" />
</webroots>
</configuration>
</facet>
</component>
>>>>>>> remotes/origin/develop
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">

@ -1,54 +1,198 @@
.progress{
margin-top:2px;
/*
.progress
*/
.progress {
/*
2使
*/
margin-top: 2px;
/*
200
*/
width: 200px;
/*
14
*/
height: 14px;
/*
10
*/
margin-bottom: 10px;
/*
*/
overflow: hidden;
/*
#f5f5f5
*/
background-color: #f5f5f5;
/*
4使
*/
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1);
box-shadow: inset 0 1px 2px rgba(0,0,0,.1);
/*
WebKitChromeSafari
inset0 1px 2px12rgba(0,0,0,.1)0.1
*/
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0,.1);
/*
-webkit-box-shadowCSSWebKit
*/
box-shadow: inset 0 1px 2px rgba(0, 0, 0,.1);
}
.progress-bar{
/*
.progress-bar
*/
.progress-bar {
/*
rgb(92, 184, 92)绿使
*/
background-color: rgb(92, 184, 92);
/*
使线使
linear-gradient线45deg45
rgba(255, 255, 255, 0.14902) 25%, transparent 25%25%使25%
*/
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.14902) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.14902) 50%, rgba(255, 255, 255, 0.14902) 75%, transparent 75%, transparent);
/*
线40px 40px40
*/
background-size: 40px 40px;
/*
使
rgba(0, 0, 0, 0.14902)0px -1px 0px 0px1px0px0pxinset线
*/
box-shadow: rgba(0, 0, 0, 0.14902) 0px -1px 0px 0px inset;
/*
border-boxborderpadding便
*/
box-sizing: border-box;
/*
rgb(255, 255, 255)使
*/
color: rgb(255, 255, 255);
/*
使
*/
display: block;
/*
使
*/
float: left;
/*
12
*/
font-size: 12px;
height: 20px;
/*
20
*/
line-height: 20px;
/*
使
*/
text-align: center;
/*
0
*/
transition-delay: 0s;
/*
0.6
*/
transition-duration: 0.6s;
/*
CSSwidth
*/
transition-property: width;
/*
ease使
*/
transition-timing-function: ease;
/*
266.188JavaScript
*/
width: 266.188px;
}
/*
.file
*/
.file {
/*
便toprightbottomleftinput
*/
position: relative;
/*
便
*/
display: inline-block;
/*
#337ab7
*/
background-color: #337ab7;
/*
4使
*/
border-radius: 4px;
/*
812便
*/
padding: 8px 12px;
/*
*/
overflow: hidden;
/*
#FFFFFF使
*/
color: #FFFFFF;
/*
线线使
*/
text-decoration: none;
/*
0
*/
text-indent: 0;
/*
20便
*/
line-height: 20px;
}
/*
.fileinput
*/
.file input {
/*
.filerighttop.file便
*/
position: absolute;
/*
100px使
*/
font-size: 100px;
/*
.fileright: 00top: 00
*/
right: 0;
top: 0;
/*
0使.file
*/
opacity: 0;
}
/*
.file
*/
.file:hover {
/*
.file#598FBE
*/
background: #598FBE;
/*
线
*/
text-decoration: none;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,11 +1,19 @@
@charset "utf-8";
/*
* @charset "utf-8";
* CSS使utf-8
*/
body {
background: url("../images/bg.jpg");
/* 设置页面背景图片的路径这里图片位于相对于当前CSS文件的images文件夹下文件名为bg.jpg */
background-position: center;
/* 让背景图片在水平和垂直方向都居中显示 */
background-size: cover;
/* 使背景图片自适应铺满整个页面可视区域,可能会根据页面尺寸拉伸或缩放图片以完全覆盖 */
padding-bottom: 0px;
/* 将body元素底部的内边距设置为0像素控制页面底部空白区域大小等布局效果 */
}
.layadmin-user-login-icon {
position: absolute;
left: 1px;
@ -14,7 +22,22 @@ body {
line-height: 36px;
text-align: center;
color: #d2d2d2;
/*
*
* position: absolute; html
* left: 1px; 1
* top: 1px; 1
* width: 38px; 38
* line-height: 36px; 36
* text-align: center;
* color: #d2d2d2;
*/
}
.login-main .layui-input {
.login-main.layui-input {
padding-left: 38px;
/*
* login-mainlayui-input38
*
*/
}

@ -1,6 +1,10 @@
@charset "utf-8";
/*
* @charset "utf-8";
* CSS使utf-8
*/
.layui-layout-admin .my-header {
/* 针对layui布局下的自定义头部样式 */
.layui-layout-admin.my-header {
position: fixed;
top: 0;
left: 0;
@ -8,9 +12,19 @@
height: 60px;
background: #393D49;
z-index: 2;
}
.layui-layout-admin .my-header .my-header-logo {
/*
* position: fixed; 使
* top: 0; 0
* left: 0; 0
* width: 100%;
* height: 60px; 60
* background: #393D49;
* z-index: 2;
*/
}
/* layui布局下头部中自定义的logo样式 */
.layui-layout-admin.my-header.my-header-logo {
display: inline-block;
width: auto;
height: 30px;
@ -19,31 +33,60 @@
line-height: 30px;
padding: 15px;
vertical-align: top;
}
.layui-layout-admin .my-header img.my-header-logo {
/*
* display: inline-block;
* width: auto;
* height: 30px; 30
* color: white;
* font-size: 18px; 18
* line-height: 30px; 使
* padding: 15px;
* vertical-align: top;
*/
}
/* layui布局下头部中作为图片的logo样式 */
.layui-layout-admin.my-header img.my-header-logo {
width: 150px;
height: 40px;
text-align: center;
line-height: 40px;
padding: 10px;
border: none;
}
/*
* my-header-logo
* width: 150px; 150
* height: 40px; 40
* text-align: center;
* line-height: 40px; 使
* padding: 10px;
* border: none;
*/
}
/* 以下是名为my-header-btn的类选择器样式可能用于头部的按钮相关元素 */
/* index */
.my-header-btn {
display: inline-block;
width: auto;
height: 100%;
line-height: 60px;
/*
* display: inline-block; 便
* width: auto;
* height: 100%;
* line-height: 60px; 便使
*/
}
.my-header-btn .layui-btn .layui-icon {
.my-header-btn.layui-btn.layui-icon {
margin-right: 0;
/* 针对同时具有layui-btn和layui-icon类的元素可能是layui框架中的按钮图标元素将其右侧外边距设置为0调整图标与其他元素的间距 */
}
.my-header-user-nav {
float: right;
/* 让该元素(可能是包含用户相关操作的导航元素)向右浮动,使其在头部靠右排列,常用于页面头部的用户信息、操作按钮等布局 */
}
.my-header-user-nav img {
@ -53,22 +96,40 @@
line-height: 40px;
border: none;
border-radius: 5px;
/*
*
* width: 40px; 40
* height: 40px; 40使
* text-align: center;
* line-height: 40px;
* border: none;
* border-radius: 5px; 使
*/
}
.my-header-user-nav .layui-nav-item a.name {
padding-left: 5px !important;
.my-header-user-nav.layui-nav-item a.name {
padding-left: 5px!important;
/* 针对用户导航中类名为layui-nav-item下的a元素且类名为name的元素可能是显示用户名之类的文本元素强制设置左侧内边距为5像素调整文本与其他元素的间距 */
}
.my-header ul.layui-nav {
display: inline-block;
vertical-align: top;
border-radius: 0;
/*
* layui-navul
* display: inline-block; 便
* vertical-align: top;
* border-radius: 0; 使
*/
}
.my-header ul.layui-nav li a {
max-height: 60px;
/* 限制头部导航列表中每个列表项li内链接a元素的最大高度为60像素可能是为了保证整体头部布局的一致性和美观性 */
}
/* 侧边栏样式 */
.my-side {
position: fixed;
top: 60px;
@ -76,21 +137,35 @@
width: 200px;
z-index: 2;
overflow-x: hidden;
/*
* position: fixed; 使
* top: 60px; 60
* bottom: 0; 0使
* width: 200px; 200
* z-index: 2;
* overflow-x: hidden;
*/
}
.my-side .layui-nav {
.my-side.layui-nav {
border-radius: 0;
min-height: 100%;
/*
* layui-nav100%使
*/
}
.my-side ul.layui-nav li a i, .layui-nav .layui-nav-child a i, .layui-nav .layui-nav-item a i, .layui-tab-card > .layui-tab-title li span i {
.my-side ul.layui-nav li a i,.layui-nav.layui-nav-child a i,.layui-nav.layui-nav-item a i,.layui-tab-card >.layui-tab-title li span i {
margin-right: 5px;
/* 对侧边栏导航、子导航、普通导航项以及选项卡标题中的图标元素i标签统一设置右侧外边距为5像素调整图标与文本的间距使布局更美观 */
}
.my-side ul.layui-nav li dl dd a i {
margin-left: 15px;
/* 针对侧边栏导航中dl列表下dd元素内的图标元素i标签设置左侧外边距为15像素调整图标在这些特定元素内的位置布局 */
}
/* 页面主体内容区域样式 */
.my-body {
position: fixed;
top: 60px;
@ -99,10 +174,20 @@
right: 0;
z-index: 1;
overflow: hidden;
/*
* position: fixed; 使
* top: 60px; 60
* bottom: 0;
* left: 200px; 200
* right: 0;
* z-index: 1;
* overflow: hidden;
*/
}
.body {
padding: 10px;
/* 给类名为body的元素设置内边距为10像素在元素内部四周增加一定空间方便内容排版避免内容紧贴边界 */
}
.frame-main {
@ -112,19 +197,30 @@
height: 433px;
background-color: #edededbf;
backdrop-filter: blur(20px);
/*
* margin-top: -210px; top: 50%使
* top: 50%;
* position: relative; 便
* height: 433px; 433
* background-color: #edededbf; rgba
* backdrop-filter: blur(20px); 20
*/
}
.my-body .layui-tab, .my-body .layui-tab .layui-tab-content {
.my-body.layui-tab,.my-body.layui-tab.layui-tab-content {
margin: 0;
padding: 0;
/* 去除主体内容区域内选项卡layui-tab及其内容区域layui-tab-content的默认外边距和内边距方便进行自定义的布局和样式调整 */
}
.my-body .layui-tab .layui-tab-title li:first-child > i {
.my-body.layui-tab.layui-tab-title li:first-child > i {
display: none;
/* 隐藏主体内容区域内选项卡标题layui-tab-title中第一个列表项li内的图标元素i标签可能是根据设计需求对首个选项卡的图标进行特殊处理 */
}
.my-body .layui-tab, .my-body .layui-tab .layui-tab-content, .my-body .layui-tab .layui-tab-item {
.my-body.layui-tab,.my-body.layui-tab.layui-tab-content,.my-body.layui-tab.layui-tab-item {
height: 100%;
/* 让主体内容区域内的选项卡、选项卡内容以及每个选项卡对应的具体内容项layui-tab-item都占满所在父元素的垂直空间保证内容完整显示且布局合理 */
}
.my-body iframe {
@ -132,447 +228,94 @@
height: 100%;
border: none;
outline: none;
/*
* iframe100%使线使
*/
}
.layui-layout-admin .my-footer {
/* 页面底部样式 */
.layui-layout-admin.my-footer {
height: 40px;
padding: 2px 0;
/* 设置底部元素的高度为40像素并在垂直方向上添加2像素的内边距上下内边距用于放置底部相关的版权信息、提示文字等内容 */
}
.layui-layout-admin .my-footer p {
.layui-layout-admin.my-footer p {
height: 20px;
line-height: 20px;
font-size: 12px;
text-align: center;
/*
* p
* height: 20px; 20
* line-height: 20px; 使
* font-size: 12px; 12
* text-align: center; 使
*/
}
.my-btn-box {
height: 38px;
margin-bottom: 10px;
/* 定义一个类名为my-btn-box的元素样式设置高度为38像素并在底部添加10像素的外边距可能用于按钮组等元素的整体样式控制方便布局和外观调整 */
}
.my-pay-box > div p {
text-align: center;
margin-bottom: 10px;
/* 针对类名为my-pay-box下的div元素内的p元素设置文本水平居中对齐并在底部添加10像素的外边距常用于支付相关信息、提示等文本的排版布局 */
}
/* welcome */
/* welcome页面相关样式 */
.my-index-main button.layui-icon {
width: 100%;
font-size: 20px;
/* 针对类名为my-index-main下的button元素且具有layui-icon类可能是layui框架中的图标按钮元素设置宽度为100%占满父元素宽度字号为20像素用于调整按钮图标大小和外观显示效果 */
}
.my-index-main .my-nav-btn {
.my-index-main.my-nav-btn {
background: #efefef;
cursor: pointer;
border-radius: 2px;
overflow: hidden;
/*
* my-index-mainmy-nav-btn
* background: #efefef;
* cursor: pointer;
* border-radius: 2px; 2使
* overflow: hidden;
*/
}
.my-index-main .my-nav-text:first-child {
.my-index-main.my-nav-text:first-child {
height: 24px;
line-height: 25px;
font-size: 16px;
font-weight: bold;
/* my-index-mainmy-nav-text
* height: 24px; 24
* line-height: 25px; 使
* font-size: 16px; 16
* font-weight: bold;
*/
}
.my-index-main .my-nav-text:last-child {
.my-index-main.my-nav-text:last-child {
height: 20px;
line-height: 20px;
font-size: 12px;
/* my-index-mainmy-nav-text
* height: 20px; 20
* line-height: 20px; 使
* font-size: 12px; 12
*/
}
/* login */
/* 登录页面相关样式 */
.login-box {
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
width: 320px;
height: 241px;
max-height: 300px;
}
.login-body .login-box h3 {
color: #444;
font-size: 22px;
font-weight: 100;
text-align: center;
}
.login-box .layui-input[type='number'] {
display: inline-block;
width: 50%;
vertical-align: top;
}
.login-box img {
display: inline-block;
width: 46%;
height: 38px;
border: none;
vertical-align: top;
cursor: pointer;
margin-left: 4%;
}
.login-box button.btn-reset {
width: 95px;
}
.login-box button.btn-submit {
width: 190px;
}
.login-main {
top: 0;
right: 0;
bottom: 0;
left: 0;
width: 350px;
margin: 0 auto;
}
.login-main header {
height: 35px;
line-height: 35px;
font-size: 30px;
font-weight: 100;
text-align: center;
padding-top: 58px;
}
.login-main header, .login-main form, .login-main form .layui-input-inline {
margin-bottom: 15px;
}
.login-main form .layui-input-inline, .login-main form .layui-input-inline input, .login-main form .layui-input-inline button {
width: 100%;
}
.login-main form .login-btn {
margin-bottom: 5px;
}
/* demo */
.site-demo-button div {
margin: 20px 30px 10px;
}
.site-demo-button .layui-btn {
margin: 0 7px 10px 0;
}
/* check */
input[type='checkbox'] {
vertical-align: middle;
}
.my-checkbox {
-webkit-appearance: none;
position: relative;
width: 20px;
height: 20px;
background-color: #FFFFFF;
border: solid 2px #28B779;
border-radius: 2px;
background-clip: padding-box;
display: inline-block;
cursor: pointer;
}
.my-checkbox:checked {
background-color: #28B779;
border: solid 0 #28B779;
}
.my-checkbox:checked:before {
position: absolute;
display: inline-block;
right: 50%;
bottom: 50%;
-webkit-transform: translate(50%, 50%);
-ms-transform: translate(50%, 50%);
transform: translate(50%, 50%);
font-family: "Microsoft Yahei";
content: "√";
color: #FFFFFF;
font-size: 16px;
font-weight: 600;
}
/* dblclick css */
.dblclick-tab tr td {
height: 30px;
line-height: 30px;
padding: 0 6px;
border-radius: 2px;
cursor: pointer;
}
.dblclick-tab tr td:hover {
color: black;
background: white;
}
.dblclick-tab tr td i {
position: relative;
top: 2px;
display: inline-block;
margin-right: 5px;
}
/* tips 404 */
.my-page-box {
font-family: "Segoe UI", "Lucida Grande", Helvetica, Arial, "Microsoft YaHei", FreeSans, Arimo, "Droid Sans", "wenquanyi micro hei", "Hiragino Sans GB", "Hiragino Sans GB W3", FontAwesome, sans-serif;
text-align: center;
padding: 20px;
background-color: white;
}
.my-page-box i {
font-size: 100px;
}
.my-page-box h2, .my-page-box h3, .my-page-box h4, .my-page-box h5 {
font-size: 80px;
}
.my-page-box p.msg {
color: #dce2ec;
font-size: 20px;
margin-top: 20px;
}
.my-page-box p.text {
color: #666;
font-size: 16px;
margin-top: 20px;
}
.my-page-box .my-btn-box {
margin-top: 20px;
margin-bottom: 20px;
}
/* tree table */
.my-tree-table-box .tree-table-tree-box {
width: 20%;
min-height: 200px;
display: inline-block;
vertical-align: top;
overflow-y: auto;
overflow-x: auto;
}
.my-tree-table-box .tree-table-table-box {
display: inline-block;
vertical-align: top;
width: 79%;
margin-left: 1%;
}
/* skin0 */
html .skin-0 .dblclick-tips-box .layui-layer-content {
background-color: #009688;
}
html .skin-0 .dblclick-tips-box i.layui-layer-TipsB {
border-right-color: #009688;
}
/* skin1 */
html .skin-1 .my-header .my-header-logo,
html .skin-1 .layui-nav .layui-nav-item a,
html .skin-1 .layui-nav .layui-nav-item a:hover {
color: #444;
}
html .skin-1 .my-header,
html .skin-1 .layui-nav,
html .skin-1 .layui-nav-child {
background: white;
}
html .skin-1 .layui-nav .layui-nav-item .layui-nav-child dd.layui-this a {
color: white;
}
html .skin-1 .layui-nav .layui-nav-item .layui-nav-child dd.layui-this,
html .skin-1 .layui-nav .layui-nav-item .layui-nav-child dd.layui-this > a,
html .skin-1 .layui-nav-tree .layui-nav-item > a:hover,
html .skin-1 .layui-nav .layui-nav-item .layui-nav-child dd:hover > a,
html .skin-1 .layui-tab-title li .layui-tab-close:hover,
html .skin-1 .dblclick-tips-box .layui-layer-content {
color: white !important;
background-color: #666 !important;
}
html .skin-1 .dblclick-tips-box i.layui-layer-TipsB {
border-right-color: #666;
}
html .skin-1 .layui-nav .layui-nav-itemed > a {
background: #444 !important;
}
html .skin-1 .layui-nav .layui-nav-more {
border-color: #444 transparent transparent;
}
html .skin-1 .layui-nav .layui-nav-mored {
border-color: transparent transparent #444;
}
/* skin2 */
html .skin-2 .my-header .my-header-logo,
html .skin-2 .layui-nav .layui-nav-item a,
html .skin-2 .layui-nav .layui-nav-item a:hover {
color: white;
}
html .skin-2 .my-header,
html .skin-2 .layui-nav,
html .skin-2 .layui-nav-child {
background-color: #01AAED;
}
html .skin-2 .layui-nav .layui-nav-item .layui-nav-child dd.layui-this a {
color: white;
}
html .skin-2 .layui-nav .layui-nav-item .layui-nav-child dd.layui-this,
html .skin-2 .layui-nav .layui-nav-item .layui-nav-child dd.layui-this > a,
html .skin-2 .layui-nav-tree .layui-nav-item > a:hover,
html .skin-2 .layui-nav .layui-nav-item .layui-nav-child dd:hover > a,
html .skin-2 .layui-tab-title li .layui-tab-close:hover,
html .skin-2 .dblclick-tips-box .layui-layer-content {
color: white !important;
background-color: #00C0F7 !important;
}
html .skin-2 .dblclick-tips-box i.layui-layer-TipsB {
border-right-color: #00C0F7;
}
html .skin-2 .layui-nav .layui-nav-itemed > a {
background-color: #1684af !important;
}
/* skin0-2 */
html .skin-2 .layui-nav .layui-nav-more,
html .skin-1 .layui-nav-tree .layui-nav-more,
html .skin-2 .layui-nav-tree .layui-nav-more {
border-color: white transparent transparent;
}
html .skin-2 .layui-nav .layui-nav-mored,
html .skin-1 .layui-nav-itemed .layui-nav-more,
html .skin-2 .layui-nav-itemed .layui-nav-more {
border-color: transparent transparent white;
}
/* tools */
.fl {
float: left;
}
.fr {
float: right;
}
.none {
display: none;
}
.block {
display: block;
}
.tc {
text-align: center;
}
.max-auto {
max-height: 450px;
overflow-y: auto;
}
/* layui css cover */
html body .layui-nav .layui-nav-bar {
opacity: 0 !important;
overflow: hidden !important;
}
.layui-nav .layui-this:after, .layui-nav-bar, .layui-nav-tree .layui-nav-itemed:after {
background-color: transparent;
}
.my-body .layui-tab-card > .layui-tab-title li {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.layui-layer-tips .layui-layer-content {
padding: 5px;
}
.tooltip {
position: relative;
display: inline-block;
border-bottom: 1px dotted black;
position: relative;
left: 12%;
top: -10px;
}
.tooltip .tooltiptext {
width: 138px;
background-color: #dad5d545;
color: #ff4545;
text-align: center;
border-radius: 6px;
padding: 5px 0;
position: absolute;
z-index: 1;
}
.page-active-li {
background-color: #00FF00;
}
.page-li {
float: left;
border: 1px solid #e2e2e2;
display: inline-block;
vertical-align: middle;
padding: 0 15px;
height: 28px;
line-height: 28px;
margin: 0px 2px 5px -3px;
background-color: #fff;
color: #333;
font-size: 12px;
}
.page-li:hover {
color: #009688;
}
/* media */
@media screen and ( max-width: 450px) {
.my-header ul.my-header-user-nav li a.pay {
display: none;
}
}
right:0;
}

@ -1,11 +1,19 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!-- 这是JSP页面的指令用于设置页面的内容类型为HTML字符编码为UTF-8并且指定使用的语言是Java -->
<html>
<head>
<meta charset="<?php $this->options->charset(); ?>">
<!-- 设置页面的字符编码,不过这里的写法不太常规,<?php...?>这种语法一般是用在PHP中在这里可能是一种错误的混用正常在HTML中可以直接写固定值如<meta charset="UTF-8"> -->
<meta charset="<?php $this->options->charset();?>">
<!-- 指示浏览器以IE的最高版本或者Chrome 1的模式来渲染页面用于解决不同浏览器的兼容性问题 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1">
<!-- 指示浏览器使用WebKit内核来渲染页面 -->
<meta name="renderer" content="webkit">
<!-- 设置视口相关属性规定页面宽度等于设备宽度初始缩放比例、最小缩放比例、最大缩放比例都为1.0,禁止用户手动缩放页面 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<!-- 指示浏览器不要对页面进行缓存转换,保持获取到的原始内容 -->
<meta http-equiv="Cache-Control" content="no-transform"/>
<!-- 定义页面的图标链接 -->
<link rel="icon" href="https://yoyling.com/favicon.ico">
<title>ERROR</title>
@ -13,17 +21,20 @@
body{
margin:0;padding:0;
font-family: PingFang SC,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif;
/* 设置页面主体的外边距和内边距为0定义字体族优先使用苹方字体其次是微软雅黑、文泉驿微米黑等无衬线字体 */
}
a, button.submit {
color:#6E7173;
text-decoration:none;
-webkit-transition:all .1s ease-in;
-moz-transition:all .1s ease-in;
-o-transition:all .1s ease-in;
transition:all .1s ease-in;
-webkit-transition:all.1s ease-in;
-moz-transition:all.1s ease-in;
-o-transition:all.1s ease-in;
transition:all.1s ease-in;
/* 设置链接和特定按钮的文本颜色为灰色去除下划线并且定义了在不同浏览器下过渡效果的属性当元素状态改变时如鼠标悬停等会在0.1秒内平滑过渡样式变化 */
}
a:hover, a:active {
color:#6E7173;
/* 当鼠标悬停或者激活(比如点击按住时)链接元素时,保持文本颜色为灰色 */
}
.body404{
position: absolute;
@ -31,9 +42,11 @@
width: 100%;
background:#fff;
background-size: auto 100%;
/* 定义一个类名为body404的元素设置其绝对定位占满整个页面的高度和宽度背景颜色为白色背景图片尺寸自适应高度为100%(这里没看到背景图片相关设置,可能后续会添加或者有遗漏情况) */
}
.body-about .body404{
.body-about.body404{
background:#fff;
/* 当父元素有body-about类时其内部的body404元素背景颜色设置为白色可能用于特定页面布局区分样式 */
}
.site-name404 {
margin: 0 auto;
@ -47,21 +60,25 @@
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
-webkit-animation: hue 60s infinite linear;
/* 定义一个类名为site-name404的元素使其水平居中文本居中对齐设置字间距、字体大小、行高、字体粗细等样式属性文本颜色通过渐变背景和裁剪、填充等设置来实现渐变文字效果并且添加了一个名为hue的动画持续60秒无限循环线性播放 */
}
.site-name404 h1{
margin: 0 0 10px;
font-size:50px;
line-height:1.2;
/* 针对site-name404内部的h1元素设置外边距、字体大小和行高样式 */
}
.title404 span{
font-size: 15px;
width: 2px;
/* 设置类名为title404内部的span元素的字体大小和宽度样式 */
}
.title404 p{
font-size: 20px;
line-height:1.5;
margin:0;
color:#7b8993;
/* 设置类名为title404内部的p元素的字体大小、行高、外边距和文本颜色样式 */
}
.info404{
position: absolute;
@ -69,13 +86,16 @@
text-align: center;
width: 100%;
margin-top: -160px;
/* 定义一个类名为info404的元素绝对定位在页面垂直居中的位置通过top: 50%和负的外边距来实现精准居中),文本居中对齐,宽度占满整个页面 */
}
.body-about .info404{
.body-about.info404{
margin-top: -180px;
/* 当父元素有body-about类时其内部的info404元素调整上边距用于特定页面布局下的垂直位置微调 */
}
#footer404{
margin-top:30px;
font-size:10px;
/* 设置id为footer404的元素距离上方元素有30px的外边距字体大小为10px */
}
.index404 {
margin-top: 24px;
@ -98,9 +118,11 @@
border-radius: 25px;
background-color: #fff;
color: #7b8993;
/* 定义类名为index404的元素样式设置上边距、显示为行内块元素、禁止文本换行、鼠标指针变为手型、字间距、字体大小等诸多样式属性包括边框、行高、文本对齐、高度、内边距、圆角、背景颜色和文本颜色等用于呈现一个特定外观和交互效果的按钮样式 */
}
.icon-about{
padding: 10px 0 25px;
/* 定义类名为icon-about的元素的内边距样式用于布局调整 */
}
.icon-about a{
font-size: 20px;
@ -109,6 +131,7 @@
background-color: #000;
border-radius: 100%;
padding: 6px;
/* 定义类名为icon-about内部的链接元素样式设置字体大小、外边距、文本颜色、背景颜色、边框圆角和内边距用于呈现特定外观的图标样式可能是社交媒体图标之类的元素 */
}
@-webkit-keyframes hue {
from {
@ -118,21 +141,27 @@
to {
-webkit-filter: hue-rotate(-360deg);
}
/* 定义名为hue的动画关键帧从初始状态色相旋转0度到结束状态色相旋转-360度用于实现文本颜色渐变的动画效果 */
}
</style>
</head>
<body>
<div class="body404">
<div class="info404">
<header id="header404" class="clearfix">
<div class="site-name404">Time Out</div>
<!-- 创建一个id为header404的头部元素应用clearfix类可能用于清除浮动相关布局不过没看到具体的clearfix样式定义内部包含一个类名为site-name404的元素显示文本"Time Out" -->
</header>
<section>
<div class="title404">
<p>I have no secret of success but hard work.</p>
<!-- 在section元素内有一个类名为title404的div元素内部包含一个段落元素显示相应的文本内容 -->
</div><a href="javascript:history.back()" class="index404">Go back</a>
<!-- 创建一个链接元素点击时通过JavaScript的history.back()方法实现返回上一页的功能应用index404类来呈现相应的样式 -->
</section>
</div>
</div>
</body>
</html>
</html>

@ -1,16 +1,28 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!-- 这是JSP页面的指令作用如下
- contentType="text/html;charset=UTF-8"设置该JSP页面响应的内容类型为HTML格式并且指定字符编码为UTF-8确保页面中的中文等特殊字符能正确显示与传输。
- language="java"明确该页面中使用的脚本语言是Java意味着可以在页面中嵌入Java代码片段来实现业务逻辑等功能。 -->
<html>
<head>
<title>TITLE</title>
<!-- 设置HTML页面的标题在浏览器标签页等地方会显示该标题内容 -->
</head>
<body>
<%
if (session.getAttribute("student")==null && session.getAttribute("teacher")==null && session.getAttribute("admin")==null) {
// 以下是一段嵌入在JSP页面中的Java代码片段用于判断当前会话session中是否存在某些特定属性。
// session.getAttribute("student")==null检查名为"student"的会话属性是否不存在值为null
// session.getAttribute("teacher")==null检查名为"teacher"的会话属性是否不存在值为null
// session.getAttribute("admin")==null检查名为"admin"的会话属性是否不存在值为null
// 整体逻辑是,只有当这三个属性在会话中都不存在时,才会执行后续的转发操作。
if (session.getAttribute("student") == null && session.getAttribute("teacher") == null && session.getAttribute("admin") == null) {
%>
<jsp:forward page = "login.jsp"/>
<jsp:forward page = "login.jsp"/>
<!-- 这是JSP的一个动作标签<jsp:forward>),用于将请求转发到指定的页面(这里是"login.jsp"页面)。
意味着当满足上述Java代码中判断条件时当前请求会被直接转发到"login.jsp"页面浏览器地址栏的URL可能不会发生改变取决于服务器的具体配置和实现
并且后续当前JSP页面中未执行的部分代码将不会再执行控制权交给了被转发到的"login.jsp"页面。 -->
<%
}
%>
</body>
</html>
</html>

@ -1,7 +1,10 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!-- 这是JSPJava Server Pages页面的指令标签。
- contentType="text/html;charset=UTF-8"用于设定此页面响应内容的类型为HTML格式同时指定字符编码为UTF-8这样可以保证页面能够正确地显示和处理各种字符比如中文等特殊字符不会出现乱码情况。
- language="java"明确表明在这个JSP页面中所使用的脚本语言是Java意味着后续可以在页面中嵌入Java代码片段来实现诸如业务逻辑处理、数据交互等功能。 -->
<div class="layui-footer">
<!-- 底部固定区域 -->
<!-- 这是一个HTML的<div>标签,使用了名为"layui-footer"的类名。通常在前端框架如Layui框架这样带有特定类名的元素会被赋予相应的样式此处大概率是用于构建页面底部的布局结构从注释“底部固定区域”可以推测,它可能是用来创建页面底部的固定显示区域,比如放置版权信息、相关链接等内容。 -->
© yoyling.com - 学生信息管理系统
</div>
<!-- 此处显示的是版权声明相关的文本内容表明该学生信息管理系统的版权归属网站为“yoyling.com”是页面底部常见的用于标识版权所有者及系统名称的展示信息。 -->
</div>

@ -1,65 +1,116 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!-- 这是JSPJava Server Pages页面的指令标签具体作用如下
- contentType="text/html;charset=UTF-8"指定该页面响应内容的类型为HTML格式同时将字符编码设置为UTF-8确保页面能正确处理和显示各种字符像中文等特殊字符不会出现乱码现象。
- language="java"表明在这个JSP页面中使用的脚本语言是Java后续可以在页面里嵌入Java代码片段来实现诸如与服务器端交互、业务逻辑处理等功能。不过从当前整个页面来看主要还是以HTML、CSS和JavaScript实现前端相关功能为主 -->
<html lang="en">
<head>
<meta charset="UTF-8">
<!-- 设置HTML页面的字符编码为UTF-8与上面JSP指令中的字符编码设置相呼应保证页面内容能正确解析和显示 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<!-- 指示浏览器以IE的最高版本或者Chrome 1的模式来渲染页面用于解决不同浏览器之间的兼容性问题尽量保证页面在不同浏览器下呈现的效果相对一致 -->
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<!-- 设置视口相关属性让页面宽度等于设备宽度初始缩放比例为1最大缩放比例也为1意味着页面在移动端等设备上初始显示时按设备宽度自适应并且用户不能进行缩放操作 -->
<title>忘记密码</title>
<!-- 设置HTML页面的标题这个标题会显示在浏览器的标签栏上让用户清楚当前页面的主要功能是用于“忘记密码”相关操作 -->
<link rel="stylesheet" href="./css/layui.css">
<!-- 引入外部样式表文件layui.css通常这是Layui前端框架的核心样式文件用于应用该框架预定义的各种UI组件、布局等样式 -->
<link rel="stylesheet" href="./css/style.css">
<!-- 引入自定义的style.css样式文件可能用于覆盖Layui框架的部分默认样式或者添加页面特定的样式规则 -->
<link rel="stylesheet" href="./css/login.css">
<!-- 引入专门针对登录相关功能此处是忘记密码功能可能和登录共用部分样式逻辑的login.css样式文件进一步定制页面的外观样式 -->
<script src="layui.js"></script>
<!-- 引入Layui框架的JavaScript核心文件通过这个文件可以使用Layui框架提供的各种JavaScript组件和功能比如表单验证、弹出层等功能 -->
</head>
<body>
<div class="frame-main">
<!-- 这可能是整个页面主体内容的一个外层框架容器,用于整体布局,通过类名"frame-main"可以在CSS样式表中对其设置宽度、高度、边距等布局相关的样式属性 -->
<div class="login-main">
<!-- 可能是专门用于放置登录相关内容(此处是忘记密码相关元素)的容器,通过类名"login-main"可以进一步定制其内部元素的排列、样式等 -->
<header class="layui-elip">找回密码</header>
<!-- 使用了layui-elip类的<header>元素可能是应用了Layui框架中特定的样式类来实现文本的某种排版效果比如省略显示等不过具体要看对应样式定义用于显示页面的主要标题“找回密码” -->
<form class="layui-form">
<!-- 创建一个表单元素并且应用了layui-form类表明这个表单会应用Layui框架提供的表单相关的样式和验证等功能 -->
<div class="layui-input-inline">
<!-- 创建一个行内块级的<div>元素,用于在表单内布局输入框等元素,使得它们可以在同一行显示(具体布局还取决于样式设置) -->
<label class="layadmin-user-login-icon layui-icon layui-icon-username"></label>
<!-- 创建一个<label>标签应用了多个类名其中layui-icon类表明它是Layui框架中的图标元素layui-icon-username类指定了具体的图标样式这里推测是代表用户名相关的图标用于在输入框前面显示一个特定的图标作为提示 -->
<input type="text" name="account" required lay-verify="required" placeholder="请输入注册时的ID" autocomplete="off"
class="layui-input">
<!-- 创建一个文本输入框,设置了以下属性:
- type="text":表明是文本类型的输入框,用于用户输入文本信息。
- name="account":为输入框设置一个名称,方便后续在表单提交等操作中识别和获取该输入框的值。
- requiredHTML5的属性表明这个输入框是必填项浏览器会进行相应的验证提示。
- lay-verify="required"Layui框架的验证属性再次强调这个输入框是必填的当用户提交表单时如果该输入框为空会触发验证提示。
- placeholder="请输入注册时的ID":在输入框为空时显示的提示文本,提示用户应该输入的内容。
- autocomplete="off":关闭浏览器的自动填充功能,避免浏览器自动填充一些不合适的信息到该输入框。
- class="layui-input"应用Layui框架中针对输入框的样式类使输入框呈现出相应的外观样式。 -->
</div>
<div class="layui-input-inline">
<label class="layadmin-user-login-icon layui-icon layui-icon-email"></label>
<input type="password" name="password" required lay-verify="required" placeholder="用于找回的邮箱" autocomplete="off"
class="layui-input">
<!-- 与上面的输入框类似不过这里是一个密码类型的输入框type="password"),用于用户输入找回密码所需要的邮箱地址,同样设置了必填、验证、提示文本等相关属性 -->
</div>
<div class="layui-input-inline login-btn">
<!-- 又是一个行内块级的<div>元素用于放置提交按钮并且应用了login-btn类可能用于对按钮设置特定的样式比如大小、颜色等 -->
<button lay-submit lay-filter="login" class="layui-btn">找回</button>
<!-- 创建一个按钮元素应用了layui-btn类使其呈现Layui框架中按钮的默认样式lay-submit属性表示这个按钮可以触发表单提交操作lay-filter="login"属性用于为按钮绑定一个特定的事件过滤器方便后续在JavaScript代码中对按钮的点击事件进行监听和处理 -->
</div>
<hr/>
<!-- 创建一个水平分割线元素,用于在页面上划分不同的区域,起到视觉上的分隔作用 -->
<p><a href="login.jsp" class="fl">登录&emsp;&emsp;&emsp;&emsp;</a><a href="https://yoyling.com" class="fl">如果你未绑定邮箱请联系我</a><a href="register.jsp" class="fr">注册</a></p>
<!-- 创建一个段落元素,里面包含了三个链接元素:
- 第一个链接href="login.jsp"指向登录页面login.jsp并应用了fl类可能用于设置左浮动等样式布局相关操作显示文本“登录”方便用户在忘记密码页面可以直接跳转到登录页面。
- 第二个链接href="https://yoyling.com"指向一个外部网站yoyling.com同样应用了fl类显示文本“如果你未绑定邮箱请联系我”用于提示用户在未绑定邮箱的情况下如何寻求帮助。
- 第三个链接href="register.jsp"指向注册页面register.jsp应用了fr类可能用于设置右浮动等样式布局相关操作显示文本“注册”方便用户进行注册相关操作。 -->
</form>
</div>
</div>
<footer style="position:absolute;bottom:0;width:100%;height:30px; text-align: center;">© 2018-2019.YOYLING.COM</footer>
<!-- 创建一个<footer>元素通过内联样式设置其绝对定位在页面底部bottom:0宽度占满整个页面width:100%高度为30px并且文本居中对齐text-align: center用于显示版权相关的声明信息“© 2018-2019.YOYLING.COM” -->
<script type="text/javascript">
layui.use(['form','layer','jquery'], function () {
// 使用Layui框架的模块加载机制加载名为'form'(用于表单操作和验证等功能)、'layer'(用于弹出层提示等功能)、'jquery'虽然这里写的是加载但实际上可能是Layui内部已经集成了jQuery或者对其进行了适配用于进行DOM操作、AJAX请求等常见的JavaScript操作的模块加载完成后执行回调函数。
// 操作对象
var form = layui.form;
// 获取Layui框架中表单模块的实例对象后续可以通过这个对象调用表单相关的方法比如进行表单验证、监听表单提交事件等操作。
var $ = layui.jquery;
// 获取Layui框架中经过适配后的jQuery对象或者就是原生的jQuery对象如果Layui是基于它来集成的方便后续进行各种DOM操作和AJAX请求等操作。
form.on('submit(login)',function (data) {
// 使用表单模块的on方法来监听表单提交事件这里监听的是lay-filter="login"的按钮点击提交表单时触发的事件。当事件触发时会传入一个包含表单数据等信息的参数data执行回调函数内的代码。
// console.log(data.field);
// 这行代码如果取消注释,可以在控制台打印出表单中各个输入框等元素提交的数据,用于调试查看用户输入的内容是否正确获取到了,此处是获取到以对象形式存储的表单数据(字段名为键,用户输入的值为对应的值)。
$.ajax({
url:'login.php',
// 设置AJAX请求的目标URL地址这里是向名为login.php的服务器端脚本文件发送请求通常这个文件会用于处理登录相关的业务逻辑此处是忘记密码的验证逻辑可能存在复用情况比如验证用户输入的账号和邮箱是否匹配等操作。
data:data.field,
// 将获取到的表单数据前面提到的data.field作为请求的数据发送给服务器端服务器端可以根据这些数据进行相应的处理。
dataType:'text',
// 设置期望从服务器端返回的数据类型为文本类型,意味着服务器端返回的内容会被当作普通文本进行处理。
type:'post',
// 设置AJAX请求的方式为POST方式相比于GET方式POST方式更适合用于提交表单数据等需要传递较多数据或者敏感数据的情况数据会放在请求体中发送给服务器端。
success:function (data) {
// 这是AJAX请求成功后的回调函数当服务器端正确响应并返回数据后会执行这个函数参数data就是服务器端返回的数据内容。
if (data == '1'){
location.href = "../index.php";
// 如果服务器端返回的数据内容是'1'则认为验证通过通过修改浏览器的地址栏将页面重定向到上级目录下的index.php页面这里推测index.php可能是系统的主页面或者登录成功后的欢迎页面等。
}else{
layer.msg('登录名或密码错误');
// 如果服务器端返回的数据不是'1'则认为验证失败使用Layui框架的layer模块弹出一个提示消息框显示“登录名或密码错误”的提示信息告知用户验证未通过的原因。
}
}
})
return false;
// 返回false阻止表单的默认提交行为因为这里已经通过AJAX方式手动向服务器端发送了请求不需要浏览器再进行默认的表单提交操作了避免页面刷新等不必要的情况发生。
})
});

@ -1,28 +1,42 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!-- 页面指令:
contentType="text/html;charset=UTF-8"指定了该JSP页面返回给客户端的内容类型是HTML格式并且字符编码采用UTF-8这样可以确保页面能够正确显示包含各种语言文字尤其是中文等非ASCII字符的内容避免出现乱码情况。
language="java"表明该JSP页面使用Java语言来编写脚本代码JSP本质上最终会被服务器编译成ServletJava类来执行这里明确了其脚本所基于的编程语言。
-->
<html>
<head>
<title>TITLE</title>
</head>
<body>
<%
if (session.getAttribute("student")!=null) {
// 以下这段代码基于服务器端的会话session对象来判断用户的角色并根据不同的角色进行页面转发操作。
// 它通过检查session对象中存储的特定属性student、teacher、admin是否存在来确定用户身份然后将请求转发到相应的初始页面
// 如果这些属性都不存在意味着用户未登录或者登录状态失效等情况就将请求转发到login.jsp页面让用户进行登录操作。
if (session.getAttribute("student")!= null) {
// 使用session.getAttribute("student")尝试从当前会话中获取名为student的属性值
// 如果获取到的值不为null表示当前用户的角色是学生此时执行下面的转发操作
// 利用JSP的转发标签<jsp:forward>将请求转发到WEB-INF/student/sIndex.jsp页面。
// WEB-INF目录下的资源通常是受保护的不能直接通过浏览器URL访问需要通过服务器端的转发等内部机制来访问这样可以提高页面的安全性避免用户直接绕过权限检查去访问一些应该有权限限制的页面。
%>
<jsp:forward page = "/WEB-INF/student/sIndex.jsp"/>
<jsp:forward page="/WEB-INF/student/sIndex.jsp" />
<%
}else if (session.getAttribute("teacher")!=null) {
} else if (session.getAttribute("teacher")!= null) {
// 类似地如果student属性不存在但是teacher属性存在于会话中说明用户角色是教师就会把请求转发到WEB-INF/teacher/tIndex.jsp页面。
%>
<jsp:forward page = "/WEB-INF/teacher/tIndex.jsp"/>
<jsp:forward page="/WEB-INF/teacher/tIndex.jsp" />
<%
}else if (session.getAttribute("admin")!=null) {
} else if (session.getAttribute("admin")!= null) {
// 若student和teacher属性都不存在而admin属性存在表明用户是管理员角色会将请求转发到WEB-INF/admin/aIndex.jsp页面。
%>
<jsp:forward page = "/WEB-INF/admin/aIndex.jsp"/>
<jsp:forward page="/WEB-INF/admin/aIndex.jsp" />
<%
}else {
} else {
// 前面几个条件都不满足也就是上述代表不同角色的属性在会话中都不存在时会将请求转发到login.jsp页面引导用户进行登录
// 建立相应的会话属性来标识其角色,后续再次访问时就能根据角色转发到对应的页面了。
%>
<jsp:forward page = "login.jsp" />
<jsp:forward page="login.jsp" />
<%
}
%>
</body>
</html>
</html>

@ -1,2 +1,157 @@
/** layui-v2.5.6 MIT License By https://www.layui.com */
;layui.define("jquery",function(e){"use strict";var i=layui.$,n=(layui.hint(),layui.device(),{config:{},set:function(e){var n=this;return n.config=i.extend({},n.config,e),n},on:function(e,i){return layui.onevent.call(this,t,e,i)}}),t="carousel",a="layui-this",l=">*[carousel-item]>*",o="layui-carousel-left",r="layui-carousel-right",d="layui-carousel-prev",s="layui-carousel-next",u="layui-carousel-arrow",c="layui-carousel-ind",m=function(e){var t=this;t.config=i.extend({},t.config,n.config,e),t.render()};m.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},m.prototype.render=function(){var e=this,n=e.config;n.elem=i(n.elem),n.elem[0]&&(e.elemItem=n.elem.find(l),n.index<0&&(n.index=0),n.index>=e.elemItem.length&&(n.index=e.elemItem.length-1),n.interval<800&&(n.interval=800),n.full?n.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):n.elem.css({width:n.width,height:n.height}),n.elem.attr("lay-anim",n.anim),e.elemItem.eq(n.index).addClass(a),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},m.prototype.reload=function(e){var n=this;clearInterval(n.timer),n.config=i.extend({},n.config,e),n.render()},m.prototype.prevIndex=function(){var e=this,i=e.config,n=i.index-1;return n<0&&(n=e.elemItem.length-1),n},m.prototype.nextIndex=function(){var e=this,i=e.config,n=i.index+1;return n>=e.elemItem.length&&(n=0),n},m.prototype.addIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index+e,n.index>=i.elemItem.length&&(n.index=0)},m.prototype.subIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index-e,n.index<0&&(n.index=i.elemItem.length-1)},m.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},m.prototype.arrow=function(){var e=this,n=e.config,t=i(['<button class="layui-icon '+u+'" lay-type="sub">'+("updown"===n.anim?"&#xe619;":"&#xe603;")+"</button>",'<button class="layui-icon '+u+'" lay-type="add">'+("updown"===n.anim?"&#xe61a;":"&#xe602;")+"</button>"].join(""));n.elem.attr("lay-arrow",n.arrow),n.elem.find("."+u)[0]&&n.elem.find("."+u).remove(),n.elem.append(t),t.on("click",function(){var n=i(this),t=n.attr("lay-type");e.slide(t)})},m.prototype.indicator=function(){var e=this,n=e.config,t=e.elemInd=i(['<div class="'+c+'"><ul>',function(){var i=[];return layui.each(e.elemItem,function(e){i.push("<li"+(n.index===e?' class="layui-this"':"")+"></li>")}),i.join("")}(),"</ul></div>"].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+c)[0]&&n.elem.find("."+c).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-(t.height()/2)),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){var t=i(this),a=t.index();a>n.index?e.slide("add",a-n.index):a<n.index&&e.slide("sub",n.index-a)})},m.prototype.slide=function(e,i){var n=this,l=n.elemItem,u=n.config,c=u.index,m=u.elem.attr("lay-filter");n.haveSlide||("sub"===e?(n.subIndex(i),l.eq(u.index).addClass(d),setTimeout(function(){l.eq(c).addClass(r),l.eq(u.index).addClass(r)},50)):(n.addIndex(i),l.eq(u.index).addClass(s),setTimeout(function(){l.eq(c).addClass(o),l.eq(u.index).addClass(o)},50)),setTimeout(function(){l.removeClass(a+" "+d+" "+s+" "+o+" "+r),l.eq(u.index).addClass(a),n.haveSlide=!1},300),n.elemInd.find("li").eq(u.index).addClass(a).siblings().removeClass(a),n.haveSlide=!0,layui.event.call(this,t,"change("+m+")",{index:u.index,prevIndex:c,item:l.eq(u.index)}))},m.prototype.events=function(){var e=this,i=e.config;i.elem.data("haveEvents")||(i.elem.on("mouseenter",function(){clearInterval(e.timer)}).on("mouseleave",function(){e.autoplay()}),i.elem.data("haveEvents",!0))},n.render=function(e){var i=new m(e);return i},e(t,n)});
;layui.define("jquery",function(e){"use strict";
// 引入 layui 的 $jQuery模块
var i=layui.$,
// 初始化配置对象
n=(layui.hint(),layui.device(),{config:{},set:function(e){
var n=this;
// 设置配置
return n.config=i.extend({},n.config,e),n},
on:function(e,i){
return layui.onevent.call(this,t,e,i)}}),
// 定义常量
t="carousel", // 轮播图的名称
a="layui-this", // 当前活动的元素
l=">*[carousel-item]>*", // 选择轮播图的每一个项目
o="layui-carousel-left", // 左箭头
r="layui-carousel-right", // 右箭头
d="layui-carousel-prev", // 上一项按钮
s="layui-carousel-next", // 下一项按钮
u="layui-carousel-arrow", // 箭头
c="layui-carousel-ind", // 指示器(小圆点)
// 定义轮播图的核心功能
m=function(e){
var t=this;
t.config=i.extend({},t.config,n.config,e),t.render()
};
// 轮播图的默认配置
m.prototype.config={
width:"600px", // 默认宽度
height:"280px", // 默认高度
full:!1, // 是否全屏
arrow:"hover", // 箭头显示方式hover即鼠标悬浮时显示
indicator:"inside", // 指示器的位置inside表示在轮播图内
autoplay:!0, // 是否自动播放
interval:3e3, // 自动播放的间隔时间,单位是毫秒
anim:"", // 动画效果
trigger:"click", // 触发方式:点击
index:0 // 默认显示第0项
},
// 渲染轮播图
m.prototype.render=function(){
var e=this,n=e.config;
n.elem=i(n.elem),
n.elem[0]&&(e.elemItem=n.elem.find(l),n.index<0&&(n.index=0),n.index>=e.elemItem.length&&(n.index=e.elemItem.length-1),n.interval<800&&(n.interval=800),n.full?n.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):n.elem.css({width:n.width,height:n.height}),n.elem.attr("lay-anim",n.anim),e.elemItem.eq(n.index).addClass(a),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))
},
// 重新加载轮播图
m.prototype.reload=function(e){
var n=this;
clearInterval(n.timer),
n.config=i.extend({},n.config,e),
n.render()
},
// 获取上一项的索引
m.prototype.prevIndex=function(){
var e=this,i=e.config,n=i.index-1;
return n<0&&(n=e.elemItem.length-1),n
},
// 获取下一项的索引
m.prototype.nextIndex=function(){
var e=this,i=e.config,n=i.index+1;
return n>=e.elemItem.length&&(n=0),n
},
// 增加索引
m.prototype.addIndex=function(e){
var i=this,n=i.config;
e=e||1,n.index=n.index+e,n.index>=i.elemItem.length&&(n.index=0)
},
// 减少索引
m.prototype.subIndex=function(e){
var i=this,n=i.config;
e=e||1,n.index=n.index-e,n.index<0&&(n.index=i.elemItem.length-1)
},
// 自动播放
m.prototype.autoplay=function(){
var e=this,i=e.config;
i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){
e.slide()
},i.interval))
},
// 箭头按钮
m.prototype.arrow=function(){
var e=this,n=e.config,t=i(['<button class="layui-icon '+u+'" lay-type="sub">'+("updown"===n.anim?"&#xe619;":"&#xe603;")+"</button>",
'<button class="layui-icon '+u+'" lay-type="add">'+("updown"===n.anim?"&#xe61a;":"&#xe602;")+"</button>"].join(""));
// 设置箭头的显示方式
n.elem.attr("lay-arrow",n.arrow),
n.elem.find("."+u)[0]&&n.elem.find("."+u).remove(),
n.elem.append(t),
t.on("click",function(){
var n=i(this),t=n.attr("lay-type");
e.slide(t)
})
},
// 指示器
m.prototype.indicator=function(){
var e=this,n=e.config,t=e.elemInd=i(['<div class="'+c+'"><ul>',function(){
var i=[];
return layui.each(e.elemItem,function(e){
i.push("<li"+(n.index===e?' class="layui-this"':"")+"></li>")
}),i.join("")
}(),"</ul></div>"].join(""));
// 设置指示器的显示方式
n.elem.attr("lay-indicator",n.indicator),
n.elem.find("."+c)[0]&&n.elem.find("."+c).remove(),
n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-(t.height()/2)),
t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){
var t=i(this),a=t.index();
a>n.index?e.slide("add",a-n.index):a<n.index&&e.slide("sub",n.index-a)
})
},
// 切换轮播图
m.prototype.slide=function(e,i){
var n=this,l=n.elemItem,u=n.config,c=u.index,m=u.elem.attr("lay-filter");
n.haveSlide||("sub"===e?(n.subIndex(i),l.eq(u.index).addClass(d),setTimeout(function(){
l.eq(c).addClass(r),l.eq(u.index).addClass(r)
},50)):(n.addIndex(i),l.eq(u.index).addClass(s),setTimeout(function(){
l.eq(c).addClass(o),l.eq(u.index).addClass(o)
},50)),setTimeout(function(){
l.removeClass(a+" "+d+" "+s+" "+o+" "+r),l.eq(u.index).addClass(a),
n.haveSlide=!1
},300),n.elemInd.find("li").eq(u.index).addClass(a).siblings().removeClass(a),
n.haveSlide=!0,layui.event.call(this,t,"change("+m+")",{index:u.index,prevIndex:c,item:l.eq(u.index)}))
},
// 事件绑定
m.prototype.events=function(){
var e=this,i=e.config;
i.elem.data("haveEvents")||(i.elem.on("mouseenter",function(){
clearInterval(e.timer)
}).on("mouseleave",function(){
e.autoplay()
}),i.elem.data("haveEvents",!0))
},
// 初始化轮播图
n.render=function(e){
var i=new m(e);
return i
},
// 触发layui事件
e(t,n)
});

@ -1,2 +1,58 @@
/** layui-v2.5.6 MIT License By https://www.layui.com */
;layui.define("jquery",function(e){"use strict";var a=layui.$,l="http://www.layui.com/doc/modules/code.html";e("code",function(e){var t=[];e=e||{},e.elem=a(e.elem||".layui-code"),e.about=!("about"in e)||e.about,e.elem.each(function(){t.push(this)}),layui.each(t.reverse(),function(t,i){var c=a(i),o=c.html();(c.attr("lay-encode")||e.encode)&&(o=o.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&#39;").replace(/"/g,"&quot;")),c.html('<ol class="layui-code-ol"><li>'+o.replace(/[\r\t\n]+/g,"</li><li>")+"</li></ol>"),c.find(">.layui-code-h3")[0]||c.prepend('<h3 class="layui-code-h3">'+(c.attr("lay-title")||e.title||"code")+(e.about?'<a href="'+l+'" target="_blank">layui.code</a>':"")+"</h3>");var d=c.find(">.layui-code-ol");c.addClass("layui-box layui-code-view"),(c.attr("lay-skin")||e.skin)&&c.addClass("layui-code-"+(c.attr("lay-skin")||e.skin)),(d.find("li").length/100|0)>0&&d.css("margin-left",(d.find("li").length/100|0)+"px"),(c.attr("lay-height")||e.height)&&d.css("max-height",c.attr("lay-height")||e.height)})})}).addcss("modules/code.css","skincodecss");
;layui.define("jquery",function(e){"use strict";
// 引入 layui 的 $jQuery模块
var a=layui.$,
// layui 文档模块的 URL 地址
l="http://www.layui.com/doc/modules/code.html";
// 定义模块 "code",并执行传入的函数
e("code",function(e){
var t=[]; // 初始化一个空数组,用于存储每个代码块元素
// 如果 e 参数未定义,则默认为空对象
e=e||{},
// 如果 e 中没有指定 about则默认为 true
e.about=!("about"in e)||e.about,
// 获取所有指定的代码块元素,默认为 .layui-code
e.elem=a(e.elem||".layui-code"),
// 遍历所有代码块元素
e.elem.each(function(){
t.push(this); // 将每个代码块元素添加到数组 t 中
}),
// 倒序遍历每个代码块元素
layui.each(t.reverse(),function(t,i){
var c=a(i), // 获取当前代码块元素
o=c.html(); // 获取当前代码块的 HTML 内容
// 如果代码块元素有 lay-encode 属性或者传入参数 e.encode 为真,进行 HTML 转义
(c.attr("lay-encode")||e.encode)&&(o=o.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&amp;")
.replace(/</g,"&lt;")
.replace(/>/g,"&gt;")
.replace(/'/g,"&#39;")
.replace(/"/g,"&quot;"));
// 将转义后的 HTML 内容分行显示,每行一个 <li> 元素
c.html('<ol class="layui-code-ol"><li>'+o.replace(/[\r\t\n]+/g,"</li><li>")+"</li></ol>");
// 如果没有标题插入一个标题h3标题内容可以通过 lay-title 来指定
c.find(">.layui-code-h3")[0] || c.prepend('<h3 class="layui-code-h3">'+(c.attr("lay-title")||e.title||"code")+(e.about?'<a href="'+l+'" target="_blank">layui.code</a>':"")+"</h3>");
// 获取代码块中的 <ol> 元素
var d=c.find(">.layui-code-ol");
// 为代码块添加类名,设置样式
c.addClass("layui-box layui-code-view"),
// 如果有指定 skin 或 lay-skin给代码块添加相应的样式
(c.attr("lay-skin")||e.skin) && c.addClass("layui-code-"+(c.attr("lay-skin")||e.skin)),
// 如果代码行数超过100行设置左边距使其有缩进效果
(d.find("li").length/100|0)>0 && d.css("margin-left",(d.find("li").length/100|0)+"px"),
// 如果指定了 lay-height 或者传入的参数 e.height设置最大高度
(c.attr("lay-height")||e.height) && d.css("max-height",c.attr("lay-height")||e.height)
})
})})
// 引入代码块的 CSS 样式
.addcss("modules/code.css","skincodecss");

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,2 +1,118 @@
/** layui-v2.5.6 MIT License By https://www.layui.com */
;layui.define("jquery",function(e){"use strict";var l=layui.$,o=function(e){},t='<i class="layui-anim layui-anim-rotate layui-anim-loop layui-icon ">&#xe63e;</i>';o.prototype.load=function(e){var o,i,n,r,a=this,c=0;e=e||{};var f=l(e.elem);if(f[0]){var m=l(e.scrollElem||document),u=e.mb||50,s=!("isAuto"in e)||e.isAuto,v=e.end||"没有更多了",y=e.scrollElem&&e.scrollElem!==document,d="<cite>加载更多</cite>",h=l('<div class="layui-flow-more"><a href="javascript:;">'+d+"</a></div>");f.find(".layui-flow-more")[0]||f.append(h);var p=function(e,t){e=l(e),h.before(e),t=0==t||null,t?h.html(v):h.find("a").html(d),i=t,o=null,n&&n()},g=function(){o=!0,h.find("a").html(t),"function"==typeof e.done&&e.done(++c,p)};if(g(),h.find("a").on("click",function(){l(this);i||o||g()}),e.isLazyimg)var n=a.lazyimg({elem:e.elem+" img",scrollElem:e.scrollElem});return s?(m.on("scroll",function(){var e=l(this),t=e.scrollTop();r&&clearTimeout(r),!i&&f.width()&&(r=setTimeout(function(){var i=y?e.height():l(window).height(),n=y?e.prop("scrollHeight"):document.documentElement.scrollHeight;n-t-i<=u&&(o||g())},100))}),a):a}},o.prototype.lazyimg=function(e){var o,t=this,i=0;e=e||{};var n=l(e.scrollElem||document),r=e.elem||"img",a=e.scrollElem&&e.scrollElem!==document,c=function(e,l){var o=n.scrollTop(),r=o+l,c=a?function(){return e.offset().top-n.offset().top+o}():e.offset().top;if(c>=o&&c<=r&&!e.attr("src")){var m=e.attr("lay-src");layui.img(m,function(){var l=t.lazyimg.elem.eq(i);e.attr("src",m).removeAttr("lay-src"),l[0]&&f(l),i++})}},f=function(e,o){var f=a?(o||n).height():l(window).height(),m=n.scrollTop(),u=m+f;if(t.lazyimg.elem=l(r),e)c(e,f);else for(var s=0;s<t.lazyimg.elem.length;s++){var v=t.lazyimg.elem.eq(s),y=a?function(){return v.offset().top-n.offset().top+m}():v.offset().top;if(c(v,f),i=s,y>u)break}};if(f(),!o){var m;n.on("scroll",function(){var e=l(this);m&&clearTimeout(m),m=setTimeout(function(){f(null,e)},50)}),o=!0}return f},e("flow",new o)});
;layui.define("jquery", function(e) {
"use strict";
var l = layui.$, o = function(e) {}, t = '<i class="layui-anim layui-anim-rotate layui-anim-loop layui-icon ">&#xe63e;</i>';
// 定义 load 方法,用于加载更多内容
o.prototype.load = function(e) {
var o, i, n, r, a = this, c = 0;
e = e || {};
var f = l(e.elem); // 获取加载更多按钮所在的元素
if (f[0]) { // 如果该元素存在
var m = l(e.scrollElem || document), // 获取滚动容器元素,默认为 document
u = e.mb || 50, // 滚动到距离底部多少距离时触发加载更多
s = !("isAuto" in e) || e.isAuto, // 是否自动加载
v = e.end || "没有更多了", // 加载完成后的提示
y = e.scrollElem && e.scrollElem !== document, // 判断是否是自定义滚动区域
d = "<cite>加载更多</cite>", // 默认的加载更多文本
h = l('<div class="layui-flow-more"><a href="javascript:;">' + d + "</a></div>");
f.find(".layui-flow-more")[0] || f.append(h); // 如果没有加载更多的按钮,则追加
var p = function(e, t) {
e = l(e);
h.before(e); // 将新内容插入到加载更多按钮之前
t = 0 == t || null;
t ? h.html(v) : h.find("a").html(d); // 如果已加载完毕,显示“没有更多了”
i = t;
o = null;
n && n();
};
// 加载更多逻辑
var g = function() {
o = !0;
h.find("a").html(t); // 显示加载动画
"function" == typeof e.done && e.done(++c, p); // 如果有 done 方法,调用它
};
// 初始化加载
g();
// 点击加载更多时,触发加载操作
h.find("a").on("click", function() {
l(this);
i || o || g();
});
// 如果启用了懒加载
if (e.isLazyimg) var n = a.lazyimg({ elem: e.elem + " img", scrollElem: e.scrollElem });
return s ? (m.on("scroll", function() {
var e = l(this), t = e.scrollTop();
r && clearTimeout(r);
!i && f.width() && (r = setTimeout(function() {
var i = y ? e.height() : l(window).height(),
n = y ? e.prop("scrollHeight") : document.documentElement.scrollHeight;
// 滚动到底部时加载更多
n - t - i <= u && (o || g());
}, 100));
}), a) : a;
}
};
// 懒加载方法
o.prototype.lazyimg = function(e) {
var o, t = this, i = 0;
e = e || {};
var n = l(e.scrollElem || document), r = e.elem || "img", a = e.scrollElem && e.scrollElem !== document;
// 图片加载检查和设置
var c = function(e, l) {
var o = n.scrollTop(), r = o + l, c = a ? function() {
return e.offset().top - n.offset().top + o;
}() : e.offset().top;
if (c >= o && c <= r && !e.attr("src")) {
var m = e.attr("lay-src");
layui.img(m, function() {
var l = t.lazyimg.elem.eq(i);
e.attr("src", m).removeAttr("lay-src");
l[0] && f(l);
i++;
});
}
};
// 触发懒加载
var f = function(e, o) {
var f = a ? (o || n).height() : l(window).height(), m = n.scrollTop(), u = m + f;
t.lazyimg.elem = l(r);
if (e) c(e, f);
else {
for (var s = 0; s < t.lazyimg.elem.length; s++) {
var v = t.lazyimg.elem.eq(s),
y = a ? function() {
return v.offset().top - n.offset().top + m;
}() : v.offset().top;
if (c(v, f), i = s, y > u) break;
}
}
};
// 初次加载图片
f();
if (!o) {
var m;
n.on("scroll", function() {
var e = l(this);
m && clearTimeout(m);
m = setTimeout(function() {
f(null, e);
}, 50);
});
o = !0;
}
return f;
};
// 定义模块接口
e("flow", new o);
});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,2 +1,138 @@
/** layui-v2.5.6 MIT License By https://www.layui.com */
;layui.define(function(e){"use strict";var a=document,t="getElementById",n="getElementsByTagName",i="laypage",r="layui-disabled",u=function(e){var a=this;a.config=e||{},a.config.index=++s.index,a.render(!0)};u.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return void 0===e.elem.length?2:3},u.prototype.view=function(){var e=this,a=e.config,t=a.groups="groups"in a?0|a.groups:5;a.layout="object"==typeof a.layout?a.layout:["prev","page","next"],a.count=0|a.count,a.curr=0|a.curr||1,a.limits="object"==typeof a.limits?a.limits:[10,20,30,40,50],a.limit=0|a.limit||10,a.pages=Math.ceil(a.count/a.limit)||1,a.curr>a.pages&&(a.curr=a.pages),t<0?t=1:t>a.pages&&(t=a.pages),a.prev="prev"in a?a.prev:"&#x4E0A;&#x4E00;&#x9875;",a.next="next"in a?a.next:"&#x4E0B;&#x4E00;&#x9875;";var n=a.pages>t?Math.ceil((a.curr+(t>1?1:0))/(t>0?t:1)):1,i={prev:function(){return a.prev?'<a href="javascript:;" class="layui-laypage-prev'+(1==a.curr?" "+r:"")+'" data-page="'+(a.curr-1)+'">'+a.prev+"</a>":""}(),page:function(){var e=[];if(a.count<1)return"";n>1&&a.first!==!1&&0!==t&&e.push('<a href="javascript:;" class="layui-laypage-first" data-page="1" title="&#x9996;&#x9875;">'+(a.first||1)+"</a>");var i=Math.floor((t-1)/2),r=n>1?a.curr-i:1,u=n>1?function(){var e=a.curr+(t-i-1);return e>a.pages?a.pages:e}():t;for(u-r<t-1&&(r=u-t+1),a.first!==!1&&r>2&&e.push('<span class="layui-laypage-spr">&#x2026;</span>');r<=u;r++)r===a.curr?e.push('<span class="layui-laypage-curr"><em class="layui-laypage-em" '+(/^#/.test(a.theme)?'style="background-color:'+a.theme+';"':"")+"></em><em>"+r+"</em></span>"):e.push('<a href="javascript:;" data-page="'+r+'">'+r+"</a>");return a.pages>t&&a.pages>u&&a.last!==!1&&(u+1<a.pages&&e.push('<span class="layui-laypage-spr">&#x2026;</span>'),0!==t&&e.push('<a href="javascript:;" class="layui-laypage-last" title="&#x5C3E;&#x9875;" data-page="'+a.pages+'">'+(a.last||a.pages)+"</a>")),e.join("")}(),next:function(){return a.next?'<a href="javascript:;" class="layui-laypage-next'+(a.curr==a.pages?" "+r:"")+'" data-page="'+(a.curr+1)+'">'+a.next+"</a>":""}(),count:'<span class="layui-laypage-count">共 '+a.count+" 条</span>",limit:function(){var e=['<span class="layui-laypage-limits"><select lay-ignore>'];return layui.each(a.limits,function(t,n){e.push('<option value="'+n+'"'+(n===a.limit?"selected":"")+">"+n+" 条/页</option>")}),e.join("")+"</select></span>"}(),refresh:['<a href="javascript:;" data-page="'+a.curr+'" class="layui-laypage-refresh">','<i class="layui-icon layui-icon-refresh"></i>',"</a>"].join(""),skip:function(){return['<span class="layui-laypage-skip">&#x5230;&#x7B2C;','<input type="text" min="1" value="'+a.curr+'" class="layui-input">','&#x9875;<button type="button" class="layui-laypage-btn">&#x786e;&#x5b9a;</button>',"</span>"].join("")}()};return['<div class="layui-box layui-laypage layui-laypage-'+(a.theme?/^#/.test(a.theme)?"molv":a.theme:"default")+'" id="layui-laypage-'+a.index+'">',function(){var e=[];return layui.each(a.layout,function(a,t){i[t]&&e.push(i[t])}),e.join("")}(),"</div>"].join("")},u.prototype.jump=function(e,a){if(e){var t=this,i=t.config,r=e.children,u=e[n]("button")[0],l=e[n]("input")[0],p=e[n]("select")[0],c=function(){var e=0|l.value.replace(/\s|\D/g,"");e&&(i.curr=e,t.render())};if(a)return c();for(var o=0,y=r.length;o<y;o++)"a"===r[o].nodeName.toLowerCase()&&s.on(r[o],"click",function(){var e=0|this.getAttribute("data-page");e<1||e>i.pages||(i.curr=e,t.render())});p&&s.on(p,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),u&&s.on(u,"click",function(){c()})}},u.prototype.skip=function(e){if(e){var a=this,t=e[n]("input")[0];t&&s.on(t,"keyup",function(t){var n=this.value,i=t.keyCode;/^(37|38|39|40)$/.test(i)||(/\D/.test(n)&&(this.value=n.replace(/\D/,"")),13===i&&a.jump(e,!0))})}},u.prototype.render=function(e){var n=this,i=n.config,r=n.type(),u=n.view();2===r?i.elem&&(i.elem.innerHTML=u):3===r?i.elem.html(u):a[t](i.elem)&&(a[t](i.elem).innerHTML=u),i.jump&&i.jump(i,e);var s=a[t]("layui-laypage-"+i.index);n.jump(s),i.hash&&!e&&(location.hash="!"+i.hash+"="+i.curr),n.skip(s)};var s={render:function(e){var a=new u(e);return a.index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(e,a,t){return e.attachEvent?e.attachEvent("on"+a,function(a){a.target=a.srcElement,t.call(e,a)}):e.addEventListener(a,t,!1),this}};e(i,s)});
layui.define(function(e){"use strict";
var a = document,
t = "getElementById",
n = "getElementsByTagName",
i = "laypage",
r = "layui-disabled", // 禁用的class
u = function(e) {
var a = this;
a.config = e || {}, a.config.index = ++s.index, a.render(!0);
};
u.prototype.type = function() {
var e = this.config;
// 判断传入的配置元素类型object类型如果只有一个元素就返回2如果有多个返回3
if ("object" == typeof e.elem) return void 0 === e.elem.length ? 2 : 3;
};
u.prototype.view = function() {
var e = this, a = e.config, t = a.groups = "groups" in a ? 0 | a.groups : 5;
// 设置分页的基本配置,包括显示的页数,当前页等
a.layout = "object" == typeof a.layout ? a.layout : ["prev", "page", "next"];
a.count = 0 | a.count;
a.curr = 0 | a.curr || 1;
a.limits = "object" == typeof a.limits ? a.limits : [10, 20, 30, 40, 50];
a.limit = 0 | a.limit || 10;
a.pages = Math.ceil(a.count / a.limit) || 1;
a.curr > a.pages && (a.curr = a.pages);
t < 0 ? t = 1 : t > a.pages && (t = a.pages);
a.prev = "prev" in a ? a.prev : "上一页";
a.next = "next" in a ? a.next : "下一页";
var n = a.pages > t ? Math.ceil((a.curr + (t > 1 ? 1 : 0)) / (t > 0 ? t : 1)) : 1;
// 创建分页的各个部分
var i = {
prev: function() {
return a.prev ? '<a href="javascript:;" class="layui-laypage-prev' + (1 == a.curr ? " " + r : "") + '" data-page="' + (a.curr - 1) + '">' + a.prev + "</a>" : "";
}(),
page: function() {
var e = [];
if (a.count < 1) return "";
n > 1 && a.first !== !1 && 0 !== t && e.push('<a href="javascript:;" class="layui-laypage-first" data-page="1" title="首页">' + (a.first || 1) + "</a>");
var i = Math.floor((t - 1) / 2),
r = n > 1 ? a.curr - i : 1,
u = n > 1 ? function() {
var e = a.curr + (t - i - 1);
return e > a.pages ? a.pages : e;
}() : t;
// 生成分页数字
for (u - r < t - 1 && (r = u - t + 1), a.first !== !1 && r > 2 && e.push('<span class="layui-laypage-spr">…</span>'); r <= u; r++)
r === a.curr ? e.push('<span class="layui-laypage-curr"><em class="layui-laypage-em" ' + (/^#/.test(a.theme) ? 'style="background-color:' + a.theme + ';"' : "") + "></em><em>" + r + "</em></span>") :
e.push('<a href="javascript:;" data-page="' + r + '">' + r + "</a>");
return a.pages > t && a.pages > u && a.last !== !1 && (u + 1 < a.pages && e.push('<span class="layui-laypage-spr">…</span>'), 0 !== t && e.push('<a href="javascript:;" class="layui-laypage-last" title="尾页" data-page="' + a.pages + '">' + (a.last || a.pages) + "</a>")), e.join("");
}(),
next: function() {
return a.next ? '<a href="javascript:;" class="layui-laypage-next' + (a.curr == a.pages ? " " + r : "") + '" data-page="' + (a.curr + 1) + '">' + a.next + "</a>" : "";
}(),
count: '<span class="layui-laypage-count">共 ' + a.count + " 条</span>",
limit: function() {
var e = ['<span class="layui-laypage-limits"><select lay-ignore>'];
layui.each(a.limits, function(t, n) {
e.push('<option value="' + n + '" ' + (n === a.limit ? "selected" : "") + ">" + n + " 条/页</option>");
});
return e.join("") + "</select></span>";
}(),
refresh: ['<a href="javascript:;" data-page="' + a.curr + '" class="layui-laypage-refresh">', '<i class="layui-icon layui-icon-refresh"></i>', "</a>"].join(""),
skip: function() {
return ['<span class="layui-laypage-skip">到第', '<input type="text" min="1" value="' + a.curr + '" class="layui-input">', '页<button type="button" class="layui-laypage-btn">确定</button>', "</span>"].join("");
}()
};
return ['<div class="layui-box layui-laypage layui-laypage-' + (a.theme ? /^#/.test(a.theme) ? "molv" : a.theme : "default") + '" id="layui-laypage-' + a.index + '">', function() {
var e = [];
return layui.each(a.layout, function(a, t) {
i[t] && e.push(i[t]);
}), e.join("");
}(), "</div>"].join("");
};
u.prototype.jump = function(e, a) {
if (e) {
var t = this, i = t.config, r = e.children, u = e[n]("button")[0], l = e[n]("input")[0], p = e[n]("select")[0], c = function() {
var e = 0 | l.value.replace(/\s|\D/g, "");
e && (i.curr = e, t.render());
};
if (a) return c();
for (var o = 0, y = r.length; o < y; o++) {
"a" === r[o].nodeName.toLowerCase() && s.on(r[o], "click", function() {
var e = 0 | this.getAttribute("data-page");
e < 1 || e > i.pages || (i.curr = e, t.render());
});
}
p && s.on(p, "change", function() {
var e = this.value;
i.curr * e > i.count && (i.curr = Math.ceil(i.count / e)), i.limit = e, t.render();
});
u && s.on(u, "click", function() {
c();
});
}
};
u.prototype.skip = function(e) {
if (e) {
var a = this, t = e[n]("input")[0];
t && s.on(t, "keyup", function(t) {
var n = this.value, i = t.keyCode;
/^(37|38|39|40)$/.test(i) || (/\\D/.test(n) && (this.value = n.replace(/\\D/, "")), 13 === i && a.jump(e, !0));
});
}
};
u.prototype.render = function(e) {
var n = this, i = n.config, r = n.type(), u = n.view();
2 === r ? i.elem && (i.elem.innerHTML = u) : 3 === r ? i.elem.html(u) : a[t](i.elem) && (a[t](i.elem).innerHTML = u);
i.jump && i.jump(i, e);
var s = a[t]("layui-laypage-" + i.index);
n.jump(s), i.hash && !e && (location.hash = "!" + i.hash + "=" + i.curr), n.skip(s);
};
var s = {
render: function(e) {
var a = new u(e);
return a.index;
},
index: layui.laypage ? layui.laypage.index + 1e4 : 0,
on: function(e, a, t) {
return e.attachEvent ? e.attachEvent("on" + a, function(a) {
a.target = a.srcElement, t.call(e, a);
}) : e.addEventListener(a, t, !1), this;
}
};
e(i, s);
});

@ -1,2 +1,86 @@
/** layui-v2.5.6 MIT License By https://www.layui.com */
;layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},c={exp:function(e){return new RegExp(e,"g")},query:function(e,c,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return n((c||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&#39;").replace(/"/g,"&quot;")},error:function(e,r){var c="Laytpl Error";return"object"==typeof console&&console.error(c+e+"\n"+(r||"")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n("^"+r.open+"#",""),l=n(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(n(r.open+"#"),r.open+"# ").replace(n(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(n(r.open+"!(.+?)!"+r.close),function(e){return e=e.replace(n("^"+r.open+"!"),"").replace(n("!"+r.close),"").replace(n(r.open+"|"+r.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(c.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(c.query(1),function(e){var c='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(n(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),c='"+_escape_('),c+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error("no data")};var o=function(e){return"string"!=typeof e?c.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v="1.2.0",e("laytpl",o)});
;layui.define(function(e){"use strict";
// 配置模板语法的起始和结束符
var r={open:"{{",close:"}}"},
// 定义常用的正则表达式和方法
c={
exp:function(e){ // 用于生成全局的正则表达式
return new RegExp(e,"g")
},
query:function(e,c,t){ // 生成模板查询的正则表达式
var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];
return n((c||"")+r.open+o+r.close+(t||""))
},
escape:function(e){ // 转义HTML特殊字符
return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&amp;")
.replace(/</g,"&lt;").replace(/>/g,"&gt;")
.replace(/'/g,"&#39;").replace(/"/g,"&quot;")
},
error:function(e,r){ // 输出错误信息
var c="Laytpl Error";
return "object"==typeof console&&console.error(c+e+"\n"+(r||"")),c+e
}
},
n=c.exp, // 正则表达式处理函数
t=function(e){ this.tpl=e }; // 定义一个模板处理类
t.pt=t.prototype, window.errors=0;
// 模板解析方法
t.pt.parse=function(e,t){
var o=this,p=e,a=n("^"+r.open+"#",""),l=n(r.close+"$","");
// 清理模板中的多余空格和符号
e=e.replace(/\s+|\r|\t|\n/g," ")
.replace(n(r.open+"#"),r.open+"# ")
.replace(n(r.close+"}"),"} "+r.close)
.replace(/\\/g,"\\\\")
.replace(n(r.open+"!(.+?)!"+r.close),function(e){
return e=e.replace(n("^"+r.open+"!"),"")
.replace(n("!"+r.close),"")
.replace(n(r.open+"|"+r.close),function(e){
return e.replace(/(.)/g,"\\$1")
})
})
.replace(/(?="|')/g,"\\")
.replace(c.query(),function(e){
return e=e.replace(a,"").replace(l,""),
'";'+e.replace(/\\/g,"")+';view+="'
})
.replace(c.query(1),function(e){
var c='"+(';
return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(n(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),c='"+_escape_('),c+e.replace(/\\/g,"")+')+"')
});
// 构建最终的JavaScript代码
e='"use strict";var view = "'+e+'";return view;';
try{
// 执行生成的模板代码
return o.cache=e=new Function("d, _escape_",e),e(t,c.escape)
}catch(u){
// 如果模板解析失败,输出错误信息
return delete o.cache,c.error(u,p)
}
};
// 渲染模板方法
t.pt.render=function(e,r){
var n,t=this;
return e ? (n=t.cache ? t.cache(e,c.escape) : t.parse(t.tpl,e), r ? void r(n) : n) : c.error("no data");
};
// 创建模板对象
var o=function(e){
return "string"!=typeof e ? c.error("Template not found") : new t(e)
};
// 配置模板引擎的选项
o.config=function(e){
e=e||{};
for(var c in e) r[c]=e[c]
};
// 设置模板版本
o.v="1.2.0", e("laytpl",o)
});

@ -1,2 +1,106 @@
/** layui-v2.5.6 MIT License By https://www.layui.com */
;layui.define("jquery",function(e){"use strict";var a=layui.jquery,i={config:{},index:layui.rate?layui.rate.index+1e4:0,set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,a){return layui.onevent.call(this,n,e,a)}},l=function(){var e=this,a=e.config;return{setvalue:function(a){e.setvalue.call(e,a)},config:a}},n="rate",t="layui-rate",o="layui-icon-rate",s="layui-icon-rate-solid",u="layui-icon-rate-half",r="layui-icon-rate-solid layui-icon-rate-half",c="layui-icon-rate-solid layui-icon-rate",f="layui-icon-rate layui-icon-rate-half",v=function(e){var l=this;l.index=++i.index,l.config=a.extend({},l.config,i.config,e),l.render()};v.prototype.config={length:5,text:!1,readonly:!1,half:!1,value:0,theme:""},v.prototype.render=function(){var e=this,i=e.config,l=i.theme?'style="color: '+i.theme+';"':"";i.elem=a(i.elem),parseInt(i.value)!==i.value&&(i.half||(i.value=Math.ceil(i.value)-i.value<.5?Math.ceil(i.value):Math.floor(i.value)));for(var n='<ul class="layui-rate" '+(i.readonly?"readonly":"")+">",u=1;u<=i.length;u++){var r='<li class="layui-inline"><i class="layui-icon '+(u>Math.floor(i.value)?o:s)+'" '+l+"></i></li>";i.half&&parseInt(i.value)!==i.value&&u==Math.ceil(i.value)?n=n+'<li><i class="layui-icon layui-icon-rate-half" '+l+"></i></li>":n+=r}n+="</ul>"+(i.text?'<span class="layui-inline">'+i.value+"星":"")+"</span>";var c=i.elem,f=c.next("."+t);f[0]&&f.remove(),e.elemTemp=a(n),i.span=e.elemTemp.next("span"),i.setText&&i.setText(i.value),c.html(e.elemTemp),c.addClass("layui-inline"),i.readonly||e.action()},v.prototype.setvalue=function(e){var a=this,i=a.config;i.value=e,a.render()},v.prototype.action=function(){var e=this,i=e.config,l=e.elemTemp,n=l.find("i").width();l.children("li").each(function(e){var t=e+1,v=a(this);v.on("click",function(e){if(i.value=t,i.half){var o=e.pageX-a(this).offset().left;o<=n/2&&(i.value=i.value-.5)}i.text&&l.next("span").text(i.value+"星"),i.choose&&i.choose(i.value),i.setText&&i.setText(i.value)}),v.on("mousemove",function(e){if(l.find("i").each(function(){a(this).addClass(o).removeClass(r)}),l.find("i:lt("+t+")").each(function(){a(this).addClass(s).removeClass(f)}),i.half){var c=e.pageX-a(this).offset().left;c<=n/2&&v.children("i").addClass(u).removeClass(s)}}),v.on("mouseleave",function(){l.find("i").each(function(){a(this).addClass(o).removeClass(r)}),l.find("i:lt("+Math.floor(i.value)+")").each(function(){a(this).addClass(s).removeClass(f)}),i.half&&parseInt(i.value)!==i.value&&l.children("li:eq("+Math.floor(i.value)+")").children("i").addClass(u).removeClass(c)})})},v.prototype.events=function(){var e=this;e.config},i.render=function(e){var a=new v(e);return l.call(a)},e(n,i)});
;layui.define("jquery",function(e){"use strict";
// 获取 layui 的 jQuery 实例
var a=layui.jquery,
i={config:{},index:layui.rate?layui.rate.index+1e4:0, // 默认配置
set:function(e){ // 设置配置项
var i=this;
return i.config=a.extend({},i.config,e),i
},
on:function(e,a){ // 监听事件
return layui.onevent.call(this,n,e,a)
}
};
// 定义局部变量
var l=function(){
var e=this,a=e.config;
return {
setvalue:function(a){ // 设置评分值
e.setvalue.call(e,a)
},
config:a
}
},
n="rate", // 定义组件标识符
t="layui-rate", // 样式类
o="layui-icon-rate", // 未选中的星星图标
s="layui-icon-rate-solid", // 选中的完整星星图标
u="layui-icon-rate-half", // 半星图标
r="layui-icon-rate-solid layui-icon-rate-half", // 完整星和半星
c="layui-icon-rate-solid layui-icon-rate", // 完整星图标
f="layui-icon-rate layui-icon-rate-half", // 半星图标样式
v=function(e){ // 评分控件构造函数
var l=this;
l.index=++i.index; // 自动递增索引
l.config=a.extend({},l.config,i.config,e); // 合并配置项
l.render(); // 渲染评分控件
};
v.prototype.config={length:5,text:!1,readonly:!1,half:!1,value:0,theme:""}, // 默认配置
v.prototype.render=function(){ // 渲染评分组件
var e=this,i=e.config,l=i.theme?'style="color: '+i.theme+';"':""; // 处理主题颜色
i.elem=a(i.elem); // 获取元素
parseInt(i.value)!==i.value&&(i.half||(i.value=Math.ceil(i.value)-i.value<.5?Math.ceil(i.value):Math.floor(i.value))); // 设置值为整数或半星
var n='<ul class="layui-rate" '+(i.readonly?"readonly":"")+">"; // 初始化评分组件HTML结构
for(var u=1;u<=i.length;u++){
var r='<li class="layui-inline"><i class="layui-icon '+(u>Math.floor(i.value)?o:s)+'" '+l+"></i></li>";
i.half&&parseInt(i.value)!==i.value&&u==Math.ceil(i.value)?
n=n+'<li><i class="layui-icon layui-icon-rate-half" '+l+"></i></li>":n+=r
}
n+="</ul>"+(i.text?'<span class="layui-inline">'+i.value+"星":"")+"</span>";
var c=i.elem, f=c.next("."+t);
f[0]&&f.remove(); // 移除旧的评分控件
e.elemTemp=a(n); // 渲染新的评分控件
i.span=e.elemTemp.next("span"); // 获取显示评分值的span
i.setText&&i.setText(i.value); // 设置文本
c.html(e.elemTemp); // 将评分控件添加到目标元素
c.addClass("layui-inline"); // 给元素添加样式
i.readonly||e.action(); // 如果不是只读模式,绑定事件
};
v.prototype.setvalue=function(e){ // 设置评分值并重新渲染
var a=this,i=a.config;
i.value=e;
a.render(); // 重新渲染
};
v.prototype.action=function(){ // 处理点击、鼠标悬停和移出事件
var e=this,i=e.config,l=e.elemTemp,n=l.find("i").width(); // 获取星星的宽度
l.children("li").each(function(e){ // 遍历每个星星
var t=e+1,v=a(this);
v.on("click",function(e){ // 处理点击事件
if(i.value=t,i.half){
var o=e.pageX-a(this).offset().left;
o<=n/2&&(i.value=i.value-.5) // 半星处理
}
i.text&&l.next("span").text(i.value+"星"); // 显示星级
i.choose&&i.choose(i.value); // 调用用户自定义的选择事件
i.setText&&i.setText(i.value); // 设置文本
}),
v.on("mousemove",function(e){ // 处理鼠标悬停事件
if(l.find("i").each(function(){a(this).addClass(o).removeClass(r)}),
l.find("i:lt("+t+")").each(function(){a(this).addClass(s).removeClass(f)}),
i.half){
var c=e.pageX-a(this).offset().left;
c<=n/2&&v.children("i").addClass(u).removeClass(s) // 半星高亮
}
}),
v.on("mouseleave",function(){ // 处理鼠标移出事件
l.find("i").each(function(){a(this).addClass(o).removeClass(r)});
l.find("i:lt("+Math.floor(i.value)+")").each(function(){a(this).addClass(s).removeClass(f)});
i.half&&parseInt(i.value)!==i.value&&l.children("li:eq("+Math.floor(i.value)+")").children("i").addClass(u).removeClass(c)
})
});
};
v.prototype.events=function(){ var e=this;e.config}, // 定义事件
i.render=function(e){ // 渲染评分控件并返回实例
var a=new v(e);
return l.call(a);
};
e(n,i) // 导出模块
});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,2 +1,179 @@
/** layui-v2.5.6 MIT License By https://www.layui.com */
;layui.define("jquery",function(e){"use strict";var t=layui.$,i={fixbar:function(e){var i,n,a="layui-fixbar",o="layui-fixbar-top",r=t(document),l=t("body");e=t.extend({showHeight:200},e),e.bar1=e.bar1===!0?"&#xe606;":e.bar1,e.bar2=e.bar2===!0?"&#xe607;":e.bar2,e.bgcolor=e.bgcolor?"background-color:"+e.bgcolor:"";var c=[e.bar1,e.bar2,"&#xe604;"],u=t(['<ul class="'+a+'">',e.bar1?'<li class="layui-icon" lay-type="bar1" style="'+e.bgcolor+'">'+c[0]+"</li>":"",e.bar2?'<li class="layui-icon" lay-type="bar2" style="'+e.bgcolor+'">'+c[1]+"</li>":"",'<li class="layui-icon '+o+'" lay-type="top" style="'+e.bgcolor+'">'+c[2]+"</li>","</ul>"].join("")),g=u.find("."+o),s=function(){var t=r.scrollTop();t>=e.showHeight?i||(g.show(),i=1):i&&(g.hide(),i=0)};t("."+a)[0]||("object"==typeof e.css&&u.css(e.css),l.append(u),s(),u.find("li").on("click",function(){var i=t(this),n=i.attr("lay-type");"top"===n&&t("html,body").animate({scrollTop:0},200),e.click&&e.click.call(this,n)}),r.on("scroll",function(){clearTimeout(n),n=setTimeout(function(){s()},100)}))},countdown:function(e,t,i){var n=this,a="function"==typeof t,o=new Date(e).getTime(),r=new Date(!t||a?(new Date).getTime():t).getTime(),l=o-r,c=[Math.floor(l/864e5),Math.floor(l/36e5)%24,Math.floor(l/6e4)%60,Math.floor(l/1e3)%60];a&&(i=t);var u=setTimeout(function(){n.countdown(e,r+1e3,i)},1e3);return i&&i(l>0?c:[0,0,0,0],t,u),l<=0&&clearTimeout(u),u},timeAgo:function(e,t){var i=this,n=[[],[]],a=(new Date).getTime()-new Date(e).getTime();return a>26784e5?(a=new Date(e),n[0][0]=i.digit(a.getFullYear(),4),n[0][1]=i.digit(a.getMonth()+1),n[0][2]=i.digit(a.getDate()),t||(n[1][0]=i.digit(a.getHours()),n[1][1]=i.digit(a.getMinutes()),n[1][2]=i.digit(a.getSeconds())),n[0].join("-")+" "+n[1].join(":")):a>=864e5?(a/1e3/60/60/24|0)+"天前":a>=36e5?(a/1e3/60/60|0)+"小时前":a>=18e4?(a/1e3/60|0)+"分钟前":a<0?"未来":"刚刚"},digit:function(e,t){var i="";e=String(e),t=t||2;for(var n=e.length;n<t;n++)i+="0";return e<Math.pow(10,t)?i+(0|e):e},toDateString:function(e,t){var i=this,n=new Date(e||new Date),a=[i.digit(n.getFullYear(),4),i.digit(n.getMonth()+1),i.digit(n.getDate())],o=[i.digit(n.getHours()),i.digit(n.getMinutes()),i.digit(n.getSeconds())];return t=t||"yyyy-MM-dd HH:mm:ss",t.replace(/yyyy/g,a[0]).replace(/MM/g,a[1]).replace(/dd/g,a[2]).replace(/HH/g,o[0]).replace(/mm/g,o[1]).replace(/ss/g,o[2])},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&#39;").replace(/"/g,"&quot;")},event:function(e,n,a){var o=t("body");return a=a||"click",n=i.event[e]=t.extend(!0,i.event[e],n)||{},i.event.UTIL_EVENT_CALLBACK=i.event.UTIL_EVENT_CALLBACK||{},o.off(a,"*["+e+"]",i.event.UTIL_EVENT_CALLBACK[e]),i.event.UTIL_EVENT_CALLBACK[e]=function(){var i=t(this),a=i.attr(e);"function"==typeof n[a]&&n[a].call(this,i)},o.on(a,"*["+e+"]",i.event.UTIL_EVENT_CALLBACK[e]),n}};!function(e,t,i){"$:nomunge";function n(){a=t[l](function(){o.each(function(){var t=e(this),i=t.width(),n=t.height(),a=e.data(this,u);(i!==a.w||n!==a.h)&&t.trigger(c,[a.w=i,a.h=n])}),n()},r[g])}var a,o=e([]),r=e.resize=e.extend(e.resize,{}),l="setTimeout",c="resize",u=c+"-special-event",g="delay",s="throttleWindow";r[g]=250,r[s]=!0,e.event.special[c]={setup:function(){if(!r[s]&&this[l])return!1;var t=e(this);o=o.add(t),e.data(this,u,{w:t.width(),h:t.height()}),1===o.length&&n()},teardown:function(){if(!r[s]&&this[l])return!1;var t=e(this);o=o.not(t),t.removeData(u),o.length||clearTimeout(a)},add:function(t){function n(t,n,o){var r=e(this),l=e.data(this,u)||{};l.w=n!==i?n:r.width(),l.h=o!==i?o:r.height(),a.apply(this,arguments)}if(!r[s]&&this[l])return!1;var a;return e.isFunction(t)?(a=t,n):(a=t.handler,void(t.handler=n))}}}(t,window),e("util",i)});
layui.define("jquery", function(e) {
"use strict";
var t = layui.$, // 引入 jQuery 库
i = {
// 固定操作栏(侧边固定按钮)
fixbar: function(e) {
var i, n,
a = "layui-fixbar", // 固定按钮的 CSS 类名
o = "layui-fixbar-top", // 顶部按钮的 CSS 类名
r = t(document), // 获取文档对象
l = t("body"); // 获取页面的 body 元素
// 配置项默认值
e = t.extend({ showHeight: 200 }, e);
// 如果没有设置 bar1 和 bar2 的图标,默认使用图标
e.bar1 = e.bar1 === !0 ? "&#xe606;" : e.bar1;
e.bar2 = e.bar2 === !0 ? "&#xe607;" : e.bar2;
// 设置背景颜色样式
e.bgcolor = e.bgcolor ? "background-color:" + e.bgcolor : "";
var c = [e.bar1, e.bar2, "&#xe604;"];
// 创建固定操作栏的 HTML 结构
var u = t([
'<ul class="'+a+'">',
e.bar1 ? '<li class="layui-icon" lay-type="bar1" style="'+e.bgcolor+'">'+c[0]+"</li>" : "",
e.bar2 ? '<li class="layui-icon" lay-type="bar2" style="'+e.bgcolor+'">'+c[1]+"</li>" : "",
'<li class="layui-icon '+o+'" lay-type="top" style="'+e.bgcolor+'">'+c[2]+"</li>",
"</ul>"
].join(""));
var g = u.find("."+o);
// 滚动事件:当页面滚动到指定高度时,显示操作栏
var s = function() {
var t = r.scrollTop();
t >= e.showHeight ? i || (g.show(), i = 1) : i && (g.hide(), i = 0);
};
// 如果操作栏未渲染,则将其添加到页面
t("."+a)[0] || (
"object" == typeof e.css && u.css(e.css),
l.append(u),
s(),
// 绑定点击事件
u.find("li").on("click", function() {
var i = t(this),
n = i.attr("lay-type");
"top" === n && t("html,body").animate({ scrollTop: 0 }, 200);
e.click && e.click.call(this, n);
}),
r.on("scroll", function() {
clearTimeout(n);
n = setTimeout(function() {
s();
}, 100);
})
);
},
// 倒计时功能
countdown: function(e, t, i) {
var n = this,
a = "function" == typeof t, // 如果 t 是函数
o = new Date(e).getTime(), // 目标时间戳
r = new Date(!t || a ? (new Date).getTime() : t).getTime(), // 当前时间戳
l = o - r, // 计算时间差
c = [
Math.floor(l / 864e5), // 天数
Math.floor(l / 36e5) % 24, // 小时
Math.floor(l / 6e4) % 60, // 分钟
Math.floor(l / 1e3) % 60 // 秒
];
// 如果 t 是函数,则执行回调
a && (i = t);
var u = setTimeout(function() {
n.countdown(e, r + 1e3, i);
}, 1e3);
// 回调函数,传递时间差和时间数组
return i && i(l > 0 ? c : [0, 0, 0, 0], t, u),
l <= 0 && clearTimeout(u), // 当倒计时结束,清除定时器
u;
},
// 将时间格式化为“XX时间前”
timeAgo: function(e, t) {
var i = this,
n = [[], []],
a = (new Date).getTime() - new Date(e).getTime(); // 计算当前时间与给定时间的差值
if (a > 26784e5) { // 如果时间差超过 31 天,显示完整的时间
a = new Date(e);
n[0][0] = i.digit(a.getFullYear(), 4);
n[0][1] = i.digit(a.getMonth() + 1);
n[0][2] = i.digit(a.getDate());
t || (n[1][0] = i.digit(a.getHours()), n[1][1] = i.digit(a.getMinutes()), n[1][2] = i.digit(a.getSeconds()));
return n[0].join("-") + " " + n[1].join(":");
}
if (a >= 864e5) return (a / 1e3 / 60 / 60 / 24 | 0) + "天前";
if (a >= 36e5) return (a / 1e3 / 60 / 60 | 0) + "小时前";
if (a >= 18e4) return (a / 1e3 / 60 | 0) + "分钟前";
return a < 0 ? "未来" : "刚刚";
},
// 数字补零
digit: function(e, t) {
var i = "";
e = String(e);
t = t || 2;
for (var n = e.length; n < t; n++) i += "0";
return e < Math.pow(10, t) ? i + (0 | e) : e;
},
// 将时间转为指定格式字符串
toDateString: function(e, t) {
var i = this,
n = new Date(e || new Date),
a = [i.digit(n.getFullYear(), 4), i.digit(n.getMonth() + 1), i.digit(n.getDate())],
o = [i.digit(n.getHours()), i.digit(n.getMinutes()), i.digit(n.getSeconds())];
return t = t || "yyyy-MM-dd HH:mm:ss",
t.replace(/yyyy/g, a[0])
.replace(/MM/g, a[1])
.replace(/dd/g, a[2])
.replace(/HH/g, o[0])
.replace(/mm/g, o[1])
.replace(/ss/g, o[2]);
},
// 转义 HTML 字符
escape: function(e) {
return String(e || "").replace(/&(?!#?[a-zA-Z0-9]+;)/g, "&amp;")
.replace(/</g, "&lt;")
.replace(/>/g, "&gt;")
.replace(/'/g, "&#39;")
.replace(/"/g, "&quot;");
},
// 自定义事件绑定
event: function(e, n, a) {
var o = t("body");
return a = a || "click", // 默认事件类型为 "click"
n = i.event[e] = t.extend(!0, i.event[e], n) || {},
i.event.UTIL_EVENT_CALLBACK = i.event.UTIL_EVENT_CALLBACK || {},
o.off(a, "*[" + e + "]", i.event.UTIL_EVENT_CALLBACK[e]),
i.event.UTIL_EVENT_CALLBACK[e] = function() {
var i = t(this),
a = i.attr(e);
"function" == typeof n[a] && n[a].call(this, i);
},
o.on(a, "*[" + e + "]", i.event.UTIL_EVENT_CALLBACK[e]),
n;
}
};
// 窗口大小变化事件(自适应布局)
!function(e, t, i) {
"$:nomunge";
function n() {
a = t[l](function() {
o.each(function() {
var t = e(this),
i = t.width(),
n = t.height(),
a = e.data(this, u);
(i !== a.w || n !== a.h) && t.trigger(c, [a.w = i, a.h = n]);
});
n();
}, r[g]);
}
var a,
o = e([]),
r = e.resize = e.extend(e.resize, {}),
l = "setTimeout",
c = "resize",
u = c + "-special-event",
g = "delay",
s = "throttleWindow";
r[g] = 250;
r[s] = !0;
e.event.special[c] = {
setup: function() {
if (!r[s] && this[l]) return !1;

File diff suppressed because one or more lines are too long

@ -1,84 +1,114 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!-- JSP 页面指令,设置页面的内容类型为 HTML 且字符编码为 UTF-8表明使用 Java 语言编写 -->
<html lang="en">
<head>
<meta charset="UTF-8">
<!-- 声明页面的字符编码为 UTF-8确保页面中的文本能正确显示 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<!-- 用于指定浏览器以何种模式渲染页面,这里优先使用 IE 最新版本或 Chrome Frame如果安装了 -->
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<!-- 设置视口相关属性,让页面在移动设备上能自适应屏幕宽度,初始缩放比例为 1最大缩放比例也为 1 -->
<title>登录页</title>
<!-- 页面的标题,显示在浏览器标签栏上 -->
<link rel="stylesheet" href="./css/layui.css">
<!-- 引入 layui 框架的基础样式文件,用于构建页面的基本样式布局 -->
<link rel="stylesheet" href="./css/modules/layer/default/layer.css">
<!-- 引入 layui 中 layer 模块的默认样式文件,可能用于弹出层等相关组件的样式展示 -->
<link rel="stylesheet" href="./css/login.css">
<!-- 引入自定义的登录页面样式文件,用于覆盖或补充框架样式,实现特定的登录页外观设计 -->
<link rel="stylesheet" href="./css/style.css">
<!-- 引入其他自定义样式文件,可能包含页面通用的一些样式规则 -->
<link rel="shortcut icon" href="./images/favicon.ico" type="image/x-icon" />
<!-- 设置页面的图标(显示在浏览器标签栏等位置),指定图标文件的路径和类型 -->
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<!-- 引入 jQuery 库的压缩版本,方便进行 DOM 操作、事件处理等前端交互逻辑开发 -->
<style type="text/css">
</style>
<!-- 可以在此处编写页面内联样式,用于对特定元素进行样式设置,此处为空 -->
</head>
<body>
<div class="frame-main">
<div class="login-main">
<header class="layui-elip">学生信息管理系统</header>
<!-- 使用 layui 相关的类定义了一个标题元素,展示系统名称,可能应用了特定的样式效果(如文本截断等) -->
<form class="layui-form" action="" name="formf" method="post">
<!-- 定义一个表单,使用 layui 的表单类进行样式修饰,设置提交方式为 POST初始 action 为空,后续会根据用户选择动态设置 -->
<div class="layui-input-inline">
<label class="layadmin-user-login-icon layui-icon layui-icon-username"></label>
<input type="text" name="id" id="id" value="${loginid}" required lay-verify="required" placeholder="用户名(学号或工号)" autocomplete="off"
class="layui-input">
</div>
<!-- 创建一个内联的输入框容器,里面包含一个图标标签(用于显示用户名图标)和一个文本输入框,输入框用于输入用户名(学号或工号),
设置了相关属性如 required 表示必填lay-verify 用于 layui 框架的表单验证placeholder 是提示文本autocomplete 关闭自动完成功能 -->
<div class="layui-input-inline">
<label class="layadmin-user-login-icon layui-icon layui-icon-password"></label>
<input type="password" value="${loginpassword}" id="password" name="password" required lay-verify="required" placeholder="密码" autocomplete="off"
class="layui-input">
</div>
<!-- 类似上述输入框容器,用于输入密码,同样有相关的样式类、属性设置,并且通过 value 属性可能绑定了从后台传来的默认密码值(如果有) -->
<div class="layui-input-inline" style="width: 56%; margin-bottom: 0px;">
<label class="layadmin-user-login-icon layui-icon layui-icon-vercode"></label>
<input type="password" name="verifycode" id="code" required lay-verify="required" placeholder="验证码" autocomplete="off"
class="layui-input">
</div>
<!-- 用于输入验证码的输入框容器,设置了相应的样式、属性以及提示文本等 -->
<a href="javascript:refreshCode()">
<img style="padding-left: 14px;" src="${pageContext.request.contextPath}/checkCodeServlet" title="刷新验证码" id="vcode" draggable="false">
</a>
<!-- 一个链接元素,绑定了 JavaScript 函数 refreshCode(),用于点击时刷新验证码图片,图片的 src 属性指向一个 Servlet 来获取验证码图片资源 -->
<div style="padding-left: 54px;padding-bottom: 6px;">
<input type="radio" name="roles" value="student" title="学生" checked>
<input type="radio" name="roles" value="teacher" title="老师">
<input type="radio" name="roles" value="admin" title="管理员">
</div>
<!-- 一组单选按钮,用于选择用户角色(学生、老师、管理员),默认选中学生角色 -->
<div class="layui-input-inline login-btn">
<button type="button" onclick="a()" lay-submit lay-filter="login" class="layui-btn" id="login" name="submit-login">登录</button>
</div>
<!-- 创建一个内联的按钮容器,里面包含一个登录按钮,按钮绑定了 onclick 事件调用函数 a(),同时使用了 layui 的相关属性用于表单提交验证等 -->
<hr/>
<!-- 水平分割线 -->
<!--<div class="layui-input-inline">
<button type="button" class="layui-btn layui-btn-primary">QQ登录</button>
</div>
<div class="layui-input-inline">
<button type="button" class="layui-btn layui-btn-normal">微信登录</button>
</div>-->
<!-- 被注释掉的部分,可能原本计划用于实现 QQ 登录和微信登录的按钮,目前未启用 -->
<p><a href="register.jsp" class="fl">立即注册</a>
<div class="tooltip">
<span class="tooltiptext">${login_msg}</span>
</div>
<a href="forget.jsp" class="fr">忘记密码?</a></p>
<div class="tooltip">
<span class="tooltiptext">${login_msg}</span>
</div>
<a href="forget.jsp" class="fr">忘记密码?</a></p>
<!-- 包含了两个链接一个指向注册页面register.jsp另一个指向忘记密码页面forget.jsp中间有一个用于显示提示信息可能是后台传来的登录相关消息的元素 -->
</form>
</div>
</div>
<footer style="position:absolute;bottom:0;width:100%;height:30px; text-align: center;">© 2018-2019.YOYLING.COM</footer>
<!-- 页面底部的版权声明元素,绝对定位在页面底部,宽度占满整个页面,高度为 30px文本居中显示 -->
<script src="layui.js"></script>
<script src="./lay/modules/layer.js"></script>
<!-- 引入 layui 框架的主脚本文件以及 layer 模块的脚本文件,用于实现页面交互逻辑和弹出层等功能 -->
<script type="text/javascript">
function refreshCode() {
var vcode = document.getElementById("vcode");
vcode.src = "${pageContext.request.contextPath}/checkCodeServlet?time="+new Date().getTime();
}
// 定义 refreshCode 函数,用于刷新验证码图片的 src 属性,通过在 URL 后添加时间戳来避免浏览器缓存,确保每次获取到最新的验证码图片
</script>
<script type="text/javascript">
layui.use('form',function(){
var form = layui.form;
// 调用 layui 的 use 方法加载 form 模块,在回调函数中获取 form 实例,用于后续操作
//刷新界面 所有元素
form.render();
// 调用 form 模块的 render 方法,刷新页面上所有表单元素的状态,确保样式和交互功能正确显示
});
</script>
@ -112,6 +142,9 @@
}
}
}
// 定义函数 a用于处理登录按钮的点击事件原本可能是绑定在按钮的 click 事件上,现在通过 onclick 属性调用)
// 首先获取所有角色单选按钮,确定选中的角色值,然后获取用户名、密码、验证码输入框的值,进行非空验证
// 如果输入框有值为空则直接返回不进行后续操作,如果都有值,则根据选中的角色设置表单的 action 属性,指向对应的登录 Servlet 并提交表单
</script>
</body>
</html>

@ -1,57 +1,67 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!-- JSP 页面指令,设置页面内容类型为 HTML字符编码为 UTF-8表明该页面使用 Java 语言编写 -->
<%@ page import="java.io.*,java.util.*,javax.servlet.*,javax.servlet.http.*" %>
<!-- 导入多个 Java 相关的包用于处理输入输出、集合操作、Servlet 相关功能以及 HTTP 相关功能等,方便后续代码中使用这些类和接口 -->
<%@ page import="java.rmi.ServerException" %>
<!-- 导入用于处理服务器端异常的类,可能用于在出现问题时抛出合适的异常信息 -->
<%@ page import="java.nio.charset.Charset" %>
<%@ page import="java.nio.charset.StandardCharsets" %>
<!-- 导入字符编码相关的类和标准字符编码常量,用于处理字符编码转换等操作,比如后续将字节数组转换为字符串时指定编码 -->
<html>
<head>
<title></title>
</head>
<body>
<%
//定义上传文件的最大字节
//定义上传文件的最大字节数,这里设置的数值是 102400 * 102400 字节(不过这个数值看起来可能过大,也许是示例或特殊需求,通常会根据实际情况合理设置大小限制)
int MAX_SIZE = 102400 * 102400;
//创建根路径的保存变量
//创建根路径的保存变量,后续用于拼接出文件上传后的保存路径,初始时只是声明,还未赋值具体内容
String rootPath;
//声明文件读入类
//声明文件读入类,用于从请求流中读取上传的数据,初始化为 null后续会在合适的逻辑中进行实例化
DataInputStream in = null;
//声明文件输出流类,用于将上传的数据写入到服务器端的文件中,初始化为 null后续会在合适的逻辑中进行实例化
FileOutputStream fileOut = null;
//取得互联网程序的绝对地址
//取得互联网程序(即当前 Servlet 上下文对应的应用程序)的绝对地址,例如获取到类似项目部署在服务器上的根目录路径
String realPath = request.getSession().getServletContext().getRealPath("/");
//对获取到的绝对路径进行处理,截取掉其中 "\out" 及之后的部分,可能是为了获取到项目更合适的基础路径(具体取决于项目结构和需求)
realPath = realPath.substring(0, realPath.indexOf("\\out"));
// out.print(realPath);
//创建文件的保存目录
// 创建文件的保存目录,将处理后的路径与 "\web\upload\" 拼接起来,形成文件最终要保存的目录路径,这里假设项目中有这样一个用于存放上传文件的目录结构
rootPath = realPath + "\\web\\upload\\";
//取得客户端上传的数据类型
//取得客户端上传的数据类型,例如判断是否是 "multipart/form-data" 这种常见的文件上传类型的数据格式
String contentType = request.getContentType();
try {
// 判断客户端上传的数据类型是否是 "multipart/form-data",如果是则进行文件上传相关的处理逻辑
if (contentType.indexOf("multipart/form-data") >= 0) {
//读入上传数据
// 读入上传数据,通过从请求输入流创建 DataInputStream 对象,以便按字节读取客户端上传的数据
in = new DataInputStream(request.getInputStream());
// 获取上传数据的总长度(字节数),用于后续循环读取数据以及判断是否超过设定的最大字节限制
int formDataLength = request.getContentLength();
// 检查上传的数据长度是否超过了预先定义的最大字节数,如果超过则输出提示信息并终止当前方法执行(直接返回)
if (formDataLength > MAX_SIZE) {
out.print("上传的字节不可以超过" + MAX_SIZE + "字节");
return;
}
//保存上传文件的数据
// 保存上传文件的数据,创建一个字节数组,大小为上传数据的总长度,用于存放从请求中读取到的字节数据
byte dataBytes[] = new byte[formDataLength];
int byteRead = 0;
int totalBytesRead = 0;
//上传的数据保存在byte数组里面
// 上传的数据保存在 byte 数组里面,通过循环从输入流中读取数据,每次读取一部分字节,直到读取完所有上传的数据
while (totalBytesRead < formDataLength) {
byteRead = in.read(dataBytes, totalBytesRead, formDataLength);
totalBytesRead += byteRead;
}
//根据byte数组创建字符串
// 根据 byte 数组创建字符串,使用指定的 UTF-8 编码将字节数组转换为字符串,方便后续对上传数据内容进行字符串相关的操作(比如提取文件名等信息)
String file = new String(dataBytes, StandardCharsets.UTF_8);
//取得上传数据的文件名
// 取得上传数据的文件名,通过对转换后的字符串进行一系列的截取操作,从包含文件名信息的字符串中提取出真正的文件名(处理了包含文件名的特定格式字符串)
String saveFile = file.substring(file.indexOf("filename=\"") + 10);
saveFile = saveFile.substring(0, saveFile.indexOf("\n"));
saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1, saveFile.indexOf("\""));
int lastIndex = contentType.lastIndexOf("=");
//取得数据的分隔字符串
// 取得数据的分隔字符串,从上传数据的类型字符串(例如 "multipart/form-data; boundary=----WebKitFormBoundaryxxx"中提取出用于分隔不同部分的边界字符串boundary
String boundary = contentType.substring(lastIndex + 1, contentType.length());
//创建保存路径的文件名
// 创建保存路径的文件名,将前面确定的文件保存目录路径与提取出的文件名拼接起来,形成完整的文件保存路径(包含文件名和目录)
String fileName = rootPath + saveFile;
int pos;
pos = file.indexOf("filename = \"");
@ -59,30 +69,33 @@
pos = file.indexOf("\n", pos) + 1;
pos = file.indexOf("\n", pos) + 1;
int boundaryLocation = file.indexOf(boundary, pos) - 4;
//取得文件数据的开始的位置
// 取得文件数据的开始的位置,通过对文件内容字符串进行一系列操作,先获取相关子字符串,再计算其字节长度来确定文件数据在整个上传数据中的起始位置
int startPos = ((file.substring(0, pos)).getBytes()).length;
int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;
File checkFile = new File(fileName);
// 检查要保存的文件是否已经存在,如果存在则输出提示信息并终止当前方法执行(直接返回)
if (checkFile.exists()) {
out.println("<p>" + saveFile + "文件已经存在.</p>");
return;
}
//检查上传文件的目录是否存在
// 检查上传文件的目录是否存在,如果不存在则创建该目录(包括上级目录等,会递归创建),确保文件保存的目录是存在的
File fileDir = new File(rootPath);
if (!fileDir.exists()) {
fileDir.mkdirs();
}
//创建文件的输出类
// 创建文件的输出类,通过指定文件保存路径实例化 FileOutputStream用于将上传的数据写入到对应的文件中
fileOut = new FileOutputStream(fileName);
//保存文件的数据
// 保存文件的数据,将之前读取到的字节数组中对应文件数据部分写入到文件输出流中,实现文件在服务器端的保存
fileOut.write(dataBytes, startPos, (endPos - startPos));
fileOut.close();
out.print("<b>文件上传成功</b>");
} else {
// 如果上传的数据类型不是 "multipart/form-data",则输出提示信息,告知用户需要上传该类型的文件
String content = request.getContentType();
out.print("上传的文件类型是" + content + "类型的请上传目录mutipart/form-data类型的文件");
}
} catch (Exception ex) {
// 如果在文件上传过程中出现任何异常,捕获异常并抛出一个 ServerException将原始异常的消息传递进去方便在更上层进行统一的异常处理和日志记录等操作
throw new ServerException(ex.getMessage());
}
%>

@ -1,30 +1,45 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!-- JSP页面指令设置页面的内容类型为HTML格式字符编码采用UTF-8同时表明该页面使用Java语言编写 -->
<html lang="en">
<head>
<meta charset="UTF-8">
<!-- 声明页面的字符编码为UTF-8确保页面中的文本内容能正确显示 -->
<meta name="renderer" content="webkit">
<!-- 指定页面使用WebKit内核进行渲染用于在一些特定浏览器环境下控制页面的渲染方式 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<!-- 指示浏览器以IE的最新版本或者Chrome Frame如果已安装来渲染页面以解决不同浏览器版本兼容性问题 -->
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<!-- 设置视口相关属性让页面在移动设备上能自适应屏幕宽度初始缩放比例和最大缩放比例都设置为1 -->
<title>注册页</title>
<!-- 页面的标题,会显示在浏览器的标签栏上 -->
<link rel="stylesheet" href="./css/layui.css">
<!-- 引入layui框架的基础样式文件用于构建页面的整体样式布局提供各种组件的默认样式 -->
<link rel="stylesheet" href="./css/style.css">
<!-- 引入自定义的通用样式文件,可能包含整个项目中通用的一些样式规则,用于补充或覆盖框架样式 -->
<link rel="stylesheet" href="./css/login.css">
<!-- 引入与登录相关的样式文件,也许注册页复用了部分登录页的样式或者有相似的样式需求 -->
<link rel="shortcut icon" href="./images/favicon.ico" type="image/x-icon" />
<!-- 设置页面的图标,显示在浏览器标签栏等位置,指定了图标文件的路径和类型 -->
</head>
<body>
<div class="frame-main">
<div class="login-main">
<header class="layui-elip">学生信息管理系统</header>
<!-- 使用layui相关的类定义了一个标题元素展示系统名称可能应用了特定的样式效果如文本截断等 -->
<!-- 表单选项 -->
<form class="layui-form" id="registerForm" action="${pageContext.request.contextPath}/registerServlet" method="post">
<!-- 定义一个表单使用layui的表单类进行样式修饰设置了表单的id为"registerForm"指定提交的目标Servlet路径以及提交方式为POST -->
<div class="layui-input-inline">
<!-- 用户名 -->
<div class="layui-inline" style="width: 100%">
<label class="layadmin-user-login-icon layui-icon layui-icon-username"></label>
<input type="text" id="user" value="${studentid}" name="studentid" required lay-verify="required" placeholder="请输入学号" autocomplete="off" class="layui-input">
</div>
<!-- 创建一个内联的输入框容器里面包含一个图标标签用于显示用户名图标和一个文本输入框输入框用于输入学号这里名为studentid
设置了相关属性如required表示必填lay-verify用于layui框架的表单验证placeholder是提示文本autocomplete关闭自动完成功能
并且通过value属性可能绑定了从后台传来的默认学号值如果有 -->
</div>
<!-- 密码 -->
<div class="layui-input-inline">
@ -32,6 +47,7 @@
<label class="layadmin-user-login-icon layui-icon layui-icon-password"></label>
<input type="password" id="pwd" value="${password}" name="password" required lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input">
</div>
<!-- 类似上述输入框容器用于输入密码同样有相关的样式类、属性设置并且通过value属性可能绑定了从后台传来的默认密码值如果有 -->
</div>
<!-- 确认密码 -->
<div class="layui-input-inline">
@ -39,6 +55,7 @@
<label class="layadmin-user-login-icon layui-icon layui-icon-password"></label>
<input type="password" id="rpwd" value="${repassword}" name="repassword" required lay-verify="required" placeholder="请确认密码" autocomplete="off" class="layui-input">
</div>
<!-- 用于再次输入密码进行确认的输入框容器,同样设置了必要的样式、属性以及可能绑定的默认值 -->
</div>
<div class="layui-input-inline" style="width: 56%;">
@ -46,47 +63,62 @@
<input type="password" id="verifycode" name="verifycode" required lay-verify="required" placeholder="验证码" autocomplete="off"
class="layui-input">
</div>
<!-- 用于输入验证码的输入框容器,设置了相应的样式、属性以及提示文本等 -->
<a href="javascript:refreshCode()">
<img style="padding-left: 14px; margin-top: -15px;" src="${pageContext.request.contextPath}/checkCodeServlet" title="刷新验证码" id="vcode" draggable="false">
</a>
<!-- 一个链接元素绑定了JavaScript函数refreshCode()用于点击时刷新验证码图片图片的src属性指向一个Servlet来获取验证码图片资源 -->
<div class="layui-input-inline login-btn" style="width: 100%">
<button type="submit" lay-submit lay-filter="sub" class="layui-btn">注册</button>
</div>
<!-- 创建一个内联的按钮容器里面包含一个注册按钮按钮类型为submit用于提交表单同时使用了layui的相关属性用于表单提交验证等 -->
<hr style="width: 100%" />
<!-- 水平分割线 -->
<p style="width: 100%">
<a href="login.jsp" class="fl">立即登录</a>
<div class="tooltip">
<span class="tooltiptext">${msg}</span>
</div>
<a href="forget.jsp" class="fr">忘记密码?</a></p>
<a href="forget.jsp" class="fr">忘记密码?</a>
</p>
<!-- 包含了两个链接一个指向登录页面login.jsp另一个指向忘记密码页面forget.jsp中间有一个用于显示提示信息可能是后台传来的相关消息的元素 -->
<i class="layui-icon" id="ri" style="color: green;font-weight: bolder; position: relative; left: 200px; top: -265px;" hidden></i>
<i class="layui-icon" id="wr" style="color: red; font-weight: bolder; position: relative; left: 200px; top: -265px;" hidden>ဆ</i>
<i class="layui-icon" id="pri" style="color: green;font-weight: bolder; position: relative; left: 180px; top: -213px;" hidden></i>
<i class="layui-icon" id="pwr" style="color: red; font-weight: bolder; position: relative; left: 180px; top: -213px;" hidden>ဆ</i>
<i class="layui-icon" id="rpri" style="color: green;font-weight: bolder; position: relative; left: 160px; top: -160px;" hidden></i>
<i class="layui-icon" id="rpwr" style="color: red; font-weight: bolder; position: relative; left: 160px; top: -160px;" hidden>ဆ</i>
<!-- 定义了一组layui图标元素初始时设置为隐藏hidden属性通过JavaScript代码根据不同的验证情况来显示或隐藏这些图标用于直观地提示用户输入是否正确
例如绿色图标表示输入正确,红色图标表示输入有误 -->
</form>
</div>
<span id="s_id"></span>
<!-- 一个空的span元素可能后续会通过JavaScript动态添加内容或者用于其他DOM操作相关用途 -->
</div>
<footer style="position:absolute;bottom:0;width:100%;height:30px; text-align: center;">© 2018-2019.YOYLING.COM</footer>
<!-- 页面底部的版权声明元素绝对定位在页面底部宽度占满整个页面高度为30px文本居中显示 -->
<script src="layui.js"></script>
<!-- 引入layui框架的主脚本文件用于实现页面交互逻辑以及使用layui框架提供的各种组件和功能 -->
<script type="text/javascript">
function refreshCode() {
var vcode = document.getElementById("vcode");
vcode.src = "${pageContext.request.contextPath}/checkCodeServlet?time="+new Date().getTime();
}
// 定义refreshCode函数用于刷新验证码图片的src属性通过在URL后添加时间戳来避免浏览器缓存确保每次获取到最新的验证码图片
</script>
<script type="text/javascript">
layui.use(['form','jquery','layer'], function () {
var form = layui.form;
var $ = layui.jquery;
var layer = layui.layer;
//添加表单失焦事件
//验证表单
// 使用layui的use方法加载form、jquery、layer这几个模块并在回调函数中获取对应的实例方便后续操作
// 添加表单失焦事件,验证表单
$('#user').blur(function() {
var studentid = $(this).val();
$.get("findStudentServlet",{studentid:studentid},function (data) {
@ -97,12 +129,13 @@
title: '错误',content: data.msg,icon: 2
});
$('#user').val("");
} else {
}
});
});
// 为学号输入框id为user绑定blur事件即失去焦点事件当输入框失去焦点时发送一个GET请求到"findStudentServlet",传递当前输入的学号作为参数,
// 根据返回的数据假设是一个JSON格式数据包含studentExsit等属性来判断学号是否已存在如果已存在则显示错误图标wr隐藏正确图标ri
// 弹出一个layui的弹出层提示错误信息并清空输入框内容
// 为密码添加正则验证
$('#pwd').blur(function() {
@ -118,6 +151,9 @@
$('#pwr').attr('hidden','hidden');
}
});
// 为密码输入框id为pwd绑定blur事件当失去焦点时使用正则表达式验证输入的密码是否符合要求这里要求是3-6位的字母数字下划线组成的字符
// 如果不符合则显示错误图标pwr隐藏正确图标pri弹出提示信息告知用户输入合法密码并清空输入框内容符合要求则反之显示正确图标隐藏错误图标
$('#user').blur(function() {
var reg = /^[0-9]{10}$/;
if(!($('#user').val().match(reg))){
@ -131,12 +167,12 @@
$('#wr').attr('hidden','hidden');
}
});
// 再次为学号输入框id为user绑定blur事件使用另一个正则表达式验证学号是否是10位数字如果不符合要求则显示错误图标wr隐藏正确图标ri
// 弹出提示信息告知用户输入10位数字学号并清空输入框内容符合要求则反之显示正确图标隐藏错误图标
//验证两次密码是否一致
$('#rpwd').blur(function() {
if($('#pwd').val() != $('#rpwd').val() || $('#rpwd').val()=='' || $('#pwd').val()==''){
if($('#pwd').val()!= $('#rpwd').val() || $('#rpwd').val()=='' || $('#pwd').val()==''){
$('#rpwr').removeAttr('hidden');
$('#rpri').attr('hidden','hidden');
// layer.msg('两次输入密码不一致!');
@ -146,6 +182,8 @@
$('#rpwr').attr('hidden','hidden');
};
});
// 为确认密码输入框id为rpwd绑定blur事件当失去焦点时检查两次输入的密码是否一致以及是否为空如果不一致或为空则显示错误图标rpwr隐藏正确图标rpri
// 并清空确认密码输入框内容,一致且不为空则显示正确图标,隐藏错误图标
});
</script>
</body>

@ -1,16 +1,28 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!-- JSP页面指令设置此页面的内容类型为“text/html”即HTML格式字符编码采用UTF-8同时表明该页面是使用Java语言编写的 -->
<html>
<head>
<title>文件上传</title>
<!-- 设置页面的标题,在浏览器的标签栏上会显示该标题内容,这里标题设置为“文件上传”,直观地表明页面的主要功能 -->
</head>
<body>
<h1>文件上传</h1>
<!-- 使用一级标题标签(<h1>)展示页面的主要功能提示,告知用户当前页面是用于文件上传操作的 -->
<form action="message.jsp" method="post" enctype="multipart/form-data">
<!-- 定义一个HTML表单用于收集用户输入并向服务器提交数据。
- action属性指定了表单提交后数据将被发送到的目标页面这里是“message.jsp”通常该页面会在后端处理接收到的文件上传相关数据
- method属性设置为“post”表示使用POST请求方式提交表单数据相较于GET方式POST更适合用于提交大量数据或包含敏感信息的数据比如文件内容。
- enctype属性设置为“multipart/form-data”这是用于指定表单数据的编码类型当表单中包含文件上传字段时必须设置该属性以便正确地将文件数据和其他表单数据一起发送到服务器端。 -->
选择一个文件:
<input type="file" name="uploadFile"/>
<!-- 创建一个文件选择输入框类型为“file”允许用户从本地计算机中选择要上传的文件。name属性值“uploadFile”用于在服务器端接收数据时标识该文件数据以便进行后续处理。 -->
<br/><br/>
<input type="submit" value="上传"/>
<!-- 创建一个提交按钮类型为“submit”当用户点击该按钮时会触发表单的提交操作将表单内的数据包括选择的文件数据按照前面设置的action、method和enctype属性规则发送到服务器端。按钮上显示的文本为“上传”直观地提示用户点击该按钮执行文件上传操作。 -->
</form>
</body>
</html>
Loading…
Cancel
Save