pull/1/head
puxcofief 8 months ago
parent 467bf477f9
commit fa85a64c82

@ -1,80 +1,106 @@
package com.cn.servlet; package com.cn.servlet; // 定义Servlet所在的包名
import java.io.IOException; import java.io.IOException; // 导入IOException用于处理输入输出异常
import java.io.PrintWriter; import java.io.PrintWriter; // 导入PrintWriter用于向客户端发送字符文本数据
import java.sql.Timestamp; import java.sql.Timestamp; // 导入Timestamp类用于处理数据库时间戳
import java.util.Date; import java.util.Date; // 导入Date类用于处理日期
import javax.servlet.ServletException; import javax.servlet.ServletException; // 导入ServletException用于处理Servlet运行时的异常
import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServlet; // 导入HttpServlet是所有HTTP servlet的父类
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest; // 导入HttpServletRequest代表客户端的请求信息
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse; // 导入HttpServletResponse代表服务器对客户端的响应
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession; // 导入HttpSession代表与客户端的会话
import com.cn.domain.Member; import com.cn.domain.Member; // 导入Member类该类定义了会员的数据结构
import com.cn.domain.Pmember; import com.cn.domain.Pmember; // 导入Pmember类该类定义了会员个人信息的数据结构
import com.cn.domain.Prep; import com.cn.domain.Prep; // 导入Prep类该类定义了订单的数据结构
import com.cn.domain.Train; import com.cn.domain.Train; // 导入Train类该类定义了车次的数据结构
import com.cn.service.PmemberService; import com.cn.service.PmemberService; // 导入PmemberService接口该接口定义了会员个人信息服务的方法
import com.cn.service.PrepService; import com.cn.service.PrepService; // 导入PrepService接口该接口定义了订单服务的方法
import com.cn.service.TrainService; import com.cn.service.TrainService; // 导入TrainService接口该接口定义了车次服务的方法
import com.cn.service.impl.PmemberServiceImpl; import com.cn.service.impl.PmemberServiceImpl; // 导入PmemberService接口的实现类用于具体的会员个人信息业务操作
import com.cn.service.impl.PrepServiceImpl; import com.cn.service.impl.PrepServiceImpl; // 导入PrepService接口的实现类用于具体的订单业务操作
import com.cn.service.impl.TrainServiceImpl; import com.cn.service.impl.TrainServiceImpl; // 导入TrainService接口的实现类用于具体的车次业务操作
/** /**
* * BookingServlet
* @ClassName: BookingServlet * @ClassName: BookingServlet BookingServlet
* @Description: Servlet * @Description: Servlet
* @author: ljy * @author: ljy Servlet
* @date: 2019917 11:23:41 * @date: 2019917 11:23:41 Servlet
*/ */
public class BookingServlet extends HttpServlet { 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 { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/** // 获取当前会话
* HttpSession session = request.getSession();
*/ // 从会话中获取会员对象
HttpSession session = request.getSession(); Member member = (Member) session.getAttribute("member");
Member member = (Member) session.getAttribute("member");
Integer trainId = (Integer) request.getAttribute("trainId"); // 从请求中获取车次ID
TrainService trainService = new TrainServiceImpl(); Integer trainId = (Integer) request.getAttribute("trainId");
Train train = trainService.getById(trainId); // 创建车次服务对象
// 根据会员ID获取会员个人信息 TrainService trainService = new TrainServiceImpl();
Integer memberId = member.getMemberId(); // 从Session中获取 // 根据车次ID获取车次对象
PmemberService pmemberService = new PmemberServiceImpl(); Train train = trainService.getById(trainId);
Pmember pmember = pmemberService.getPmemberByMemberId(memberId); // 根据会员ID获取会员个人信息服务对象
Integer memberId = member.getMemberId(); // 从Session中获取会员ID
PmemberService pmemberService = new PmemberServiceImpl();
// 根据会员ID获取会员个人信息对象
Pmember pmember = pmemberService.getPmemberByMemberId(memberId);
// 将数据转发到界面 // 将车次对象和会员个人信息对象设置到请求中以便在JSP页面中使用
request.setAttribute("train", train); request.setAttribute("train", train);
request.setAttribute("pmember", pmember); request.setAttribute("pmember", pmember);
request.getRequestDispatcher("pages/user/booking.jsp").forward(request, response); // 转发请求到订票页面
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 { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/** // 从请求中获取车次ID并转换为Integer类型
*
* prep
* train-1
*/
Integer trainId = Integer.valueOf(request.getParameter("trainId")); Integer trainId = Integer.valueOf(request.getParameter("trainId"));
// 创建车次服务对象
TrainService trainService = new TrainServiceImpl(); TrainService trainService = new TrainServiceImpl();
// 根据车次ID获取车次对象
Train train = trainService.getById(trainId); Train train = trainService.getById(trainId);
// 根据会员ID获取会员个人信息 // 从会话中获取会员对象
Member member = (Member) request.getSession().getAttribute("member"); // 从Session中获取 Member member = (Member) request.getSession().getAttribute("member"); // 从Session中获取会员对象
Integer memberId = member.getMemberId();; // 获取会员ID
Integer memberId = member.getMemberId();
// 创建会员个人信息服务对象
PmemberService pmemberService = new PmemberServiceImpl(); PmemberService pmemberService = new PmemberServiceImpl();
// 根据会员ID获取会员个人信息对象
Pmember pmember = pmemberService.getPmemberByMemberId(memberId); Pmember pmember = pmemberService.getPmemberByMemberId(memberId);
// 创建订单对象
Prep prep = new Prep(); Prep prep = new Prep();
// 设置订单属性
prep.setTrainId(train.getTrainId()); prep.setTrainId(train.getTrainId());
prep.setPmemberId(pmember.getPmemberId()); prep.setPmemberId(pmember.getPmemberId());
prep.setStartStation(train.getStartStation()); prep.setStartStation(train.getStartStation());
@ -84,39 +110,40 @@ public class BookingServlet extends HttpServlet {
prep.setEndTime(train.getEndTime()); prep.setEndTime(train.getEndTime());
prep.setPrice(train.getPrice()); prep.setPrice(train.getPrice());
prep.setWay(false); prep.setWay(false);
prep.setBooktime(new Timestamp(new Date().getTime())); prep.setBooktime(new Timestamp(new Date().getTime())); // 设置订票时间为当前时间
// 创建订单服务对象
PrepService prepService = new PrepServiceImpl(); PrepService prepService = new PrepServiceImpl();
// 调用订单服务添加订单,并返回影响的记录数
int recordNumber = prepService.add(prep); int recordNumber = prepService.add(prep);
// 获取PrintWriter对象用于向客户端发送响应
PrintWriter out = response.getWriter(); PrintWriter out = response.getWriter();
if(recordNumber == 1) { if(recordNumber == 1) {
// 先将座位数量-1 // 如果订单添加成功,更新车次的座位数量
train.setSeatNumber(train.getSeatNumber()-1); train.setSeatNumber(train.getSeatNumber()-1);
trainService.update(train); trainService.update(train);
// 获取会话对象
HttpSession session = request.getSession(); HttpSession session = request.getSession();
String flag = (String) session.getAttribute("changePrep"); // 检查是否是改签业务
if(flag!=null && !"".equals(flag) && "true".equals(flag)) { String flag = (String) session.getAttribute("changePrep");
// 是改签业务 if(flag != null && !"".equals(flag) && "true".equals(flag)) {
// 如果是改签业务,修改会话属性,表示改签结束
// 修改session表示改签结束
session.setAttribute("changePrep", "false"); session.setAttribute("changePrep", "false");
out.write("<script>alert('改签成功!');" // 向客户端发送JavaScript代码弹出提示并跳转到我的订单页面
+ "window.location.href='MyPrepServlet'</script>"); out.write("<script>alert('改签成功!');" + "window.location.href='MyPrepServlet'</script>");
} }
out.write("<script>alert('订票成功!');" // 向客户端发送JavaScript代码弹出提示并跳转到车次查询页面
+ "window.location.href='GetByStartEndStationServlet'</script>"); out.write("<script>alert('订票成功!');" + "window.location.href='GetByStartEndStationServlet'</script>");
}else { } else {
out.write("<script>alert('很抱歉,订票失败!');" // 如果订单添加失败向客户端发送JavaScript代码弹出提示并跳转到车次查询页面
+ "window.location.href='GetByStartEndStationServlet'</script>"); out.write("<script>alert('很抱歉,订票失败!');" + "window.location.href='GetByStartEndStationServlet'</script>");
} }
// 关闭PrintWriter对象
out.close(); out.close();
} }
} }
Loading…
Cancel
Save