一、首先抽象出"購物車",由商品、購物車中的項、購物車三部分組成.
package
com.pf.entity;
import
java.io.Serializable;
import
java.util.ArrayList;
import
java.util.List;
/**
*
購物車類
*
*/
public
class
Cart
implements
Serializable{
List<CartItem>
list
=
new
ArrayList<CartItem>();
public
List<CartItem> getList() {
return
list
;
}
public
void
setList(List<CartItem> 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();
}
}
二、購物車抽象出來了,就要建立一個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
監聽器
*
*/
public
class
SessionListener
implements
HttpSessionListener {
//Session
集合
public
static
Map<String,HttpSession>
session_map
=
new
HashMap<String,HttpSession>();
/**
*
建立一個
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
*/
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);
}
}
三、接下來,建立一個能夠操做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)
*
*/
public
class
WebUtil {
/**
*
添加
Cookie
*
*
@param
response
*
@param
name
* Cookie
的名字
*
@param
value
* Cookie
的值
*
@param
maxAge
* Cookie
的存活時間
*/
public
static
void
addCookie(HttpServletResponse response, String name,
String value,
int
maxAge) {
Cookie cookie =
new
Cookie(name, value);
if
(maxAge > 0)
cookie.setMaxAge(maxAge);
//
添加到客戶端
response.addCookie(cookie);
}
/**
*
取出硬盤中全部的
Cookie
*
*
@param
request
*/
public
static
Map<String, Cookie> getAllCookies(HttpServletRequest request) {
Map<String, Cookie> cookie_map =
new
HashMap<String, Cookie>();
Cookie[] cookies = request.getCookies();
//
若是存在
cookie,
就存入
Map
if
(cookies!=
null
){
for
(
int
i = 0; i < cookies.
length
; i++) {
cookie_map.put(cookies.getName(), cookies);
}
}
return
cookie_map;
}
/**
*
在
Cookie
中經過
Cookie
名稱得到Session中的
SessionId
*
@param
request
*
@param
name
*/
public
static
String getSessionIdByNameInCookie(HttpServletRequest request,String name){
Map<String, Cookie> cookie_map=getAllCookies
(request);
if
(cookie_map.containsKey(name)){
Cookie cookie = cookie_map.get(name);
return
cookie.getValue();
}
return
null
;
}
}