模仿淘宝购物系统的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++】类和对象(中)

【C++】类和对象(中)

一、类的默认成员函数 编译器会自动生成的成员函数称为默认成员函数。一个类,不写的情况下编译器会默认生成以下6个默认成员函数。另外在C++11中,增加了两个默认成员函数,移动构造和移动赋值。默认成员函数从两方面学习: 1. 我们不写时,编译器默认生成的函数行为是啥?满足我们的需求吗? 编译器默认生成的函数不满足我们的需求,那如何自己实现? 二、构造函数 构造函数主要任务是对象实例化时初始化对象。就像每次写栈或队列时需要初始化Stack Init()、Queue Init(),用了构造函数就不需要写这一步。 构造函数的特点:函数名与类名相同:类class Stack,类中的函数Stack()无返回值。也无void对象实例化时系统会自动调用对应的构造函数构造函数可以重载如果类中没有显式定义构造函数,则C++编译器会自动生成一个无参的默认构造函数,一旦用户显式定义编译器将不再生成无参构造函数、全缺省构造函数、我们不写构造时编译器默认生成的构造函数,都叫做默认构造函数。但是这三个函数有且只有一个存在,不能同时存在。无参构造函数和全缺省构造函数虽然构成函数重载,但是调用时会存在歧

By Ne0inhk

Visual C++运行库安装失败完全修复指南:从新手到专家的解决方案

Visual C++运行库安装失败完全修复指南:从新手到专家的解决方案 【免费下载链接】vcredistAIO Repack for latest Microsoft Visual C++ Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist Visual C++ Redistributable(简称VC Redistributable)是Windows系统中运行C++程序的基础组件,但很多用户在安装时遇到各种问题。本文针对最常见的VC运行库安装失败场景,提供从简单到复杂的完整解决方案。 常见安装问题分类 版本冲突与残留问题 系统中最常见的安装失败原因之一是旧版本组件残留。当系统中同时存在多个不同版本的VC运行库时,安装程序可能会因为注册表冲突而无法正常工作。 典型症状: * 安装程序无提示闪退 * 进度条卡在某个百分比不动 * 出现错误代码0x80070666(表示产品已安装) 系统依赖组件缺失 对于Windows 7/8等较老系统,Universal CRT(通用

By Ne0inhk

什么是 Java 中的原子性、可见性和有序性?

Java 中的原子性、可见性、有序性 是多线程编程中最核心的三个特性,也称为“并发三要素”或“happens-before 关系的三大保证”。 它们直接决定了代码在多线程环境下是否能得到“预期”的执行结果。下面用最直白的方式解释三者的含义、为什么会丢失、以及 Java 是如何(或没能)保证它们的。 1. 原子性(Atomicity) 定义: 一个操作(或一组操作)要么全部执行成功,要么全部不执行,不会出现“执行到一半”的中间状态。 最经典的非原子例子(很多人踩过的坑): int count =0;// 线程 A 线程 B count++; count++; 上面看似一行代码,实际 JVM 会分解为: 1. 读取 count 的值

By Ne0inhk
Java在AI时代的崛起:从传统机器学习到AIGC的全栈解决方案

Java在AI时代的崛起:从传统机器学习到AIGC的全栈解决方案

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[[email protected]] 📱个人微信:15279484656 🌐个人导航网站:www.forff.top 💡座右铭:总有人要赢。为什么不能是我呢? * 专栏导航: 码农阿豪系列专栏导航 面试专栏:收集了java相关高频面试题,面试实战总结🍻🎉🖥️ Spring5系列专栏:整理了Spring5重要知识点与实战演练,有案例可直接使用🚀🔧💻 Redis专栏:Redis从零到一学习分享,经验总结,案例实战💐📝💡 全栈系列专栏:海纳百川有容乃大,可能你想要的东西里面都有🤸🌱🚀 目录 * Java在AI时代的崛起:从传统机器学习到AIGC的全栈解决方案 * 一、Java AI生态概览:多样化的技术选择 * 1.1 深度学习框架:接轨主流AI技术 * Deep Java Library

By Ne0inhk