项目介绍

本项目使用jsp+servlet+mysql架构搭建美妆购物商城,主要分为用户端和商城端,用户端主要有首页展示,商品信息、购物车、订单和个人中心几个大的模块,每个模块都包含主要的电商功能;商户端主要是对商品的增删改查,对商品销量的统计,订单管理以及公告管理几个核心板块。

开发环境:

  1. jdk 8
  2. intellij idea
  3. tomcat 8
  4. mysql 5.7

所用技术:

  1. jsp+servlet
  2. js+ajax
  3. layui
  4. jdbc+C3P0

运行效果

  • 注册

  • 用户信息

  • 首页

  • 商品列表

  • 订单确认

  • 后端-销售榜单

重要代码:

  1. 登录,权限角色控制:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 1.获取登录页面输入的用户名与密码String username = request.getParameter("username");String password = request.getParameter("password");// 2.调用service完成登录操作。UserService service = new UserService();try {User user = service.login(username, password);// 3.登录成功,将用户存储到session中.request.getSession().setAttribute("user", user);// 获取用户的角色,其中用户的角色分普通用户和超级用户两种String role = user.getRole();// 如果是超级用户,就进入到后台管理系统;否则进入我的账户页面if ("超级用户".equals(role)) {response.sendRedirect(request.getContextPath() + "/admin/login/home.jsp");return;} else {response.sendRedirect(request.getContextPath() + "/client/myAccount.jsp");return;}} catch (LoginException e) {// 如果出现问题,将错误信息存储到request范围,并跳转回登录页面显示错误信息e.printStackTrace();request.setAttribute("register_message", e.getMessage());request.getRequestDispatcher("/client/login.jsp").forward(request, response);return;}
}
// 退出登录,销毁用户缓存信息
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 获取session对象.HttpSession session = request.getSession();       // 销毁sessionsession.invalidate();// flag标识String flag = request.getParameter("flag");     // 重定向到首页if (flag == null || flag.trim().isEmpty()) {response.sendRedirect(request.getContextPath() + "/index.jsp");}
}
  1. 购物车逻辑
// 后端数据组装
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 1.获取美妆idString id = request.getParameter("id");// 2.根据id条件查询具体美妆参数信息ProductService service = new ProductService();try {Product p = service.findProductById(id);//3.将商品添加到购物车//3.1获得session对象HttpSession session = request.getSession();//3.2从session中获取购物车对象Map<Product, Integer> cart = (Map<Product, Integer>)session.getAttribute("cart");//3.3如果购物车为null,说明没有商品存储在购物车中,创建出购物车if (cart == null) {cart = new HashMap<Product, Integer>();}//3.4向购物车中添加商品Integer count = cart.put(p, 1);//3.5如果商品数量不为空,则商品数量+1,否则添加新的商品信息if (count != null) {cart.put(p, count + 1);}          session.setAttribute("cart", cart);response.sendRedirect(request.getContextPath() + "/client/cart.jsp");return;} catch (FindProductByIdException e) {e.printStackTrace();}
}//jsp 页面数据渲染
<c:forEach items="${cart}" var="entry" varStatus="vs"><table width="100%" border="0" cellspacing="0"><tr><td width="10%">${vs.count}</td><td width="30%">${entry.key.name }</td><td width="10%">${entry.key.price }</td><td width="20%"><!-- 减少商品数量 --><input type="button" value='-' style="width:20px"οnclick="changeProductNum('${entry.value-1}','${entry.key.pnum}','${entry.key.id}')"><!-- 商品数量显示 --><input name="text" type="text" value="${entry.value}" style="width:40px;text-align:center" /><!-- 增加商品数量 --><input type="button" value='+' style="width:20px"οnclick="changeProductNum('${entry.value+1}','${entry.key.pnum}','${entry.key.id}')"></td><td width="10%">${entry.key.pnum}</td><td width="10%">${entry.key.price*entry.value}</td><td width="10%"><!-- 删除商品 --><a href="${pageContext.request.contextPath}/changeCart?id=${entry.key.id}&count=0"style="color:#FF0000; font-weight:bold" οnclick="javascript:return cart_del()">X</a></td></tr></table><c:set value="${total+entry.key.price*entry.value}" var="total" />
</c:forEach>
  1. 文字验证码生成
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 禁止缓存// response.setHeader("Cache-Control", "no-cache");// response.setHeader("Pragma", "no-cache");// response.setDateHeader("Expires", -1);int width = 180;int height = 30;// 步骤一 绘制一张内存中图片BufferedImage bufferedImage = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);// 步骤二 图片绘制背景颜色 ---通过绘图对象Graphics graphics = bufferedImage.getGraphics();// 得到画图对象 --- 画笔// 绘制任何图形之前 都必须指定一个颜色graphics.setColor(getRandColor(200, 250));graphics.fillRect(0, 0, width, height);// 步骤三 绘制边框graphics.setColor(Color.WHITE);graphics.drawRect(0, 0, width - 1, height - 1);// 步骤四 四个随机数字Graphics2D graphics2d = (Graphics2D) graphics;// 设置输出字体graphics2d.setFont(new Font("宋体", Font.BOLD, 18));Random random = new Random();// 生成随机数int index = random.nextInt(words.size());String word = words.get(index-1);// 获得成语// 定义x坐标int x = 10;for (int i = 0; i < word.length(); i++) {// 随机颜色graphics2d.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110)));// 旋转 -30 --- 30度int jiaodu = random.nextInt(60) - 30;// 换算弧度double theta = jiaodu * Math.PI / 180;// 获得字母数字char c = word.charAt(i);// 将c 输出到图片graphics2d.rotate(theta, x, 20);graphics2d.drawString(String.valueOf(c), x, 20);graphics2d.rotate(-theta, x, 20);x += 40;}// 将验证码内容保存sessionrequest.getSession().setAttribute("checkcode_session", word);// 步骤五 绘制干扰线graphics.setColor(getRandColor(160, 200));int x1;int x2;int y1;int y2;for (int i = 0; i < 30; i++) {x1 = random.nextInt(width);x2 = random.nextInt(12);y1 = random.nextInt(height);y2 = random.nextInt(12);graphics.drawLine(x1, y1, x1 + x2, x2 + y2);}// 将上面图片输出到浏览器 ImageIOgraphics.dispose();// 释放资源ImageIO.write(bufferedImage, "jpg", response.getOutputStream());
}

项目总结

通过项目能学习一些java的基本数据渲染和读取,前后端数据传递除开request外也可以用session进行缓存交互,但是有点浪费缓存资源,不必要长久缓存数据可以及时清空
缓存,原生jsp+servlet组合框架也有很多不足,后期会改版成ssh或者ssm或者springboot版本的电商平台

源代码下载:https://download.csdn.net/download/code_200/14155886

jsp+servlet实战编写购物商城相关推荐

  1. 基于javaweb+JSP+Servlet在线商城鲜花花卉商城(前台、后台)

    基于javaweb+JSP+Servlet在线商城鲜花花卉商城(前台.后台) 开发工具:eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计,大作业,毕业设计,项目练习, ...

  2. javaweb JAVA JSP汽车配件销售系统jsp配件销售网站 (jsp电子商务系统,购物商城)在线购物案例

    JSP汽车配件销售系统jsp配件销售网站 (jsp电子商务系统,购物商城)在线购物案例 大家好,很高兴和大家分享Java项目和经验.不管同学们是出于什么需求.都希望各位计算机专业的同学有一个提高. 本 ...

  3. jsp+Servlet+javaBean编写计算体重指数测量(BMI)的简单程序

    jsp+Servlet+javaBean编写计算体重指数测量(BMI)的简单程序 BMI.java(javaBean代码) public class BMI { private double bmi, ...

  4. 基于javaweb+JSP+Servlet网上书店图书商城(前台、后台)

    基于javaweb+JSP+Servlet网上书店图书商城(前台.后台) 开发工具:eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计,大作业,毕业设计,项目练习,学习 ...

  5. javaweb JAVA JSP购物系统jsp销售系统 (jsp电子商务系统,购物商城)甜品蛋糕在线购物系统案例

    javaweb JAVA JSP购物系统jsp销售系统 (jsp电子商务系统,购物商城)甜品蛋糕在线购物系统案例 常见的Javaweb题材有 理财系统,就业管理系统,汽车租赁,简易网盘,疫情数据查看, ...

  6. day2编写购物商城(1)

    作业:购物商城 商品展示,价格 买,加入购物车 付款,钱不够     具体实现了如下功能: 1.可购买的商品信息显示 2.显示购物车内的商品信息.数量.总金额 3.购物车内的商品数量进行增加.减少和商 ...

  7. jsp ajax聊天室,jsp+servlet实战酷炫博客+聊天系统

    项目介绍本项目使用jsp+servlet+mysql架构搭建可聊天的酷炫博客系统.界面非常好看,除了登录注册个人中心修改外,博客还添加背景音乐,可在线交友聊天,发表动态,相互评论等,喜欢的博文还能添加 ...

  8. bootstrap java web_Java web MVC(jsp,servlet,dao)+Bootstrap购物网站开发经验总结 (持续更新)...

    一开始对java web 不是很熟悉,重新温习了java web ,对El expression ,jstl的使用有了更加深的印象,mvc模式下的分层结构有了进一步的了解. MVC中的M就是model ...

  9. java b2c_java servlet开发B2C购物商城源代码下载

    市场拓展 市场拓展包括战略合作.市场活动.媒介.业务拓展,储值礼品卡(大客户),为网站带来流量. 网站交易 信息展示.订单交易.用户中心以及客户服务. 用户在前台网站中浏览商品,并对中意的商品进行下单 ...

最新文章

  1. Java 判断 list 为空
  2. Java程序的运行原理及JVM的启动是多线程的吗?
  3. 卖软件源码、解决技术难题、做生意,都需要讲个基本原则【No Money No Code】
  4. java afconsole_Java ——基础语法
  5. Java Set基础知识
  6. 设计模式学习---单件模式
  7. cocos2d-x+lua开发模式下编辑器的选择
  8. 【WCF】WCF服务库和WCF服务应用程序的区别
  9. redis笔记2 限流、GeoHash和Scan
  10. Android 多种跑马灯的方法
  11. js/jquery禁止页面回退
  12. 象棋名手3.26版本32位六核完美破解版,含第四代无敌开局库。
  13. Windows版 Oracle安装
  14. IDEA黑色主题Darcula主题看不到鼠标指针
  15. 软件测试面试题之自动化测试题大合集(下)
  16. 介词for和with 和of的用法_to for of with的用法区别
  17. 蚂蚁金服Java后台实习生春招面试总结
  18. QQ伤感日志_你教会了我爱,让我懂得了爱
  19. BZOJ4372: 烁烁的游戏(动态点分治)
  20. 论文邮箱不是导师的_你的论文为何在导师那里“石沉大海”?

热门文章

  1. vert.x+java入门_vertx从入门到精通
  2. AttributeError: partially initialized module ‘turtle‘ has no attribute ‘setup‘问题Traceback (most rece
  3. snmpd配置精简版
  4. 扫描文字识别软件是怎么样的
  5. 从MySQL数据库读取图片和向数据库插入图片
  6. GetVersionExW:背声明为已否决
  7. Apache Superset可视化数据大屏
  8. 电子代工和模具选择注意点
  9. C++:斐波那契数列(迭代和递归)
  10. 图像傅里叶变换--OpenCV