您的位置:首页 > 其它

Session ArrayList 实现购物车程序

2009-04-05 18:10 357 查看
一、构建的商品类

//写一个Goods类,并定义商品的各个属性,返回商品属性的方法,以及商品对象进行比较的方法

//Goods.java

复制内容到剪贴板
代码:
package sobook.shopcar;

public class Goods implements Comparable{

//初始化各成员变量

private String Id = null;

private String name = null;

private float price = 0.00F;

private int number = 0;

private String percent = null;

public Goods(String Id,String name,float price,int number,String percent){

this.Id = Id;

this.name = name;

this.price = price;

this.number = number;

this.percent = percent;

}

public String getId()            //返回订购商品的编号Id

{

return this.Id;

}

public String getName()        //返回订购商品的名称name

{

return this.name;

}

public float getPrice()           //返回订购商品的价格price

{

return this.price;

}

public int getNumber()          //返回订购商品的数量number

{

return this.number;

}

public String getPercent()       //返回订购商品的优惠百分比

{

return this.percent;

}

public int compareTo(Object m) //返回订购商品比较的结果

{

Goods n = (Goods)m;

int comRs = Id.compareTo(n.Id);

return comRs;

}

}


二、购物车

//首先建立Goods(商品)对象goods,并建立建立ArrayList对象ay

//通过ArrayList对象的方法add()将商品对象添加到ArrayList对象ay中

//由于ArrayList对象是具有添加和删除成员的方法,从而实现多个商品存储管理于ArrayList对象

//将ArrayList对象ay存储于session对象当中,实现购物车功能

//shopcar.jsp

复制内容到剪贴板
代码:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,sobook.shopcar.*,java.util.*" %>

//this code by hongseheike

<%

//设置编码格式

request.setCharacterEncoding("gb2313");

//获取参数信息

String id = request.getParameter("id");

String name = request.getParameter("name");

int number = java.lang.Integer.parseInt(request.getParameter("number"));

float price= java.lang.Float.parseFloat(request.getParameter("price"));

String percent = request.getParameter("percent");

//建立商品对象和ArrayList对象

Goods goods = new Goods(id,name,price,number,percent);

ArrayList ay = null;

//如果session中从未写入过,则将建立的商品对象添加到ArrayList对象当中,并写入 session

if((ArrayList)session.getAttribute("car")==null)

{

ay = new ArrayList();

ay.add(goods);

session.setAttribute("car",ay);

response.sendRedirect("order_index.jsp");

}

//如果写如过,则将商品对象添加到ArrayList对象当中,并写入 session

else

{

ay=(ArrayList)session.getAttribute("car");

//如果ArrayList 对象为空,则直接添加到ArrayList对象当中

if(ay.isEmpty())

{

ay.add(goods);

session.setAttribute("car",ay);

response.sendRedirect("order_index.jsp");

}

//如果ArrayList 对象不为空,则判断购入商品是否已经存在于车中

else

{

Iterator it = ay.iterator();

for(int i = 0;i<ay.size();i++)   //下面还有另一种遍历方法

{

Goods shop = (Goods)it.next();

//如果购入商品已经存在,则打印输入提示信息

if(shop.compareTo(goods)==0)

{

out.println("<script>alert('你已经订购了此图书!');window.close();</script>");

}

//如果购入商品不存在,则直接将商品添加到ArrayList对象当中,并写入 session

else

{

ay.add(goods);

session.setAttribute("car",ay);

response.sendRedirect("order_index.jsp");

}

}

}

}

%>


三、删除商品

//对购物车中的商品进行删除操作

//removeGoods.jsp

复制内容到剪贴板
代码:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,sobook.shopcar.*,java.util.*" %>

<%

//设置编码格式

request.setCharacterEncoding("gb2313");

//获取参数信息

String id = request.getParameter("id");

String name = request.getParameter("name");

float price = java.lang.Float.parseFloat(request.getParameter("price"));

int number = java.lang.Integer.parseInt(request.getParameter("number"));

String percent = request.getParameter("percent");

//创建符合条件参数要删除的商品对象

Goods goods = new Goods(id,name,price,number,percent);

//获取session 中存储的ArrayList对象

ArrayList ay = (ArrayList)session.getAttribute("car");

Iterator it = ay.iterator();

//遍历ArrayList对象,并将ArrayList对象中的元素和创建的符合参数条件要删除的商品进行比较

for(int i = ay.size();it.hasNext();i--)

{

Goods shop = (Goods)it.next();

//查询是否有ArrayList对象中的元素与要删除的商品相同

if(shop.compareTo(goods)==0)

{

int index = ay.indexOf(shop);

//如果ArrayList对象已经为空,则跳转

if(ay.isEmpty())

{

response.sendRedirect("order_index.jsp");

}

//如果ArrayList对象不为空,则从其中移去要与要删除的商品条件相符的元素,并重新写session

else

{

ay.remove(index);

session.setAttribute("car",ay);

response.sendRedirect("order_index.jsp");

}

}

else

{

out.print("程序异常");

}

}

%>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: