⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 goods_cartservlet.java

📁 张新曼 精通JSP Web 开发技术与典型应用 随书光盘源码
💻 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 + -