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

📄 goods_cartservlet.java

📁 张新曼 精通JSP Web 开发技术与典型应用 随书光盘源码
💻 JAVA
字号:
package ch24.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 ch24.JavaBean.Goods;
import ch24.JavaBean.DB_goods;
import ch24.JavaBean.DB_orders;
import ch24.JavaBean.Orders_detail;
import ch24.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 + -