用JSP的Session 机制编写的程序就可以是你拥有一个功能强大购物车程序,是不是很诱人呢?赶紧开始我们的程序吧
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对象当中,并写入 sessionelse { 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对象不为空,则从其中移去要与要删除的商品条件相符的元素,并重新写sessionelse { ay.remove(index); session.setAttribute("car",ay); response.sendRedirect("order_index.jsp"); } } else { out.print("程序异常"); } } %> JSP Session 机制购物车是不是使你眼睛豁然一亮的感觉呢?赶紧开始吧,JSP Session机制的使用期待你的尝试。