模仿淘宝购物系统的Java Web前端项目(开源项目)

模仿淘宝购物系统的Java Web前端项目(开源项目)
提示:此项目仅作为本博主的学习笔记记录,不作为商品售卖,资源往下翻看源码获取

文章目录


前言

提示:这里可以添加本文要记录的大概内容:

本项目要求完成Java Web的开发环境准备,以及项目开发框架的搭建
Web开发环境准备,包括eclipse、MySQL、tomcat
Web项目框架搭建,涉及jsp、servlet、MVC等技术

运行网址:http://localhost:8080/eshop0/index.action


提示:以下是本篇文章正文内容,下面案例可供参考

Web端功能设计

首页

在这里插入图片描述

热销商品

在这里插入图片描述

新到商品

在这里插入图片描述

商品分类

在这里插入图片描述

商品详情

![在这里

在这里插入图片描述

购物车


在这里插入图片描述

添加地址

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


在这里插入图片描述

提交订单

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

部分代码展示

GoodsController中的搜索商品功能

//搜索商品elseif(url.equals("/goods/searchGoods.action")){String keyword=req.getParameter("keyword");String sort=req.getParameter("sort");List<Goods> searchGoods=newArrayList<Goods>();if(keyword!=null&&!keyword.equals("")){ searchGoods=GoodsService.searchGoodsByKeywords(keyword,sort); req.setAttribute("goods", searchGoods);} req.getRequestDispatcher("/goods/goods_list.jsp").forward(req, resp);}elseif(url.equals("/goods/deleteCart.action")){ resp.setContentType("text/json; charset=utf-8");PrintWriter out = resp.getWriter();String index=req.getParameter("index");List<Goods> goodslist=newArrayList<Goods>();Object ob=req.getSession().getAttribute("goodslist");if(ob!=null&&index!=null){ goodslist=(List<Goods>) ob; goodslist.remove(Integer.parseInt(index));} req.getSession().setAttribute("goodslist", goodslist); out.print("{\"success\":true,\"cartnum\":"+goodslist.size()+"}");}elseif(url.equals("/goods/clearCart.action")){ resp.setContentType("text/json; charset=utf-8");PrintWriter out = resp.getWriter(); req.getSession().removeAttribute("goodslist"); out.print("{\"success\":true}");}elseif(url.equals("/goods/changeCart.action")){List<Goods> goodslist=newArrayList<Goods>();Object ob=req.getSession().getAttribute("goodslist");if(ob!=null){ goodslist=(List<Goods>) ob;} resp.setContentType("text/json; charset=utf-8");PrintWriter out = resp.getWriter();String index=req.getParameter("index");String goodsSales=req.getParameter("goodsSales");float totalAmount=0;float totalPrice=0;if(ob!=null){for(int i=0;i<goodslist.size();i++){if(i==Integer.parseInt(index)){ goodslist.get(i).setGoodsSales(Integer.parseInt(goodsSales)); totalPrice=goodslist.get(i).getGoodsSales()*goodslist.get(i).getGoodsDiscount();} totalAmount=totalAmount+goodslist.get(i).getGoodsSales()*goodslist.get(i).getGoodsDiscount();}} out.print("{\"success\":true,\"totalAmount\":"+totalAmount+",\"totalPrice\":"+totalPrice+"}");}elseif(url.equals("/goods/buyGoods.action")){ req.setAttribute("catelist", catelist);User logu=(User)req.getSession().getAttribute("_LOGIN_USER_");if(logu!=null){// List<Address> addresses=AddressService.getAllAddress(logu.getUserId()); //req.setAttribute("addrs",addresses); } req.getRequestDispatcher("/order/buyGoods.jsp").forward(req, resp);}

GoodsService中的搜索商品功能

//byzmhpublicstaticList<Goods>searchGoodsByKeywords(String name,String sort){// TODO Auto-generated method stubDBUtil1 db=newDBUtil1();// 连接数据库String sql="select * from t_goods where goods_name like ? ";if(sort!=null)if(sort.equals("1")) sql=sql+" order by goods_discount asc";elseif(sort.equals("2")) sql=sql+" order by goods_discount desc";elseif(sort.equals("3")) sql=sql+" order by goods_sales desc";elseif(sort.equals("4")) sql=sql+" order by goods_sales asc";String params[]={"%"+name+"%"};List<Map<String,String>> goods_map=db.getList(sql,params);if(goods_map!=null)returnmaptomodel(goods_map);elsereturnnull;}

可能会出现的错误

如果某个功能不好使,请刷新重试,此项目实在找不到当时的版本了

如果拿到项目后发现图片不显示

1、找到项目中的代码,看一下是不是图片地址不对,对应地址【/images】下查看

在这里插入图片描述


在这里插入图片描述

2、检查是不是数据库连接问题
数据库连接工具 DBUtil.java


源码获取

如果有按钮不好使请刷新重试,还是不好使请评论或私信我检查
因为原来有个功能齐全的,有个不全的,不知道谁说那个全的不全,结果把不全的给替换掉了那个全的,于是就成了现在各位看到的样子,所以这个如果还是不全,我会尽量找找那个全的

Gitee提取地址:点击此处跳转到基于Java Web的随意购商城系统(开源项目)源码地址

在这里插入图片描述

Read more

【 C++ 入门】Cyber骇客的 流式文本序列处理器 —— 【 string 类】万字大文带你从0学好C++的string类!

【 C++ 入门】Cyber骇客的 流式文本序列处理器 —— 【 string 类】万字大文带你从0学好C++的string类!

⚡ CYBER_PROFILE ⚡ /// SYSTEM READY /// [WARNING]: DETECTING HIGH ENERGY 🌊 🌉 🌊 心手合一 · 水到渠成 >>> ACCESS TERMINAL <<<[ 🦾 作者主页 ][ 🔥 C语言核心 ][ 💾 编程百度 ][ 📡 代码仓库 ] --------------------------------------- Running Process: 100% | Latency: 0ms 索引与导读 * 一、为什么学习 string类 ? * 二、C++ 标准库中的 string 类 * 2.1)auto和范围for * 2.2)string类的常用接口 * 🚩1)string类的常用构造 * 🚩2)string类对象的容量操作 * ❗注意事项 * 1)size(

By Ne0inhk
【C++】平衡树优化实战:如何手搓一棵查找更快的 AVL 树?

【C++】平衡树优化实战:如何手搓一棵查找更快的 AVL 树?

🎬 个人主页:MSTcheng · ZEEKLOG 🌱 代码仓库 :MSTcheng · Gitee 🔥 精选专栏: 《C语言》 《数据结构》 《C++由浅入深》 💬座右铭:路虽远行则将至,事虽难做则必成! 前言:前两篇文章我们已经向大家介绍了map和set这两个容器,他们的底层都是平衡二叉搜索树,而今天我们就来介绍一种平衡二叉搜索树——AVL树。 文章目录 * 一、AVL树的认识 * 1.1AVL树的概念 * 二、AVL树的实现 * 2.1AVL树的基本框架 * 2.2AVL树的插入 * 2.3AVL树的中序遍历 * 2.4AVL树其他功能实现 * 三、总结 一、AVL树的认识 1.1AVL树的概念 AVL树是由G. M. Adelson-Velsky和E. M. Landis两个前苏联的科学家所发明的,它的具体定义如下: * AVL树是最先发明的自平衡⼆叉查找树,AVL是⼀颗空树,

By Ne0inhk
【Linux/C++多进程篇(二) 】万字解析从“传纸条”到“建仓库”:一文读懂linux系统编程之进程间通信 (IPC)

【Linux/C++多进程篇(二) 】万字解析从“传纸条”到“建仓库”:一文读懂linux系统编程之进程间通信 (IPC)

⭐️在这个怀疑的年代,我们依然需要信仰。 个人主页:YYYing. ⭐️Linux/C++进阶系列专栏:【从零开始的linux/c++进阶编程】 系列上期内容:【Linux/C++多进程篇(一) 】C/C++ 程序中神奇的“分身术” 系列下期内容:【Linux/C++多线程篇(一) 】多线程编程入门 目录 前言: 进程间通信(IPC) 一、进程间通信的基础概念 二、内核提供的通信方式 2.1、无名管道  📖 无名管道的API  📖 代码案例 2.2、有名管道  📖 有名管道的API  📖 代码案例 2.3、管道特点 2.4、信号  📖 信号相关概念

By Ne0inhk
【C++ 内存申请】从 C++ new 到内核:虚拟内存、VMA 与内存泄漏的全链路解析

【C++ 内存申请】从 C++ new 到内核:虚拟内存、VMA 与内存泄漏的全链路解析

目录标题 * 1. 从 C++ `new` 到物理内存:堆、虚拟内存和 VMA 究竟发生了什么 * 1.1 C++ 视角:`new` / `malloc` 并不等于系统调用 * 1.2 OS 视角:VMA、页表和按需分配(demand paging) * 1.3 硬件视角:第一次访问堆区、page fault 和 MMU 流程 * 1.4 难点对比:VMA / 页表 / 虚拟地址 / 物理页 * 2. 销毁与并发:`free` / `munmap`、线程和页表更新 * 2.1 C++ 语义:

By Ne0inhk