From fa85a64c8251d879ce5e3a56fee5085d1bbcf10b Mon Sep 17 00:00:00 2001 From: puxcofief <1827156039@qq.com> Date: Sun, 15 Dec 2024 13:40:30 +0800 Subject: [PATCH] xl.java --- .../src/com/cn/servlet/BookingServlet.java | 175 ++++++++++-------- 1 file changed, 101 insertions(+), 74 deletions(-) diff --git a/ticketing-master/src/com/cn/servlet/BookingServlet.java b/ticketing-master/src/com/cn/servlet/BookingServlet.java index e5a546e..f055196 100644 --- a/ticketing-master/src/com/cn/servlet/BookingServlet.java +++ b/ticketing-master/src/com/cn/servlet/BookingServlet.java @@ -1,80 +1,106 @@ -package com.cn.servlet; +package com.cn.servlet; // 定义Servlet所在的包名 -import java.io.IOException; -import java.io.PrintWriter; -import java.sql.Timestamp; -import java.util.Date; +import java.io.IOException; // 导入IOException,用于处理输入输出异常 +import java.io.PrintWriter; // 导入PrintWriter,用于向客户端发送字符文本数据 +import java.sql.Timestamp; // 导入Timestamp类,用于处理数据库时间戳 +import java.util.Date; // 导入Date类,用于处理日期 -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; +import javax.servlet.ServletException; // 导入ServletException,用于处理Servlet运行时的异常 +import javax.servlet.http.HttpServlet; // 导入HttpServlet,是所有HTTP servlet的父类 +import javax.servlet.http.HttpServletRequest; // 导入HttpServletRequest,代表客户端的请求信息 +import javax.servlet.http.HttpServletResponse; // 导入HttpServletResponse,代表服务器对客户端的响应 +import javax.servlet.http.HttpSession; // 导入HttpSession,代表与客户端的会话 -import com.cn.domain.Member; -import com.cn.domain.Pmember; -import com.cn.domain.Prep; -import com.cn.domain.Train; -import com.cn.service.PmemberService; -import com.cn.service.PrepService; -import com.cn.service.TrainService; -import com.cn.service.impl.PmemberServiceImpl; -import com.cn.service.impl.PrepServiceImpl; -import com.cn.service.impl.TrainServiceImpl; +import com.cn.domain.Member; // 导入Member类,该类定义了会员的数据结构 +import com.cn.domain.Pmember; // 导入Pmember类,该类定义了会员个人信息的数据结构 +import com.cn.domain.Prep; // 导入Prep类,该类定义了订单的数据结构 +import com.cn.domain.Train; // 导入Train类,该类定义了车次的数据结构 +import com.cn.service.PmemberService; // 导入PmemberService接口,该接口定义了会员个人信息服务的方法 +import com.cn.service.PrepService; // 导入PrepService接口,该接口定义了订单服务的方法 +import com.cn.service.TrainService; // 导入TrainService接口,该接口定义了车次服务的方法 +import com.cn.service.impl.PmemberServiceImpl; // 导入PmemberService接口的实现类,用于具体的会员个人信息业务操作 +import com.cn.service.impl.PrepServiceImpl; // 导入PrepService接口的实现类,用于具体的订单业务操作 +import com.cn.service.impl.TrainServiceImpl; // 导入TrainService接口的实现类,用于具体的车次业务操作 /** - * - * @ClassName: BookingServlet - * @Description: 会员 实现订票功能的Servlet - * @author: ljy - * @date: 2019年9月17日 下午11:23:41 + * BookingServlet类,用于处理会员订票的请求。 + * @ClassName: BookingServlet 类名:BookingServlet + * @Description: 会员实现订票功能的Servlet + * @author: ljy Servlet的作者 + * @date: 2019年9月17日 下午11:23:41 Servlet创建的日期和时间 */ public class BookingServlet extends HttpServlet { - private static final long serialVersionUID = 1L; - - + private static final long serialVersionUID = 1L; // 用于序列化 + + /** + * 默认构造函数。 + */ + public BookingServlet() { + super(); // 调用父类的构造函数 + // TODO Auto-generated constructor stub + } + + /** + * 处理GET请求的方法,用于显示订票页面。 + * @param request HttpServletRequest对象,包含客户端的请求信息 + * @param response HttpServletResponse对象,包含服务器对客户端的响应信息 + * @throws ServletException 抛出Servlet异常 + * @throws IOException 抛出输入输出异常 + */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - - /** - * 先执行 - */ - HttpSession session = request.getSession(); - Member member = (Member) session.getAttribute("member"); + + // 获取当前会话 + HttpSession session = request.getSession(); + // 从会话中获取会员对象 + Member member = (Member) session.getAttribute("member"); - Integer trainId = (Integer) request.getAttribute("trainId"); - TrainService trainService = new TrainServiceImpl(); - Train train = trainService.getById(trainId); - // 根据会员ID获取会员个人信息 - Integer memberId = member.getMemberId(); // 从Session中获取 - PmemberService pmemberService = new PmemberServiceImpl(); - Pmember pmember = pmemberService.getPmemberByMemberId(memberId); - - // 将数据转发到界面 - request.setAttribute("train", train); - request.setAttribute("pmember", pmember); - request.getRequestDispatcher("pages/user/booking.jsp").forward(request, response); + // 从请求中获取车次ID + Integer trainId = (Integer) request.getAttribute("trainId"); + // 创建车次服务对象 + TrainService trainService = new TrainServiceImpl(); + // 根据车次ID获取车次对象 + Train train = trainService.getById(trainId); + // 根据会员ID获取会员个人信息服务对象 + Integer memberId = member.getMemberId(); // 从Session中获取会员ID + PmemberService pmemberService = new PmemberServiceImpl(); + // 根据会员ID获取会员个人信息对象 + Pmember pmember = pmemberService.getPmemberByMemberId(memberId); + + // 将车次对象和会员个人信息对象设置到请求中,以便在JSP页面中使用 + request.setAttribute("train", train); + request.setAttribute("pmember", pmember); + // 转发请求到订票页面 + request.getRequestDispatcher("pages/user/booking.jsp").forward(request, response); } - - + /** + * 处理POST请求的方法,用于处理会员订票的请求。 + * @param request HttpServletRequest对象,包含客户端的请求信息 + * @param response HttpServletResponse对象,包含服务器对客户端的响应信息 + * @throws ServletException 抛出Servlet异常 + * @throws IOException 抛出输入输出异常 + */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - /** - * 确认后执行, - * 将订票信息传入prep表 - * 将train表的本车次座位数量-1 - */ + // 从请求中获取车次ID,并转换为Integer类型 Integer trainId = Integer.valueOf(request.getParameter("trainId")); + // 创建车次服务对象 TrainService trainService = new TrainServiceImpl(); + // 根据车次ID获取车次对象 Train train = trainService.getById(trainId); - // 根据会员ID获取会员个人信息 - Member member = (Member) request.getSession().getAttribute("member"); // 从Session中获取 - Integer memberId = member.getMemberId();; + // 从会话中获取会员对象 + Member member = (Member) request.getSession().getAttribute("member"); // 从Session中获取会员对象 + // 获取会员ID + Integer memberId = member.getMemberId(); + // 创建会员个人信息服务对象 PmemberService pmemberService = new PmemberServiceImpl(); + // 根据会员ID获取会员个人信息对象 Pmember pmember = pmemberService.getPmemberByMemberId(memberId); + // 创建订单对象 Prep prep = new Prep(); + // 设置订单属性 prep.setTrainId(train.getTrainId()); prep.setPmemberId(pmember.getPmemberId()); prep.setStartStation(train.getStartStation()); @@ -84,39 +110,40 @@ public class BookingServlet extends HttpServlet { prep.setEndTime(train.getEndTime()); prep.setPrice(train.getPrice()); prep.setWay(false); - prep.setBooktime(new Timestamp(new Date().getTime())); - + prep.setBooktime(new Timestamp(new Date().getTime())); // 设置订票时间为当前时间 + // 创建订单服务对象 PrepService prepService = new PrepServiceImpl(); + // 调用订单服务添加订单,并返回影响的记录数 int recordNumber = prepService.add(prep); + // 获取PrintWriter对象,用于向客户端发送响应 PrintWriter out = response.getWriter(); if(recordNumber == 1) { - // 先将座位数量-1 + // 如果订单添加成功,更新车次的座位数量 train.setSeatNumber(train.getSeatNumber()-1); trainService.update(train); + // 获取会话对象 HttpSession session = request.getSession(); - String flag = (String) session.getAttribute("changePrep"); - if(flag!=null && !"".equals(flag) && "true".equals(flag)) { - // 是改签业务 - - // 修改session,表示改签结束 + // 检查是否是改签业务 + String flag = (String) session.getAttribute("changePrep"); + if(flag != null && !"".equals(flag) && "true".equals(flag)) { + // 如果是改签业务,修改会话属性,表示改签结束 session.setAttribute("changePrep", "false"); - out.write(""); + // 向客户端发送JavaScript代码,弹出提示并跳转到我的订单页面 + out.write(""); } - out.write(""); + // 向客户端发送JavaScript代码,弹出提示并跳转到车次查询页面 + out.write(""); - }else { - out.write(""); + } else { + // 如果订单添加失败,向客户端发送JavaScript代码,弹出提示并跳转到车次查询页面 + out.write(""); } + // 关闭PrintWriter对象 out.close(); - - } -} +} \ No newline at end of file