JavaWeb:实现购物商城(课程设计完整版)

前言

做一个javaweb可以对前后端基础知识进行巩固。
就比如 前端可以用 html+css+js+jQuery;
后端Http协议,Servlet基础,JSP技术,Mysql等
在文章结尾附项目源代码和素材

一、功能概述

  1. 购物商城分为 管理员 和 普通用户 页面
  2. 用户可以自行注册登录
  3. 用户可以 加入商品到购物车中,可以查看商品的详情
  4. 管理员可以对 商品进行增删改查,就比如发布商品,下架商品,修改商品,搜索商品。

二、代码分析

在这里插入图片描述

  1. action层:管理业务调度和管理跳转的,即处理逻辑问题
  2. bean层:封装数据,设置数据的属性和行为
  3. biz层:接受数据库的处理结果并且返回给前端
  4. dao层:对数据库进行增删改查
  5. util层: 是一个多功能,基于工具的包。比如字符串处理,JDBC连接等

三、项目展示

因为艺术细胞太少,所以前端页面设计的比较难看,大家可以自行修改也可以在评论区提出意见,或联系我修改。

1.登录和注册

在这里插入图片描述
在这里插入图片描述

2.普通用户页面

在这里插入图片描述

3.商品详情页

在这里插入图片描述

4.购物车

在这里插入图片描述

5.管理员页面

在这里插入图片描述

6. 发布商品页面

在这里插入图片描述

7. 修改商品页面

在这里插入图片描述

8.商品数据库

在这里插入图片描述

四、部分代码展示

1.登录和注册

//1.判读用户请求的类型为login
        String method = req.getParameter("type");
        switch (method) {
            case "login":
                // 从 login.html中 拿 账号,密码等数据
                String name = req.getParameter("name");
                String pwd = req.getParameter("pwd");

                //  调用UserBiz的getUser方法,根据 网页中 输入的账号密码,获取相应对象
                User user = userBiz.getUser(name,pwd);

                 //判断 获取到的对象是否为 null;
                 if (user == null) {
                     System.out.println(user);
                     out.println("<script>alert('用户名或密码不存在');location.href = 'login.html';</script>");
                 }else {

                     session.setAttribute("user",user);//user-->Object
                     out.println("<script>alert('登录成功');location.href='/UserShow';</script>");
                 }

                 break;
            case "register" :

                // 从 login.html中 拿 账号,密码等数据
                String name1 = req.getParameter("name");
                String pwd1 = req.getParameter("pwd");
                UserDao userDao = new UserDao();
                try {
                    userDao.setUser(name1,pwd1);
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
                out.println("<script>alert('注册成功');location.href = 'login.html';</script>");
                break;

2.修改商品

req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter out = resp.getWriter();

        CommodityDao commodityDao = new CommodityDao();

        String temp = req.getParameter("mod");
        int temp1 = 0;

        if (temp!=null) {
            temp1=Integer.parseInt(temp);
        }

        DiskFileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);
        String imgPath="";

        try {
            String name ="";
            String price = "";
            String introduce = "";
            String path="";
            List<FileItem> list = upload.parseRequest(req);

            for (FileItem item : list) {

                if (item.isFormField()){
                    switch (item.getFieldName()){
                        case "mod" :
                            temp1 = Integer.parseInt(item.getString("utf-8"));
                            break;
                        case "name" :
                            name = item.getString("utf-8");
                            break;
                        case "price" :
                            price = item.getString("utf-8");
                            break;
                        case "introduce" :
                            introduce = item.getString("utf-8");
                            break;
                    }
                }else {
                    // 拿到文件的名称
                    String fileName = item.getName();
                    // 时间戳唯一 唯一的fileName

                    fileName=fileName.substring(fileName.lastIndexOf("."));

                    fileName=System.currentTimeMillis()+fileName;

                    imgPath="Mysql_imgs/"+fileName;

                    // 拿到文件存储的路径
                    path = "D:\\IdeaProjects\\mydemo\\web\\Mysql_imgs\\"+fileName;
                    // 创建读写流
                    InputStream in = item.getInputStream();
                    FileOutputStream outt = new FileOutputStream(path);
                    // 完成读写操作
                    byte [] buffer = new byte[1024];
                    int len = 0 ;
                    while ((len = in.read(buffer)) > 0) {
                        outt.write(buffer);
                    }
                    // 关闭资源
                    in.close();
                    outt.close();
                    item.delete();

                }

                System.out.println(temp1 +" "+name +" "+price +" "+introduce +" "+imgPath );
                if (name!=""&&price!=""&&introduce!=""&&imgPath!="") {

                    try {
                        commodityDao.modCommodity(temp1,name,price,introduce,imgPath);
                    } catch (SQLException throwables) {
                        throwables.printStackTrace();
                    }

                    out.println("<script>alert('修改成功');location.href = 'index';</script>");
                }


            }

        } catch (FileUploadException e) {
            e.printStackTrace();
        }


3. 发布商品


        DiskFileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);
        CommodityDao commodityDao = new CommodityDao();
        String imgPath="";

        try {
            String name ="";
            String price = "";
            String introduce = "";
            String path="";
            List<FileItem> list = upload.parseRequest(req);
            for (FileItem item : list) {


                if (item.isFormField()){
                    switch (item.getFieldName()){
                        case "name" :
                   name = item.getString("utf-8");
                            break;
                        case "price" :
                             price = item.getString("utf-8");
                            break;
                        case "introduce" :
                            introduce = item.getString("utf-8");
                            break;
                    }
                }else {
                    // 拿到文件的名称
                    String fileName = item.getName();
                    // 时间戳唯一 唯一的fileName

                    fileName=fileName.substring(fileName.lastIndexOf("."));

                    fileName=System.currentTimeMillis()+fileName;

                    imgPath="Mysql_imgs/"+fileName;

                    // 拿到文件存储的路径
                    path = "D:\\IdeaProjects\\mydemo\\web\\Mysql_imgs\\"+fileName;
                    // 创建读写流
                    InputStream in = item.getInputStream();
                    FileOutputStream outt = new FileOutputStream(path);
                    // 完成读写操作
                    byte [] buffer = new byte[1024];
                    int len = 0 ;
                    while ((len = in.read(buffer)) > 0) {
                        outt.write(buffer);
                    }
                    // 关闭资源
                    in.close();
                    outt.close();
                    item.delete();

                }




                if (name!=""&&price!=""&&introduce!=""&&imgPath!="") {
//                    System.out.println(name+" ; "+price+" ; "+introduce+" ; "+imgPath);
                    try {
                        commodityDao.setCommodity(name,price,introduce,imgPath);
                    } catch (SQLException throwables) {
                        throwables.printStackTrace();
                    }

                    out.println("<script>alert('添加成功');location.href = 'index';</script>");
                }


            }


        } catch (FileUploadException e) {
            e.printStackTrace();
        }

4. 购物车页面

<body>
<div class="divv">
    <div class="head">
        <a href="/UserShow">首页</a>
    </div>
    <div class="contain">
        <div class="con">
            <div class="con_div1">
                <span style="margin-left: 350px;">商品信息</span>
                <span style="margin-left: 170px;">数量</span>
                <span style="margin-left: 150px;">金额</span>
                <span style="float: right;margin-right: 138px;">操作</span>
            </div>
            <c:forEach items="${Arraylist}" var="user">
                <div class="con_div">

                    <div class="con_div_div1"> <img src="${user.img}" alt="" class="con_div_img"></div>
                    <div class="con_div_div2">${user.introduce}</div>
                    <div class="con_div2">
                        <a href="/carjian?id=${user.id}&amount=${user.amount}" class="con_div2_a1">-</a>
                        <span class="con_div2_in1">${user.amount}</span>
                        <a href="/carjia?id=${user.id}&amount=${user.amount}" class="con_div2_a2">+</a>
                    </div>
                    <span class="con_div_s3">¥</span>
                    <span class="con_div_s2">${user.price}</span>
                    <a href="/delcar?id=${user.id}" class="con_div_a1">移除</a>
                </div>


            </c:forEach>
            <div class="con_end">
                <span class="con_end_s1">合计: </span>
                <em class="con_end_em">0.00</em>
                <a href="" class="con_end_a1">结算</a>
            </div>

        </div>
    </div>

</div>
<script>
    let gets = document.getElementsByClassName("con_div_s2");
    let amounts = document.getElementsByClassName("con_div2_in1");
    let sum = 0;
    for (let i = 0; i < gets.length; i++) {
        sum += parseInt(gets[i].innerHTML) * parseInt(amounts[i].innerHTML);
    }

    document.getElementsByClassName("con_end_em")[0].innerHTML = sum;


</script>
</body>

五、总结感想

目前这个项目是1.0版本的。
现在已经升级为2.0了,在这个基础上 添加了商品分类,管理员和用户分开登录,商品下单,商品收藏等功能!

六、完整源代码和素材

链接:https://pan.baidu.com/s/13MG5R_xrLWQrxcf7sBtt7g?pwd=ojbk
提取码:ojbk

  • 113
    点赞
  • 894
    收藏
    觉得还不错? 一键收藏
  • 52
    评论
JavaWeb购物商城的设计需要考虑多方面的因素,包括技术选型、系统架构、功能模块、数据库设计、安全性等方面。下面是一些JavaWeb购物商城设计的小结: 1. 技术选型:JavaWeb购物商城一般采用Spring、SpringMVC、Mybatis等技术框架进行开发,同时也会涉及到前端技术,如HTML、CSS、JavaScript等。需要根据实际需求,选择合适的技术。 2. 系统架构:JavaWeb购物商城需要考虑系统架构,如分层架构、微服务架构等,以便实现系统的可扩展性、可维护性等。 3. 功能模块:JavaWeb购物商城一般包含用户注册、登录、商品浏览、购物车、订单管理、支付、物流跟踪等功能模块,需要根据实际需求设计相应的模块。 4. 数据库设计:JavaWeb购物商城需要设计数据库,存储用户信息、商品信息、订单信息等数据,一般采用MySQL等关系型数据库。需要合理设计数据库结构,以便提高系统的性能和稳定性。 5. 安全性:JavaWeb购物商城需要保证用户信息的安全性,采用加密技术、登录验证等方式进行保护。同时,需要考虑系统的防护措施,如防火墙、反向代理等。 6. 性能优化:JavaWeb购物商城需要考虑性能优化,如缓存技术、分布式部署等方式,提高系统性能和稳定性。 综上所述,JavaWeb购物商城设计需要考虑多方面的因素,需要综合考虑业务需求、技术选型、系统架构、数据库设计、安全性等方面,才能设计出高性能、高安全、高可靠的商城系统。
评论 52
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值