简单的购物车

用到的相干知识

(1)Java基础集合 ArrayList HashMap LinkedHashmap(有序)

  (2)session技术

(3)servlet

(4)单态

(5)如何选择不同的集合

     List集合都是有序的,map是无序的

     list和map集合都可以存放null

     list可以存放相同的对象,map也可以存放相同的对象,但是key不能重复

定义一个Book类:

package com.hsp;

public class Book implements java.io.Serializable{
    private String id;
    private String name;
    private String price;
    private int num;
    
    public int getNum() {
        return num;
    }
    public void setNum(int num) {
        this.num = num;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPrice() {
        return price;
    }
    public void setPrice(String price) {
        this.price = price;
    }
    

}

Db相当于是个数据库

 package com.hsp;

import java.util.ArrayList;

public class Db {
  private static ArrayList al=null;
  
  private Db(){
      
  }
  
  static{
      
      al=new ArrayList<Book>();
      Book book1=new Book();
      book1.setId("1");
      book1.setName("JAVA");
      book1.setPrice("50");
      
      Book book2=new Book();
      book2.setId("2");
      book2.setName("oracle");
      book2.setPrice("60");
      
      Book book3=new Book();
      book3.setId("3");
      book3.setName("linux");
      book1.setPrice("66");
      al.add(book1);
      al.add(book2);
      al.add(book3);
  }
  
  public static ArrayList getDb(){
      return al;
  }
  
  public static Book getBookById(String id){
      
      Book book=null;
      boolean b=false;
      for(int i=0;i<al.size();i++){
          book=(Book)al.get(i);
          if(book.getId().equals(id)){
              b=true;
              break;
          }
      }
      if(b){
         return book; 
      }else{
         return null;
      }
      
  }
}

页面显示ShowBook

//先死后活
        out.println("<h1>欢迎购买</h1>");
        
        out.println("oracle书<a href='/myCart/BuyBookCl?id=3&name=oracle' >点击购买</a></br>");

        //取出Db
        ArrayList<Book> mydb=Db.getDb();
        
        for(Book book:mydb){
            
            out.println(book.getName()+"----"+book.getPrice()+"<a href='/myCart/BuyBookCl?id="+book.getId()+"' >点击购买</a></br>");
        }

提交处理servlet(BuyBookCl)

response.setContentType("text/html;charset=utf-8");
        @SuppressWarnings("unused")
        PrintWriter out = response.getWriter();
        //request.getAttribute(name)接受的servlet与本身(request里面放置的属性)
        
        //浏览器发过来的(http协议相关的)
        
         
        String id=request.getParameter("id");
        Book bookinfo=Db.getBookById(id);
        HttpSession session=request.getSession();
        

        HashMap<String,Book> hm=(HashMap<String,Book>)session.getAttribute("myBooks");
        //如果第一次购物al=null
        if(hm==null){     
            hm=new LinkedHashMap<String,Book>();
            Book book=new Book();
            book.setId(id);
            book.setName(bookinfo.getName());
            book.setNum(1);
             hm.put(id,book);
             //al放到session中
             session.setAttribute("myBooks", hm);
        }else{
            //判断hm中是否有该书
            if(hm.containsKey(id)){
                //表示购买过一次
                //取出
                Book book=hm.get(id);
                int bookNum=book.getNum();
                book.setNum(bookNum+1);
            }else{
                Book book=new Book();
                book.setId(id);
                book.setName(bookinfo.getName());
                book.setNum(1);
                 hm.put(id,book);
            }
            //更新
            session.setAttribute("myBooks", hm);
        }
        //跳转到购物车
        request.getRequestDispatcher("/ShowMyCart").forward(request, response);     

购物车结果页面servlet(ShowMyCart)

response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        
        HashMap<String,Book> myBooks=(HashMap<String,Book>)request.getSession().getAttribute("myBooks"); 
         
        out.println("你的购物车有以下书籍:</br>");
        //out.println(myBooks);
        
        //遍历hashMap
        Iterator iterator=myBooks.keySet().iterator();
        
        while(iterator.hasNext()){
            
            String key=(String)iterator.next();
            
            Book book=myBooks.get(key);
            out.println(book.getName()+"----"+book.getNum()+"</br>");
        }
        
        out.println("购物车的总价是");
        out.println("<a href='/myCart/ShowBook'>返回购物大厅</a>");
原文地址:https://www.cnblogs.com/sunli0205/p/5886156.html