转自:
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
ay
=(ArrayList)session.getAttribute("car");
◆如果ArrayList 对象为空,则直接添加到ArrayList对象当中
if(ay.isEmpty())
ay.add(goods);
session.setAttribute("car",ay);
response.sendRedirect("order_index.jsp");
◆如果ArrayList 对象不为空,则判断购入商品是否已经存在于车中
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
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
ay.remove(index);
session.setAttribute("car",ay);
response.sendRedirect("order_index.jsp");
out.print("程序异常");