Posted on 2008-09-01 00:04
橡皮人 閱讀(170)
評論(0) 編輯 收藏
近期剛完成二期的結(jié)業(yè)項目電子圖書,其中主要訓練的模塊是購物車,后臺發(fā)布前臺顯示,代碼寫的非常粗糙,JSP頁面沒有使用EL和JSTL,大片大片的<% %>。
首先就其中購物車的增刪改和清空購物車做一個筆記。
CartBean:
package com.csthit.store.vo;
public class CartBean {
private Book book; //圖書bean
private int quantity; //設(shè)置圖書數(shù)量
public Book getBook() {
return book;
}
public void setBook(Book book) {
this.book = book;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
}
上面是對購物車的bean組件,下面放置幾個對cart進行增刪改清空的Servlet代碼
String action = request.getParameter("action"); //獲得JSP頁面的動作參數(shù)
HttpSession session = request.getSession(); //獲取一個Session對象
String isbn = request.getParameter("isbn"); //以圖書的ISBN為條件查詢圖書
/*
* 添加一本書籍到購物車
*/
if("add".equals(action)) {
String num = request.getParameter("num"); //JSP頁面?zhèn)鬟f的數(shù)量參數(shù),默認為1
int quantity = Integer.parseInt(num);
BookDAO bookdao = new BookDAO();
Book book = bookdao.queryByISBN(isbn);
CartBean cb = null;
Map map = null;
if(session.getAttribute("MYCART")!=null) {
map = (HashMap)session.getAttribute("MYCART");
if(map.get(isbn)!=null) {
cb = (CartBean)map.get(isbn);
cb.setQuantity(cb.getQuantity()+quantity);
} else {
cb = new CartBean();
cb.setBook(book);
cb.setQuantity(quantity);
}
map.put(isbn, cb);
} else {
map = new HashMap();
cb = new CartBean();
cb.setBook(book);
cb.setQuantity(quantity);
map.put(isbn, cb);
}
session.setAttribute("MYCART", map);
RequestDispatcher rd = request.getRequestDispatcher("view_cart.jsp");
rd.forward(request, response);
}
/*
* 修改購物車數(shù)量
*/
if("modify".equals(action)) {
String num = request.getParameter("num");
int quantity = Integer.parseInt(num);
Map map = (Map)session.getAttribute("MYCART");
CartBean cb = null;
if(quantity==0) { //客戶端如果把數(shù)量修改為0則刪除當前書籍
map.remove(isbn);
} else {
cb = (CartBean)map.get(isbn);
cb.setQuantity(quantity);
map.put(isbn, cb);
}
session.setAttribute("MYCART", map);
RequestDispatcher rd = request.getRequestDispatcher("view_cart.jsp");
rd.forward(request, response);
}
/*
* 刪除商品
*/
if("delete".equals(action)) {
Map map = (Map)session.getAttribute("MYCART");
map.remove(isbn);
session.setAttribute("MYCART", map);
RequestDispatcher rd = request.getRequestDispatcher("view_cart.jsp");
rd.forward(request, response);
}
/*
* 清空購物車,使Map的key長度為0
*/
if("remove".equals(action)) {
Map map = (HashMap)session.getAttribute("MYCART");
Object[] keys = map.keySet().toArray();
for (int i = 0; i < keys.length; i++) {
map.remove((String)keys[i]);
}
session.setAttribute("MYCART", map);
RequestDispatcher rd = request.getRequestDispatcher("view_cart.jsp");
rd.forward(request, response);
}