购物车操作

  近期刚完成二期的结业项目电子图书,其中主要训练的模块是购物车,后台发布前台显示,代码写的非常粗糙,JSP页面没有使用EL和JSTL,大片大片的<% %>。
  首先就其中购物车的增删改和清空购物车做一个笔记。
 
CartBean:
package  com.csthit.store.vo;

public   class  CartBean {
    
    
private  Book book;  // 图书bean
     private   int  quantity;  // 设置图书数量
    
    
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页面的动作参数
        HttpSession session  =  request.getSession();  // 获取一个Session对象    
        String isbn  =  request.getParameter( " isbn " );  // 以图书的ISBN为条件查询图书
        
        
/*
         * 添加一本书籍到购物车
         
*/
        
if ( " add " .equals(action)) {
            String num 
=  request.getParameter( " num " );   // JSP页面传递的数量参数,默认为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);
        
        }
        
        
/*
         * 修改购物车数量
         
*/
        
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 ) {   // 客户端如果把数量修改为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);
        }

你可能感兴趣的:(购物车操作)