Java项目:网上商城系统(java+jsp+servlert+mysql+ajax)

article/2025/10/19 13:44:39

源码获取:博客首页 "资源" 里下载!

一、项目简述(+需求文档+PPT)

功能: 主页显示热销商品;所有商品展示,可进行商品搜索;点 击商品进入商品详情页,显示库存,具有立即购买和加入 购物车功能,可增减购买商品数量亦可手动输入(同时验证 库存),热销商品展示。立即购买进入确认订单页面,可选 择已经添加的地址,亦可新增地址。(同时验证库存),可 选择购买哪些商品,可删除不需要的商品。点击结算进入 确认订单页面,确认后提交订单,订单重复提交给予响 应,库存不足或商品下架给予响应。后台管理:(修改密码 等),商品管理(商品批量添加、上下架、库存维护等), 订单管理。

二、项目运行

环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe ( IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)

项目技术: JSP + C3P0+ Servlert + html+ css + JavaScript + JQuery + Ajax + Fileupload等等。

用户服务类:

@WebServlet("/frontstage_userServlet")
public class UserServlet extends HttpServlet {UserService service = new UserService();@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String action = req.getParameter("action");switch (action) {case "login":login(req, resp);break;case "checkUserNameRepeat":checkUserNameRepeat(req, resp);break;case "register":register(req, resp);break;case "logout":logout(req, resp);break;case "checkOldPassword":checkOldPassword(req, resp);break;case "modifyPassword":modifyPassword(req, resp);break;}}public void login(HttpServletRequest req, HttpServletResponse resp) throws IOException {//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式			resp.setContentType("text/html;charset=utf-8");String userName = req.getParameter("userName");String password = req.getParameter("password");String captcha = req.getParameter("captcha");if (captcha != null) {captcha = captcha.toUpperCase();}// 先进行验证码验证String checkcode = (String) req.getSession().getAttribute("checkcode_session");try {// 将用户输入的验证码和 系统验证对比if (checkcode.equals(captcha)) {User user = service.getUserByNameAndPassword(userName, password);if (user != null) {HttpSession session = req.getSession();session.setAttribute("user", user);JSONResult ok = JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));} else {// 将错误信息封装在结果集中JSONResult result = JSONResult.errorMsg("用户名或密码错误,请重试");// 以json的形式返回给前端resp.getWriter().println(JsonUtil.javaObjectToJson(result));}} else {// 将错误信息封装在结果集中JSONResult result = JSONResult.errorMsg("验证码输入错误,请重试");// 以json的形式返回给前端resp.getWriter().println(JsonUtil.javaObjectToJson(result));}} catch (Exception e) {e.printStackTrace();}}/*** 用户名重名检测* * @param req* @param resp*/public void checkUserNameRepeat(HttpServletRequest req, HttpServletResponse resp) {String userName = req.getParameter("userName");if (userName != null) {int d = service.checkUserNameRepeat(userName);try {if (d > 0) {JSONResult error = JSONResult.errorMsg("");resp.getWriter().println(JsonUtil.javaObjectToJson(error));} else {JSONResult ok = JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}} catch (Exception e) {e.printStackTrace();}}}/*** 用户注册* * @param req* @param resp* @throws IOException */public void register(HttpServletRequest req, HttpServletResponse resp) throws IOException {//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式			resp.setContentType("text/html;charset=utf-8");User user = new User();user.setUserName(req.getParameter("userName"));user.setPassword(req.getParameter("password"));user.setEmail(req.getParameter("email"));user.setPhone(req.getParameter("phoneNum"));user.setRole("ordinaryUser");int d = service.addUser(user);try {if (d > 0) {JSONResult ok = JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));} else {JSONResult error = JSONResult.errorMsg("注册失败");resp.getWriter().println(JsonUtil.javaObjectToJson(error));}} catch (Exception e) {e.printStackTrace();}}/*** 退出登录*/public void logout(HttpServletRequest req, HttpServletResponse resp) {req.getSession().removeAttribute("user");try {resp.sendRedirect("index.jsp");} catch (IOException e) {e.printStackTrace();}}/*** 检查旧密码是否正确 ,在修改密码操作时使用* @throws IOException */public void checkOldPassword(HttpServletRequest req, HttpServletResponse resp) throws IOException {//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式			resp.setContentType("text/html;charset=utf-8");User user = (User) req.getSession().getAttribute("user");		String oldPassword = service.getPasswordById(user.getId());System.out.println("旧密码:"+oldPassword);String password = req.getParameter("password");System.out.println("旧密码验证:"+password);try {if (!oldPassword.equals(password)) {JSONResult errorMsg = JSONResult.errorMsg("原始密码错误,请重新输入");resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));} else {JSONResult ok = JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}} catch (IOException e) {e.printStackTrace();}}/*** 修改密码* @throws IOException */public void modifyPassword(HttpServletRequest req, HttpServletResponse resp) throws IOException {//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式			resp.setContentType("text/html;charset=utf-8");String password = req.getParameter("newPassword");System.out.println("新密码:"+password);User user = (User) req.getSession().getAttribute("user");int id = user.getId();System.out.println("旧密码id"+id);int d = service.updatePasswordById(id, password);try {if (d > 0) {JSONResult ok = JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));} else {JSONResult errorMsg = JSONResult.errorMsg("修改失败,请重试");resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));}} catch (Exception e) {e.printStackTrace();}}}

商品服务类:

@WebServlet("/frontstage_goodsServlet")
public class GoodsServlet extends HttpServlet{GoodsService service = new GoodsService();@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String action = req.getParameter("action");switch(action) {case "findAllGoods":findAllGoods(req,resp);break;case "findGoodsById":findGoodsById(req,resp);break;case "findGoodsByType":findGoodsByType(req,resp);break;}}/*** 获取所有商品列表* @param req* @param resp*/public void findAllGoods(HttpServletRequest req, HttpServletResponse resp) {Map<String, List<Goods>> allGoods = service.getAllGoods();try {req.setAttribute("allGoods", allGoods);req.getRequestDispatcher("/main.jsp").forward(req, resp);return;} catch (ServletException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}/***根据类型获得商品列表 * @param req* @param resp*/public void findGoodsByType(HttpServletRequest req, HttpServletResponse resp) {String type = req.getParameter("type");String currentPage = req.getParameter("currentPage");PageBean pageBean = null;// 如果当前第几页currentPage 值为null,说明第一次跳转到此页面或者是要跳转到首页,则设定该值currentPage默认为1if(currentPage == null) {pageBean = service.getGoodsByType(type, 4, 1);}else {pageBean = service.getGoodsByType(type, 4, Integer.parseInt(currentPage));}try {req.setAttribute("pageBean", pageBean);req.setAttribute("type", type);req.getRequestDispatcher("/product.jsp").forward(req, resp);} catch (Exception e) {e.printStackTrace();}}/*** 获取商品的详细信息* @param req* @param resp*/public void findGoodsById(HttpServletRequest req, HttpServletResponse resp) {int id =Integer.parseInt(req.getParameter("id"));Goods goodsInfo = service.getGoodsInfoById(id);try {req.setAttribute("pro", goodsInfo);req.getRequestDispatcher("/productInfo_user.jsp").forward(req, resp);} catch (Exception e) {e.printStackTrace();}}
}

订单服务类:

@WebServlet("/backstage_ordersServlet")
public class OrdersServlet extends HttpServlet{OrdersService service = new OrdersService();@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String action = req.getParameter("action");System.out.println(action);switch(action) {case "getOrdersList":getOrdersList(req,resp);break;case "getOrdersListByName":getOrdersListByName(req,resp);break;case "deleteOrders":deleteOrders(req,resp);break;case "deleteAllOrders":deleteAllOrders(req,resp);break;case "toOrdersUpdatePage":toOrdersUpdatePage(req,resp);break;case "updateOrders":updateOrders(req,resp);break;case "fastbuy":sendOrder(req,resp);break;}}/* * 删除全部订单 */private void deleteAllOrders(HttpServletRequest req, HttpServletResponse resp) throws IOException {//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式			resp.setContentType("text/html;charset=utf-8");// TODO 自动生成的方法存根int d = service.deleteAllOrders();try {if(d>0) {JSONResult ok = JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}else {JSONResult errorMsg = JSONResult.errorMsg("删除失败,请重试");resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));}			} catch (Exception e) {e.printStackTrace();}}/*** 提交订单* @throws IOException */public void sendOrder(HttpServletRequest req, HttpServletResponse resp) throws IOException {//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式			resp.setContentType("text/html;charset=utf-8");SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式User user =(User) req.getSession().getAttribute("user");Orders order = new Orders();order.setNumber(order.getRandomString(10));order.setTime(df.format(new Date()));order.setName(req.getParameter("recipients"));order.setAddress(req.getParameter("address"));order.setPhone(req.getParameter("phone"));order.setAddress_label(req.getParameter("addressLabel"));order.setSex(req.getParameter("sex"));order.setUser(user.getUserName());order.setGoods_id(Integer.parseInt(req.getParameter("id")));order.setGoods_num(Integer.parseInt(req.getParameter("num")));order.setGoods_status(1);int d = service.addOrder(order);try {if(d>0) {JSONResult ok = JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}else {JSONResult error = JSONResult.errorMsg("订单提交失败!");resp.getWriter().println(JsonUtil.javaObjectToJson(error));}} catch (Exception e) {e.printStackTrace();}	}/*** 向前端页面返回订单数据列表*/public void getOrdersList(HttpServletRequest req,HttpServletResponse resp) {List<Orders> allOrders = service.getAllOrders();req.setAttribute("ordersList",allOrders);try {req.getRequestDispatcher("/backstage/tgls/ordersManage/orders_list.jsp").forward(req, resp);} catch (ServletException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}	}/*** 根据订单名查询商品(注意!类别没改)* @param req* @param resp* @throws IOException */public void getOrdersListByName(HttpServletRequest req,HttpServletResponse resp) throws IOException {//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式			resp.setContentType("text/html;charset=utf-8");String name = req.getParameter("OrdersUser");//String type = req.getParameter("type");Map<String,String> parmas = new HashMap<>();parmas.put("name", name);//parmas.put("type", type);List<Orders> list = service.getOrdersByName(parmas);try {if(list != null) {JSONResult ok = JSONResult.ok(list);resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}else {JSONResult errorMsg = JSONResult.errorMsg("未获取到任何数据,请重试");resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));}			} catch (Exception e) {e.printStackTrace();}}/*** 修改订单时,获取此订单的全部数据,并返回至修改页面*/public void toOrdersUpdatePage(HttpServletRequest req,HttpServletResponse resp) {int id = Integer.parseInt(req.getParameter("id"));Orders orders = service.getOrdersInfoById(id);req.setAttribute("orders", orders);try {req.getRequestDispatcher("/backstage/tgls/ordersManage/orders_update.jsp").forward(req, resp);} catch (ServletException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}	}/***  修改订单* @throws IOException */public void updateOrders(HttpServletRequest req,HttpServletResponse resp) throws IOException {//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式			resp.setContentType("text/html;charset=utf-8");Orders orders = new Orders();orders.setId(Integer.parseInt(req.getParameter("id")));orders.setNumber(req.getParameter("number"));orders.setUser(req.getParameter("user"));orders.setTime(req.getParameter("time"));orders.setName(req.getParameter("name"));orders.setSex(req.getParameter("sex"));orders.setAddress(req.getParameter("address"));orders.setPhone(req.getParameter("phone"));orders.setAddress_label(req.getParameter("address_label"));orders.setGoods_id(Integer.parseInt(req.getParameter("goods_id")));orders.setGoods_num(Integer.parseInt(req.getParameter("goods_num")));orders.setGoods_status(Integer.parseInt(req.getParameter("goods_status")));System.out.println(orders);int d = service.updateOrdersById(orders);System.out.println(d);try {if(d>0) {JSONResult ok = JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}else {JSONResult errorMsg = JSONResult.errorMsg("修改失败,请重试");resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));}		} catch (Exception e) {e.printStackTrace();}}/*** 删除订单* @throws UnsupportedEncodingException */public void deleteOrders(HttpServletRequest req,HttpServletResponse resp) throws UnsupportedEncodingException {//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式			resp.setContentType("text/html;charset=utf-8");int id = Integer.parseInt(req.getParameter("id"));int d = service.deleteOrdersById(id);try {if(d>0) {JSONResult ok = JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}else {JSONResult errorMsg = JSONResult.errorMsg("删除失败,请重试");resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));}			} catch (Exception e) {e.printStackTrace();}}
}

源码获取:博客首页 "资源" 里下载!


http://chatgpt.dhexx.cn/article/Mw0eOsKa.shtml

相关文章

基于Java的商城购物系统

源码编号&#xff1a;F-A14 项目类型&#xff1a;Java SE项目&#xff08;GUI图形界面&#xff09; 项目名称&#xff1a;商城购物系统&#xff0c;开源免费 用户类型&#xff1a;双角色&#xff08;会员、管理员&#xff09; 主要技术&#xff1a;java、awt、swing、等技术…

《Java程序设计》实验报告——Java的基本程序设计结构

浙江理工大学 《Java程序设计》 实验报告 20 19&#xff5e;20 20学年第 1学期 学 院 信息学院 班 级 计算机科学技术18&#xff08;3&#xff09; 姓 名 申屠志刚 学 号 2018329621200 任课教师 任祝 &#xff08; 第4周 周二 345节&#xff09; 计算机科…

软件工程课程设计报告

本人的软件工程课程设计报告&#xff0c;可以作以参考&#xff0c;望读者不要全部照抄&#xff0c;仅为大家提供参考&#xff0c;感谢大家的支持&#xff01;&#xff01;&#xff01; 目录 1. 相关文档1.1 文档介绍1.2 文档范围1.3 读者对象 2. 需求分析报告2.1 需求分析背景…

汇编语言程序设计实验报告

运行环境masmplus 链接&#xff1a;https://pan.baidu.com/s/1jWoLfvxBxQgxd6wq21GK0w 提取码&#xff1a;ih43 目录 实验1 汇编语言源程序的输入实验目的实验原理实验仪器实验步骤实验要求 实验2 数据的建立与传送程序实验目的实验原理实验仪器实验步骤实验要求 实验3 分支程序…

C高级语言程序设计实验报告之选择结构程序设计

文章目录 实验目的题目代码题一题二题三题四 实验目的 1、了解C语言表示辑量的方法&#xff08;以0代表“假”&#xff0c;以非0代表“真”&#xff09; 2、学会正确使用遷辑运算符和遷辑表达式 3、熟掌握if语句的使用&#xff08;包括if语句的嵌套&#xff09; 4、熟掌握多分…

给你一份满分的程序设计报告(附源码)

ATM业务模拟系统功能要求 客户端&#xff1a; 定义用户数据对象&#xff0c;并以此为参数生成用户操作对象&#xff1b; 存款操作&#xff1a;生成一条新的业务信息&#xff08;业务对象&#xff09;&#xff0c;追加到交易记录中&#xff0c;并修改账号余额&#xff1b; 取款…

C++ 会议信息管理系统 程序设计报告

C 会议信息管理系统 C 会议信息管理系统 程序设计报告 会议记录管理系统 问题描述: 定义会议信息类class Conference 会议信息包括:会议编号&#xff0c;会议名称、部门名称、会议地点&#xff0c;会议日期&#xff0c;会议主会议记录人&#xff0c;出席人员&#xff0c;会…

Java高级程序设计课程设计报告

一、基于OBE模式的实验目的和要求 要求复习课件中理论知识&#xff1b;练习课堂所讲的例子&#xff1b;编写程序完成以下实验目标并上交实验报告&#xff08;包括电子文档与纸质文档&#xff09;。 能够根据Java集合框架&#xff0c;利用迭代方法编程实现对集合的遍历操作。能…

Java面向对象程序设计实验报告(实验三 继承的练习)

✨作者&#xff1a;命运之光 ✨ 专栏&#xff1a;Java面向对象程序设计实验报告 ​ 目录 ✨一、需求设计 ✨二、概要设计 ✨三、详细设计 ✨四、调试结果 ✨五、测试结果 ✨附录&#xff1a;源程序代码&#xff08;带注释&#xff09; demo3类 Person类 Student类 …

《程序设计基础课程设计》实验报告

《程序设计基础课程设计》实验报告 班 级&#xff1a; 学 号&#xff1a; 姓 名&#xff1a; 完成题目&#xff1a;1、2、3、4、5、6 概述 此次六道题目里面第四题是参考某博主的文章后实现的&#xff0c;有一些地方仍然不是特别理解&#xff0c;但是原文章里面存在一些小错…

Java面向对象程序设计实验报告(实验五 接口的练习)

✨作者&#xff1a;命运之光 ✨专栏&#xff1a;Java面向对象程序设计实验报告 ​ 目录 ✨一、需求设计 ✨二、概要设计 ✨三、详细设计 ✨四、调试结果 ✨五、测试结果 ✨附录&#xff1a;源程序代码&#xff08;带注释&#xff09; demo5类 Instrument类 Piano类 …

Python程序设计实验报告【合集】

课堂作业 1、词频统计&#xff1a;输入一个文件&#xff0c;程序读取文件&#xff0c;文件内容是英文内容&#xff0c;不少于500个单词的内容&#xff0c;统计每个单词在该短文内出现的次数。 https://www.jb51.net/article/144405.htm https://www.cnblogs.com/Eudemines/p/9…

Java面向对象程序设计实验报告(实验一 面向对象基础练习)

✨作者&#xff1a;命运之光 ✨ 专栏&#xff1a;Java面向对象程序设计实验报告 目录 ✨一、需求分析 ✨二、概要设计 ✨三、详细设计 ✨四、调试分析 ✨附录&#xff1a;源代码&#xff08;带注释&#xff09; 实验一 面向对象基础练习 实验环境&#xff1a;EclipseJDK …

《C语言程序设计》课程总结报告

《C语言程序设计》课程总结报告 一、我学到的内容 二、我的收获&#xff08;包括我完成的所有作业的链接收获&#xff09; 1.PTA作业 22年秋-第1周基础作业 https://pintia.cn/problem-sets/1575138141596397568 22年秋-第2周课后作业 https://pintia.cn/problem-sets/1…

(软件工程)-- 总体设计报告

1引言 1.1编写目的 本阶段完成系统的大致设计并说明系统的数据结构与软件结构&#xff0c;本概要设计说明书的目的就是进一步细化软件设计阶段得出的软件概貌&#xff0c;把它加工成程序细节上非常接近与源程序开发的软件标识。 预期读者&#xff1a;软件测试人员、程序开发员…

程序设计报告模板

一、问题及代码 /* * 文件名称&#xff1a;Ex1-1.cpp * 作 者&#xff1a;曾辉 * 完成日期&#xff1a;2015 年 1 月 1 日 * 版 本 号&#xff1a;v1.0 * 对任务及求解方法的描述部分: * 输入描述&#xff1a;无 * 问题描述&#xff1a;我的第一个C程序&#xff0c;熟…

C语言程序设计期末大作业—教师工资管理系统(附程序设计报告)

C语言大作业——教师工资管理系统 主要的难点在于文件读取 数据结构用的是链表 源码放上&#xff0c;直接粘贴复制就可以&#xff0c;我的C程大作业 具体的问题不懂的可以评论和私信&#xff0c;总之还是简单的 放张图片 程序设计报告可以私信我 #include<stdio.h> …

C语言程序设计 课程设计报告

C语言程序设计课程设计报告 一、 系统简介 学生成绩管理系统简介&#xff1a;一个简易的学生成绩管理系统&#xff0c;它包括并可以实现&#xff1a;“录入并保存学生信息、打印学生信息、读取学生信息、查找学生信息、删除学生信息、修改学生信息、排序学生信息、退出系统 ”…

程序设计基础实训报告

一、实训目的 程序设计基础是程序设计C语言和C语言的入门课程&#xff0c;该课程兼顾基础理论和编程实践。通过学习该课程的理论知识和编程实战&#xff0c;培养学生的专业实践技能&#xff0c;学校设有专用实训周&#xff0c;帮助学生全面牢固地掌握课堂教学内容、提升实际动手…

程序设计课程设计报告(学生成绩管理系统)

程序设计课程设计报告 课程设计题目及内容 题目&#xff1a;学生成绩管理系统 设计要求及提示如下&#xff1a; &#xff08;1&#xff09;、设计一个学生类Student,包括数据成员&#xff1a;姓名、学号、二门课程(面向对象程序设计、高等数学)的成绩。 &#xff08;2&…