java购物车的实现 基于Session和Cookie的购物车(一)

2014-11-24 08:22:27 · 作者: · 浏览: 0

今天学习到了另外一种购物车的实现.和.net中的实现思路有些差异.在此做个总结
1、首先抽象出"购物车",由商品、购物车中的项、购物车三部分组成.
package com.pf.entity;
import java.io.Serializable;
/**
* 商品 类(我用的Food)
* @author PF
*/
public class Food implements Serializable{
private int food_id ;
private String food_name ;
public int getFood_id() {
return food_id ;
}
public void setFood_id( int food_id) {
this . food_id = food_id;
}
public String getFood_name() {
return food_name ;
}
public void setFood_name(String food_name) {
this . food_name = food_name;
}

}

package com.pf.entity;
import java.io.Serializable;
/**
* 购物车项
* @author PF
*
*/
public class CartItem implements Serializable{
private Food food ;
private int count ;
public Food getFood() {
return food ;
}
public void setFood(Food food) {
this . food = food;
}
public int getCount() {
return count ;
}
public void setCount( int count) {
this . count = count;
}
}

package com.pf.entity;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* 购物车类
* @author PF_CQ
*
*/
public class Cart implements Serializable{
List list = new ArrayList();
public List getList() {
return list ;
}
public void setList(List list) {
this . list = list;
}
public void addCartItem(CartItem item){
for (CartItem it : list ){
if (it.getFood().getFood_id()==item.getFood().getFood_id())
return ;
}
list .add(item);
}
public void removeItem(CartItem item){
list .remove(item);
}
public void clearCart(){
list .clear();
}
}

2、购物车抽象出来了,就要创建一个Session监听器,用于每次创建一个session之后都保存进一个键值对集合中,下次可以通过session的Id获取

package com.pf.org;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
* Session 监听器
* @author PF
*
*/
public class SessionListener implements HttpSessionListener {
//Session 集合
public static Map session_map = new HashMap();
/**
* 创建一个 session
*/
public void sessionCreated(HttpSessionEvent sessionEvent) {
String session_id=sessionEvent.getSession().getId();
System. out .println( "====== 创建了一个 Session,id 是 :" +session_id+ "======" );
session_map .put(session_id, sessionEvent.getSession());
}
/**
* 销毁
*/
public void sessionDestroyed(HttpSessionEvent sessionEvent) {
session_map .remove(sessionEvent.getSession());
}
/**
* 获得 session
* @param session_id
* @return
*/
public static HttpSession getSessionById(String session_id){
return session_map .get(session_id);
}
/**
* 移除 session
* @param session_id
*/
public static void removeSessionById(String session_id){
session_map .remove(session_id);
}
}

3、接下来,创建一个可以操作Cookie的类
package com.pf.org;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Web 工具类 ( 用于操作 Cookie)
* @author PF
*
*/
public class WebUtil {
/**
* 添加 Cookie
*
* @param response
* @