zoukankan      html  css  js  c++  java
  • [转]用 Jsp 的 Session 机制编写的购物车程序

    一、构建的商品类

    //写一个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;i<ay.size();i++) //下面还有另一种遍历方法

            {
                Goods shop = (Goods)it.next();
    //如果购入商品已经存在,则打印输入提示信息

                if(shop.compareTo(goods)==0)
    {
                out.println(" ");
                }
    //如果购入商品不存在,则直接将商品添加到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("程序异常");
        }
    }
    %>

  • 相关阅读:
    Redis详解----- 缓存穿透、缓存击穿、缓存雪崩
    mysql存储时间
    MAT入门到精通
    meven依赖思考记录
    线程池原理
    vscode + wsl2
    java架构师学习路线-高级
    java架构师学习路线-初级
    (二)垃圾回收
    (一)内存区域
  • 原文地址:https://www.cnblogs.com/ZhuRenWang/p/4675692.html
Copyright © 2011-2022 走看看