我的笔记1:javaweb类似淘宝的购物项目(纯个人当笔记的)

一、工具

用的Eclipse、Navicat  for Mysql以及Tomcat,准备项目需要的图片。

二、创建所需要的表

    如:用于登录注册的个人数据表,展示在页面商品的详情表,点击添加购物车用于存储所加商品的购物车表,订单表等

三、创建工程项目,以及导入需要的包

 根据个人数据库版本导入包

 四、创建登录页面

      也就是利用数据库里的你所存入的个人信息登录。从bean-dao-service-servlet,按照这个步骤实现,另外在写一个登录页面(login.jsp),后端代码

        String user_id=request.getParameter("user_id");
        String user_pwd=request.getParameter("user_pwd");
        List<UserInfo> list=null;
        try {
            list=new UserInfoService().login(user_id, user_pwd);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        if (list.size()>0) {

            //登录成功
            response.sendRedirect("showgoodsinfo.do");
        }else {
            //登录失败,重定向到登录页面
            response.sendRedirect("login.jsp");
        }

登录页面图

五、创建首页,以及将数据库里的商品详情显示在页面上

      还是上面同样的步骤,页面利用c:forEach遍历数据库信息显示在页面(图片上被红框的地方),后端代码

      处理图片是因为我数据库存的是1.jpg-2.jpg-3.jpg-4.jpg这种形式的数据,所以想要在页面显示第一张图作为商品图就需要处理一下(存入单张1.jpg就不需要了)

response.setContentType("text/html;charset=utf-8");
        request.setCharacterEncoding("utf-8");

        List<GoodsInfo> list=null;
        
        try {
            list=new GoodsInfoService().findAll();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        //处理一下图片信息,将1.jpg-2.jpg转化成1.jpg
        for (int i = 0; i < list.size(); i++) {
                                              //split  分裂的意思
                                            //就是把1.jpg-2.jpg分成单独的
            for (String s:list.get(i).getGoods_pic().split("-")) {
                //s=1.jpg  将list中goods_pic的值设置成1.jpg
                list.get(i).setGoods_pic(s);//将第一张图作为主业的图片
                break;
            }
        }
        request.setAttribute("list", list);
        request.getRequestDispatcher("index.jsp").forward(request, response);

首页图

5.1:从数据库调用图片需要用到上传下载

         String image_id=request.getParameter("image_id");
        System.out.println("打印"+image_id);
        //输入流关联源文件  
        File file=new File("D://image");
        //InputStream:输入字节流         它的子类:FileInputStream:文件输入流
        InputStream inputStream=new FileInputStream(file+"//"+image_id);
        //输出流关联目标文件
        //OutputStream:输出字节流        它的子类:FileOutputStream:文件输出流
        OutputStream OutputStream=response.getOutputStream();//直接浏览器显示
        int len=0;
        byte[] b=new byte[1024];
        while ((len=inputStream.read(b)) != -1) {
            OutputStream.write(b,0,len);
            
        }
        OutputStream.flush();
        OutputStream.close();
        inputStream.close();

 六、搜索框

     利用的模糊检索

七、商品详情页

点击首页的商品,跳转到商品详情页

String goods_id=request.getParameter("goods_id");
        List<GoodsInfo> list=null;
        try {
            list=new GoodsInfoService().findGoodsInfoById(goods_id);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //解析出套餐信息,并放在集合中,在界面中使用c:foreache显示
        List<String> setMealList=new ArrayList<>();
        for (String s:list.get(0).getGoods_color_sort().split("-")) {
            setMealList.add(s);
        }
        List<String> imagesList=new ArrayList<>();
        //获取到商品所有的小图信息,保存在集合中使用
        for (String s:list.get(0).getGoods_pic().split("-")) {
            imagesList.add(s);
        }
        
        //处理一下图片信息,将1.jpg-2.jpg转化成1.jpg
        for (String s:list.get(0).getGoods_pic().split("-")) {
            //s=1.jpg  将list中goods_pic的值设置成1.jpg
            
            list.get(0).setGoods_pic(s);//将第一张图作为主业的图片
            break;
        }
        
        request.setAttribute("goodsinfo", list.get(0));
        request.setAttribute("setMealList", setMealList);
        request.setAttribute("imagesList", imagesList);
    
        request.getRequestDispatcher("shoppingDetail.jsp").forward(request, response);

八、购物车

     点击首页所选中商品的购物车按钮,将所选中的商品加入到购物车里去(也就是把数据存入在数据库的购物车表里),跳转到购物车页面

request.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8");
    String taocan=request.getParameter("taocan");
    System.out.println("11111111111111111111111111111111111111111111111111111111111111111111111111111");
    String goods_id=request.getParameter("goods_id");
    String goods_count=request.getParameter("goods_count");
    
    List<GoodsCar> gc = null;   
    List<GoodsCar> goodsCars=null;  
    List<GoodsInfo> gi = null;
    
    System.out.println("aaaaaaaaaa"+goods_id);
    if(gc==null||gc.size()==0){
        System.out.println("meizhi");
        //将选中的产品放在购物车中  根据商品id
        try {
            gi=new GoodsInfoService().findGoodsInfoById(goods_id);
        } catch (SQLException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        String count="1";

        //处理一下图片信息1,将1.jpg-2.jpg转化成1.jpg
        System.out.println("sssssssssssss");
        for (String s:gi.get(0).getGoods_pic().split("-")) {
                    //s=1.jpg  将list中goods_pic的值设置成1.jpg
                    
            gi.get(0).setGoods_pic(s);//将第一张图作为主业的图片
            break;
        }
    
        //判断套餐是否为空
                if(taocan==null){
                    //使用默认套餐
                    for (String s:gi.get(0).getGoods_color_sort().split("-")) {
                        gi.get(0).setGoods_color_sort(s);
                        break;
                    }
                }else{
                    //如果套餐不为空,就使用传递的套餐信息
                    gi.get(0).setGoods_color_sort(taocan);
                }
            
            
            GoodsCar goodsCar=new   GoodsCar(goods_id,gi.get(0).getGoods_name(),gi.get(0).getGoods_pic(),gi.get(0).getGoods_sale_count(),gi.get(0).getGoods_color_sort(),count);
            System.out.println("添加购物车"+goodsCar.getGoods_color_sort());
            System.out.println("添加购物车"+goodsCar.getGoods_name());
            //给购物车添加数据,没有加数据,有加数量
            try {
                new GoodsCarService().addGoodsCar(goodsCar);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }        
    }
    //获取购物车
    try {
        goodsCars=new GoodsCarDAO().findGoodsCar();
        System.out.println(goodsCars.get(0).getGoods_name()+"--------"+goodsCars.size());
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    request.setAttribute("gc", goodsCars);
    
            
    //添加成功
      request.getRequestDispatcher("shoppingcars.jsp").forward(request, response);  //请求转发
      //response.sendRedirect("shoppingcars.jsp");   重定向   异步请求不能重定向

    

九、收藏页

 根据购物车商品的id,这里没有创建收藏表,用的session。

       //创建收藏页的信息
        List<Collect> collect=new ArrayList<Collect>();
        HttpSession session=request.getSession();
        session.setAttribute("collect", collect);

request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        //获取收藏表
        HttpSession session=request.getSession();
        List<Collect> collect=(List<Collect>) session.getAttribute("collect");
        //将选中的产品加入的收藏页
        //根据id查
        String goods_id=request.getParameter("goods_id");
        System.out.println("收藏成功"+goods_id);
        List<GoodsCar> list=null;
        try {
            list=new GoodsCarService().findGoodsCarByid(goods_id);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //处理一下图片信息,将1.jpg-2.jpg转化成1.jpg
        System.out.println("sssssssssssss");
        for (String s:list.get(0).getGoods_pic().split("-")) {
            //s=1.jpg  将list中goods_pic的值设置成1.jpg
                            
            list.get(0).setGoods_pic(s);//将第一张图作为主业的图片
            break;
        }
                
        //处理套餐
        for (String s:list.get(0).getGoods_color_sort().split("-")) {
            list.get(0).setGoods_color_sort(s);
                break;    
        }
        System.out.println("list"+list.get(0));
        Collect cl=new Collect(list.get(0));
        
        
        collect.add(cl);
        System.out.println("collect-----"+collect);
        //session.setAttribute("collect", collect);
        request.setAttribute("cl", collect);
        //加入完去收藏页
        request.getRequestDispatcher("collect.jsp").forward(request, response);

 九、订单页

选中商品,点击立即支付,跳转到核对订单页

 HttpSession session=request.getSession();   
        
              //查询当前用户的所有地址信息
                List<UserAddress> addresslist=null;
                System.out.println("查询到了");
                try {
                    addresslist = new UserAddressDAo().findAll();
                } catch (SQLException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            
                
                //查询前端选中的产品信息---前端发送给ids[]---从gc中查询
                
                String []ids=request.getParameterValues("ids[]");
                //获取购物车全部信息
                List<GoodsCar> list=null;
                System.out.println("查询");
                try {
                    list=new GoodsCarDAO().findGoodsCar();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                //在创建一个gc,表示选中的产品
                List<GoodsCar> gcs=new ArrayList<GoodsCar>();
                System.out.println("选中222222222"+list);
                for (int i = 0; i < list.size(); i++) {
                    for (int j = 0; j < ids.length; j++) {
                        if (list.get(i).getGoods_id().equals(ids[j])) {
                            for (String image1:list.get(i).getGoods_pic().split("-")) {
                                list.get(i).setGoods_pic(image1);
                                break;
                            }
                            gcs.add(list.get(i));//添加到选中的产品的集合里去
                            break;
                        }
                    }
                }
                session.setAttribute("addresslist", addresslist);
                session.setAttribute("gcs", gcs);   //要想转发到别的页面就要用session
                
                response.getWriter().print("1");

十、下单

 

 注:其他功能(购物车的加减数量按钮,结算总计,全选按钮,删除按钮以及同步数据的问题等),看自己的代码,在D盘。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值