文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-09-11 22:01

关注

前言

做一个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("");                 }else {                     session.setAttribute("user",user);//user-->Object                     out.println("");                 }                 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("");                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 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("");                }            }        } 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 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("");                }            }        } catch (FileUploadException e) {            e.printStackTrace();        }

4. 购物车页面

商品信息 数量 金额 操作
${user.introduce}
- ${user.amount} +
¥ ${user.price} 移除
合计: 0.00 结算

五、总结感想

这个项目,后端处理的还行,但是由于头脑简单,所以把前端页面设计的比较难看,大家多包涵,可以自行修改或者联系我修改。
如果在学习过程中有任何问题都可在评论区指出。

六、完整源代码和素材

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

来源地址:https://blog.csdn.net/m0_63512120/article/details/129108284

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯