免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5761 | 回复: 0
打印 上一主题 下一主题

用 Jsp 的 Session 机制编写的购物车程序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-09 19:34 |只看该作者 |倒序浏览
一、构建的商品类

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

package com.viita.Shop;
public class Goods implements Comparable {
    //    初始化各成员变量
    private String Id = null;//商品的编号Id
    private String name = null;//商品的名称name
    private float price = 0.00F;//商品的价格price
    private int number = 0;//商品的数量number
    public Goods(String Id, String name, float price, int number) {
        this.Id = Id;
        this.name = name;
        this.price = price;
        this.number = number;
    }
    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 int compareTo(Object m) {
        // TODO Auto-generated method stub
        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 language="java" import=" java.sql.*,com.viita.Shop.*,java.util.*" pageEncoding="GBK"%>
%
//设置编码格式
request.setCharacterEncoding("GBK");
//获取参数信息
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"));
//建立商品对象和ArrayList对象
Goods goods = new Goods(id,name,price,number);
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;iay.size();i++) //下面还有另一种遍历方法
        {
            Goods shop = (Goods)it.next();
//如果购入商品已经存在,则打印输入提示信息
            if(shop.compareTo(goods)==0)
{
            out.println("alert('你已经订购了此商品!');window.close();");
            }
//如果购入商品不存在,则直接将商品添加到ArrayList对象当中,并写入 session
            else
            {
            ay.add(goods);
            session.setAttribute("car",ay);
            response.sendRedirect("order_index.jsp");
            }
        }
    }
}
%>

三、删除商品

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

%@ page language="java" import="java.sql.*,com.viita.Shop.*,java.util.*" pageEncoding="GBK"%>
%
//设置编码格式
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"));
//创建符合条件参数要删除的商品对象
Goods goods = new Goods(id,name,price,number);
//获取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("程序异常");
    }
}
%>


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/72940/showart_1119381.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP