zoukankan      html  css  js  c++  java
  • web网上书店总结(jsp+servlet)

    web网上书店总结

    前端的首页。效果如下:
    其实挺基本上按照页面有的内容对其实现功能。按照用户划分功能模块,有后台管理员和普通用户,登录的时候会判断账户的类别,例如0权限代表普通用户登录,1权限代表管理员登录,然后转发到相对的页面。普通用户登录成功后返回首页,我的账户:xxx,显示用户名,这时就可以加入购物车;如果没有登陆就点击了购买就会跳转到登录页面,注册的时候需要验证码,注册成功返回登录页面。主要还是聊聊购物车和订单模块;因为用户对购物车里面的操作较为频繁,所以数据库并没有单独创建一个表,使用一个map集合book对象作为键,Integer对象作为值,如果这本图书是第一次加入,那就新创建一个hashmap,值设置为1,如果map集合中已经有这个键,那就让数值加一

    @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
            String id = request.getParameter("id");
            BookService bookService = new BookService();
            Book book = bookService.findBook(id);
    
            //1.先从session中获取购物车的数据
            Map<Book,Integer> map = (Map<Book, Integer>) request.getSession().getAttribute("cart");
    
            if(map==null){//如果购物车没有数据,就新创建一个购物车
                map= new HashMap<Book,Integer>();
                map.put(book,1);//把这本书装进购物车,数量设置成1
            }else {
                if (map.containsKey(book)){//如果购物车已经有这本书,那就让数量加一
                    // (这个containKey默认比较的是hashCode,所以要重写equals,hashCode方法)
                   map.put(book,map.get(book)+1);
                }else {
                    //如果是第一次添加就是1
                    map.put(book,1);
                }
    
            }
    
           /* for (Map.Entry<Book, Integer> map1 : map.entrySet()) {
                System.out.println(map1.getKey()+": 数量:"+map1.getValue());
            }*/
    
            request.getSession().setAttribute("cart",map);
    
            //重定向到购物车页面
            response.sendRedirect(request.getContextPath()+"/cart.jsp");
    
        }
    

    因为使用了map.containsKey();方法,这个就需要重写book类的hashCode(),和equals()方法。
    book的主键是id所以生成方法的时候按照ID进行比较就好了。
    在这里插入图片描述
    当删除购物车的商品时,只需要将map集合中的键移除掉就好。map.remove(book);
    订单模块中创建了两个表,order表和orderItem订单项表,订单表中是用户确认定单后,向表中插入了用户的一些信息,例如收货地址和用户ID,手机号等等。订单项表中是具体的商品信息,bookID和买的数量,订单项的订单id即是主键还是订单表的外键,商品id也是根据商品表所创建的外键。
    在这里插入图片描述
    确认订单后可以在我的账户中查看订单详情,这时的支付状态当然是未支付了,如果不想要的话就删除订单,
    在这里插入图片描述
    点击查看,确认个人信息正确后,可以进行支付。
    在这里插入图片描述
    结账的页面比较low,就是几个单选框。确认支付,跳转到支付成功页面。大概就是这个逻辑。
    在这里插入图片描述
    支付成功后会自动返回首页。
    后台管理员目前仅能对书本进行增删改查。
    查询的时候可以进行多条件查询。
    在这里插入图片描述
    目前就这些。具体代码实现在这里
    博主比较菜,以上逻辑有不对的欢迎指正,共同进步!
    代码人生!

  • 相关阅读:
    POJ-3131-Cubic Eight-Puzzle(双向BFS+哈希)
    Android WebView与JavaScript交互操作(Demo)
    程序猿Web面试之jQuery
    Java数据类型(基本数据类型和引用数据类型)
    Swift学习——A Swift Tour 枚举和结构体
    大龙的学习笔记之“虚方法,抽象方法,重写,抽象类,接口”
    thinkphp curd的事务回滚 一看就会
    图书源代码下载: Modern Differential Geometry of CURVES and SURFACES with Mathematica
    UOJ#422. 【集训队作业2018】小Z的礼物
    删除所选项(附加搜索部分的jquery)
  • 原文地址:https://www.cnblogs.com/dataoblogs/p/14121984.html
Copyright © 2011-2022 走看看