(转载)jsp实现购物车
转自:http://developer.51cto.com/art/200907/133510.htm
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;
- }
- }
JSP Session 机制购物车之二购物车实现
◆首先建立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("<script>alert('你已经订购了此商品!');window.close();script>");
- }
◆如果购入商品不存在,则直接将商品添加到ArrayList对象当中,并写入 session
- else
- {
- ay.add(goods);
- session.setAttribute("car",ay);
- response.sendRedirect("order_index.jsp");
- }
- }
- }
- }
- %>
JSP Session 机制购物车之三删除商品
◆对购物车中的商品进行删除操作
◆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("程序异常");
- }
- }
- %>