zoukankan      html  css  js  c++  java
  • 简单的购物车

    用到的相干知识

    (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>");
  • 相关阅读:
    剑指offer二十二之从上往下打印二叉树
    剑指offer二十一之栈的压入、弹出序列
    Hadoop简介与伪分布式搭建—DAY01
    getopt解析命令行参数一例:汇集多个服务器的日志
    软件开发:如何表达和维护大型逻辑
    编程语言与可复用性
    危险的 SQL
    谁终将点燃闪电,必长久如云漂泊
    如何使错误日志更加方便排查问题
    生活的诀窍:任务激励式学习法和短小目标法
  • 原文地址:https://www.cnblogs.com/sunli0205/p/5886156.html
Copyright © 2011-2022 走看看