📄 goods_cartservlet.java
字号:
package ch15.Servlet;
import java.util.Vector;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import ch15.JavaBean.Goods;
import ch15.JavaBean.DB_goods;
import ch15.JavaBean.DB_orders;
import ch15.JavaBean.Orders_detail;
import ch15.JavaBean.DB_orders_detail;
//购物车处理页面
public class goods_cartservlet extends javax.servlet.http.HttpServlet {
// private static final long serialVersionUID = 1L;
/**
* 处理客户发来的请求,并把处理结果派发到JSP页面中予以显示
*/
DB_goods db_goods = new DB_goods();
// 构造函数
public goods_cartservlet() {
super();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException { // 抛出接受请求的过程中的异常信息
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("gb2312");
response.setContentType("text/html; charset=gb2312");
try {
Vector vector = new Vector();
// 从session对象中取出购物车
vector = (Vector) request.getSession(true).getAttribute("vector");
String action = request.getParameter("action");
// 如果变量action的值为checkout,则处理结帐请求,并把处理结果
// 派发到check_out.jsp页面中予以显示
if (action.equals("checkout")) {
String sum = request.getParameter("total");
double total = 0;
try {
total = Double.parseDouble(sum);
}
catch (Exception ex) {
total = 0;
System.out.println(ex.getMessage());
}
for (int i = 0; i < vector.size(); i++) {
Goods goods = new Goods();
goods = (Goods) vector.elementAt(i);
// 计算折扣价格以及金额;
double amount = goods.getGoods_number()
* goods.getGoods_price()
* goods.getGoods_discount() / 10;
total = total + amount;
goods.setGoods_amount(amount);
vector.setElementAt(goods, i);
}
request.getSession(true).setAttribute("vector", vector);
RequestDispatcher rd = request
.getRequestDispatcher("/check_out.jsp");
rd.forward(request, response);
}
// 如果变量action的值为add,则对客户购买商品数量进行设置:若购物车中
// 尚不存在此类商品或此类商品数量为0,则根据客户的需要对商品的数量直接设置,
// 若购物车中已经存在此种商品,则在商品原数量的基础上进行相加
if (action.equals("add")) {
String goods_id = (String) request.getParameter("goods_id");
String goods_number = (String) request.getParameter("number");
int number = 0;
try {
number = Integer.parseInt(goods_number);
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
int id = Integer.parseInt(goods_id);
if (vector == null) {
vector = new Vector();
Goods goods = new Goods();
goods = db_goods.listgoods(goods_id);
goods.setGoods_number(number);
vector.addElement(goods);
request.getSession(true).setAttribute("vector", vector);
RequestDispatcher rd = request
.getRequestDispatcher("goods_show.jsp");
rd.forward(request, response);
} else {
// 使用flag标记来判断购物车中是否存在同类商品,若购物车中
// 存在同类商品,则赋flag的值为1
int flag = 0;
for (int i = 0; i < vector.size(); i++) {
Goods goods = (Goods) vector.elementAt(i);
if (goods.getGoods_id() == id) {
flag = 1;
int num = number + goods.getGoods_number();
goods.setGoods_number(num);
vector.setElementAt(goods, i);
// 把购物车放在session对象中,以实现会话跟踪
request.getSession(true).setAttribute("vector",
vector);
RequestDispatcher rd = request
.getRequestDispatcher("goods_show.jsp");
rd.forward(request, response);
}
}
if (flag == 0) {
Goods goods = new Goods();
goods = db_goods.listgoods(goods_id);
goods.setGoods_number(number);
vector.addElement(goods);
request.getSession(true).setAttribute("vector", vector);
RequestDispatcher rd = request
.getRequestDispatcher("/goods_show.jsp");
rd.forward(request, response);
}
}
}
// 如果变量action的值为delete,则删除购物车中相应商品
if (action.equals("delete")) {
String index = request.getParameter("delindex");
int dex = Integer.parseInt(index);
vector.removeElementAt(dex);
request.getSession(true).setAttribute("vector", vector);
RequestDispatcher rd = request
.getRequestDispatcher("/goods_show.jsp");
rd.forward(request, response);
}
// 如果变量action的值为mod,则修改购物车中相应商品的数量
if (action.equals("mod")) {
String num = request.getParameter("number");
String index = request.getParameter("modindex");
int gnum = Integer.parseInt(num);
int dex = Integer.parseInt(index);
for (int i = 0; i < vector.size(); i++) {
if (dex == i) {
Goods goods = (Goods) vector.elementAt(i);
goods.setGoods_number(gnum);
vector.setElementAt(goods, i);
}
}
request.getSession(true).setAttribute("vector", vector);
RequestDispatcher rd = request
.getRequestDispatcher("/goods_show.jsp");
rd.forward(request, response);
}
// 如果变量action的值为remo,则清空购物车
if (action.equals("remo")) {
vector.removeAllElements();
request.getSession(true).setAttribute("vector", vector);
RequestDispatcher rd = request
.getRequestDispatcher("/goods_show.jsp");
rd.forward(request, response);
}
// 如果变量action的值为confirm,则确认帐单,完成购物
if (action.equals("confirm")) {
DB_orders db_orders = new DB_orders();
DB_orders_detail db_order_detail = new DB_orders_detail();
String orderid = request.getParameter("orderid");
db_orders.mod_status(orderid);
Vector glist = new Vector();
glist = (Vector) request.getSession(true).getAttribute(
"orderGoods");
for (int i = 0; i < glist.size(); i++) {
Orders_detail details = new Orders_detail();
details = (Orders_detail) glist.elementAt(i);
db_order_detail.store_orders_detail(details);
}
request.getSession(true).invalidate();
RequestDispatcher rd = request
.getRequestDispatcher("/confagain.jsp");
rd.forward(request, response);
}
}
catch (Exception e) {
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -