package com.controller.stu; // 声明该Servlet所在的包名为com.controller.stu import com.dao.StuDao; // 导入学生数据访问对象类StuDao,用于执行数据库查询操作 import com.entity.Student; // 导入学生实体类,用于封装学生相关信息 import com.utils.JDBCUtils; // 导入JDBC工具类,用于数据库连接的管理和资源关闭等操作 import javax.servlet.ServletException; // 导入Servlet异常类,用于处理Servlet运行时可能出现的异常 import javax.servlet.annotation.WebServlet; // 导入注解,用于将Servlet映射到特定的URL import javax.servlet.http.HttpServlet; // 导入HttpServlet类,所有基于HTTP协议的Servlet都继承自该类 import javax.servlet.http.HttpServletRequest; // 导入用于处理HTTP请求的类,通过它可以获取请求参数、请求头信息等 import javax.servlet.http.HttpServletResponse; // 导入用于处理HTTP响应的类,通过它可以设置响应内容、响应头信息等 import javax.servlet.http.HttpSession; // 导入HttpSession类,用于管理用户会话,存储用户相关信息 import java.io.IOException; // 导入用于处理I/O异常的类,如在读取或写入数据时可能发生的异常 import java.sql.ResultSet; // 导入用于处理数据库查询结果的类,用于获取查询到的数据 import java.util.ArrayList; // 导入ArrayList类,用于存储多个学生对象 @WebServlet("/StuQueryInfoServlet") // 使用@WebServlet注解将该Servlet映射到URL路径为"/StuQueryInfoServlet" public class StuQueryInfoServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 重写父类HttpServlet的doGet方法,用于处理HTTP GET请求 // 设置请求的字符编码为UTF-8,防止请求参数中的中文乱码 req.setCharacterEncoding("utf-8"); // 设置响应的字符编码为UTF-8,防止响应内容中的中文乱码 resp.setCharacterEncoding("utf-8"); // 设置响应的内容类型为HTML格式,并且字符编码为UTF-8,告知客户端如何解析响应内容 resp.setContentType("text/html;charset=utf-8"); // 获取当前请求的会话对象 HttpSession session = req.getSession(); // 从会话中获取名为"userName"的属性值,并将其转换为String类型 String userName = (String) session.getAttribute("userName"); // 从会话中获取名为"sno"的属性值,并将其转换为String类型,该值表示学生编号 String sno = (String) session.getAttribute("sno"); // 将userName打印到控制台,用于调试 System.out.println(userName); // 将sno打印到控制台,用于调试 System.out.println(sno); // 打印一个字符串到控制台,可能是用于调试的无意义字符串 System.out.println("hdghghjg"); // 构造SQL查询语句,用于从student表中查询指定学生编号(sno)的学生信息 String sql = "select * from student where sno = ?"; // 创建包含SQL语句参数的对象数组,参数为学生编号 Object[] objects = {sno}; // 调用StuDao的qureyInfo方法执行SQL查询,并获取结果集 ResultSet resultSet = StuDao.qureyInfo(sql, objects); // 创建一个ArrayList对象,用于存储查询到的学生对象 ArrayList stuArrayList = new ArrayList(); try { // 遍历结果集,将每一行数据封装到Student对象中,并添加到ArrayList中 while (resultSet.next()){ // 创建一个新的Student对象 Student student = new Student(); // 设置学生编号 student.setSno(resultSet.getString("sno")); // 设置学生姓名 student.setSname(resultSet.getString("sname")); // 设置学生性别 student.setSsex(resultSet.getString("ssex")); // 设置学生年龄,将数据库中的整数类型值转换为int类型 student.setSage(resultSet.getInt("sage")); // 设置学生班级 student.setSclass(resultSet.getString("sclass")); // 设置学生专业 student.setSpecialty(resultSet.getString("specialty")); // 设置学生所在系部 student.setSdept(resultSet.getString("sdept")); // 设置学生电话号码 student.setSphone(resultSet.getString("sphone")); // 设置学生密码 student.setSpsw(resultSet.getString("spsw")); // 将封装好的学生对象添加到ArrayList中 stuArrayList.add(student); } } catch (Exception e) { // 捕获异常并打印异常堆栈信息,用于调试和错误排查 e.printStackTrace(); } finally { // 无论是否发生异常,都调用JDBCUtils的close方法关闭结果集,释放资源 JDBCUtils.close(resultSet); } // 将存储学生对象的ArrayList打印到控制台,用于调试 System.out.println(stuArrayList); // 将存储学生对象的ArrayList设置为请求属性,以便在后续页面中使用 req.setAttribute("stuArrayList", stuArrayList); // 转发请求到指定的页面(/view/stu/stuinfo.jsp),并传递请求和响应对象 req.getRequestDispatcher("/view/stu/stuinfo.jsp").forward(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 重写父类HttpServlet的doPost方法,用于处理HTTP POST请求 // 直接调用doGet方法来处理POST请求,复用doGet方法中的业务逻辑 doGet(req, resp); } }