天猫商城在线购物系统

本博文对Gitee开源项目 SpringBoot迷你天猫商城(Mini-Tmall)中的商品管理和商品分类管理进行讲解。
在此也感谢开源项目作者@贤趣项目小组
在此附上原项目链接以示感谢:
SpringBoot迷你天猫商城(Mini-Tmall)

前置背景知识

前置背景知识对可能用到的背景知识进行讲解。

@Controller //标记该类为控制器类,处理由DispatchServlet分发的请求,把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。
@Resource //有按照类型和名称注入两种类型,默认按名称注入。进行依赖注入,注入了才能用里面的方法,(以调用其中的抽象方法)
@RequestMapping(value = "/", method = RequestMethod.GET, produces = "application/json;charset=utf-8")
//指定后台的映射路径和提交方式
produces = "application/json;charset=utf-8"
//定义json数据返回格式
Integer insertOne(@Param("category") Category category);
//字段名映射 将Category类的category对象封装到参数中
@PathVariable //参数绑定,可将URL中占位符参数{xxx}绑定到控制器类的方法形参
@Deprecated //表示此方法已废弃、暂时可用,但以后此类或方法都不会再更新、后期可能会删除,建议后来人不要调用此方法。此注解可用于类上、方法上、属性上。
UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。
@ResponseBody //将java对象转为json格式的数据。
注意:在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。
@ResponseBody是作用在方法上的,@ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中,一般在异步获取数据时使用【也就是AJAX】。@RequestParam //传递参数,用于将请求参数区数据映射到功能处理方法的参数上。
required = false //表示该参数可以不传,默认是true
lastIndexOf  //返回此向量中最后一次出现的指定元素的索引;如果此向量不包含该元素,则返回 -1。
request.getSession().getServletContext()是获取的servlet容器对象,
相当于tomcat容器了。getRealPath("/") 获取实际路径,项目发布时,
在容器中的实际路径。实际路径就是在服务器中的路径。RequestMapping  中  produces属性可以设置返回数据的类型以及编码,可以是json或者xml
但是必须要和@ResponseBody注解一起使用才可以,不加@ResponseBody注解相当于按照和返回String同名jsp页面解析自然就会报错。
Integer与int的区别:
Integer是int的包装类;int是基本数据类型。
Integer变量必须实例化后才能使用;int变量不需要。
Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值。
Integer的默认值是null;int的默认值是0
$("#userName") 是id选择器,获得id为userName的标签,通过.val(),获得这个标签的value的值,赋值给你声明的变量var userName
trim() 方法用于删除字符串的头尾空白符
$("#userName")获取指定网页元素的函数
什么是Ajax异步请求?
异步请求就当发出请求的同时,浏览器可以继续做任何事,Ajax发送请求并不会影响页面的加载与用户的操作,相当于是在两条线上,各走各的,互不影响。一般默认值为true。异步请求可以完全不影响用户的体验效果,无论请求的时间长或者短,用户都在专心的操作页面的其他内容,并不会有等待的感觉。
AJAX = 异步 JavaScript 和 XML(Asynchronous JavaScript and XML)。
简短地说,在不重载整个网页的情况下,AJAX 通过后台加载数据,并在网页上进行显示。
通过 jQuery AJAX 方法,能够使用 HTTP Get 和 HTTP Post 从远程服务器上请求文本、HTML、XML 或 JSON - 同时您能够把这些外部数据直接载入网页的被选元素中。
//Ajax异步请求举例
$.ajax({  type:"POST",url:"Venue.aspx?act=init", dataType:"html", success:function(result){  //function1()f1(); f2();  } failure:function (result) {  alert('Failed');  }, } function2();//上述代码中,当ajax块发出请求后,他将停留function1(),等待server端的返回,但同时(在这个等待过程中),前台会去执行function2()。异步模式下:当我们使用AJAX发送完请求后,可能还有代码需要执行。这个时候可能由于种种原因导致服务器还没有响应我们的请求,但是因为我们采用了异步执行方式,所有包含AJAX请求代码的函数中的剩余代码将继续执行。如果我们是将请求结果交由另外一个JS函数去处理的,那么,这个时候就好比两条线程同时执行一样。
//Ajax异步请求举例
$.ajax({  type:"POST", url:"Venue.aspx?act=init", dataType:"html", async: false,    success:function(result){  //function1()f1(); f2(); } failure:function (result) {  alert('Failed');  }, } function2();//上述代码中,当把asyn设为false时,这时ajax的请求时同步的,也就是说,这个时候ajax块发出请求后,他会等待在function1()这个地方,不会去执行function2(),直到function1()部分执行完毕。

业务逻辑

业务流程——后台

商品信息管理

前端页面

webapp/WEB-INF.page/admin/productManagePage.jsp

查询商品功能如何实现?

填写必要的信息后,点击查询按钮时

触发js函数

请求后端路径(注意:js执行到最后一步时,会调用getData函数)

对应的控制器

controller/admin/ProductController.java

把查询到的数据封装到object,并转换成JSON数据格式

如何在前端显示已查到的信息?

前端js代码会调用getData函数

前端是通过getData函数获取数据,而非后端返回。

通过append追加到jsp标签

添加商品功能如何实现?

点击’'添加一件产品"按钮

会触发getChildPage(obj) js函数

getChildPage(obj)函数如下:

如果传入参数为空,继续定位到添加产品页面;

如果不空,拼接出添加成功的url,向后端发送请求;

通过页面和数据交互工具ajaxUtil中的getPage函数向后端发送Ajax请求。

Ajax请求后端路径和请求参数样式如下:

//对应的控制器
controller/admin/ProductController.java

查看具体商品的详情页?

点击 详情

触发getChildPage() js函数

获取产品详细信息。

和添加一件产品时触发的js函数有何不同?

添加商品时, obj为空,跳转到添加产品的请求路径,交由相应的控制器处理;

查看商品详情时,请求会携带product_id ,此时obj不为空,会映射到相应到请求路径。

查看商品详情的控制器

controller/admin/ProductController.java

删除商品即将商品状态设为停售中,即将商品下架。

是在查看商品详情时可对商品信息进行修改。

流程与查看商品详情类似。

刷新产品列表?

点击 刷新产品列表 按钮

触发相关js函数,将输入框中的内容清除,并通过getData()函数请求后端(实际上是对数据库中的所有商品进行查询),其他一些前端操作,将相应样式还原。

相应的控制器

controller/admin/ProductController.java

无条件查询商品,相当于查询所有产品,并以(0,10)方式分页。

getData()函数会根据控制器返回的JSON字符串获取数据,将返回的数据在前端页面显示。

业务流程——前台

首页显示

首页显示根据数据库动态加载而非写死的。

${pageContext.request.contextPath}
//**是JSP取得绝对路径的方法**,等价于`<%=request.getContextPath()%>` 。
也就是取出部署的应用程序名或者是当前的项目名称。
比如项目名称是SSM在浏览器中输入为 http://localhost:8080/SSM/index.jsp
${pageContext.request.contextPath}或<%=request.getContextPath()%>取出来的就是/SSM,
而"/"代表的含义就是 http://localhost:8080

通过 标签遍历request域中的内容,获取分类信息,分类信息通过表名.字段名动态区分加载,{表名.字段名}动态区分加载,表名.字段名动态区分加载,{表名.字段名}通过map集合对象获取,显示在

  • 中。
fore/homePage.jsp

举个例子:map对象直接返回到相应的jsp页面,所以jsp页面能通过 标签遍历map集合对象。

查看具体商品详情页信息

jsp页面

fore/productDetailsPage.jsp

对应的控制器

controller/fore/ForeProductDetailsController.java

天猫商城在线购物系统相关推荐

  1. 基于javaweb的仿天猫商城系统开发与设计.rar(论文+任务书+项目源码)

    1设计背景 1 1.1课题现状 1 1.2课题意义 1 2设计思路 2 2.1环境与工具 2 2.1.1 Idea工具 2 2.1.2 webStorm工具 2 2.1.3 Mysql 2 2.1.4 ...

  2. java毕设项目开源了,springboot+bootstrap的仿天猫商城系统

    1.项目介绍 该项目为仿天猫的商城系统,其中使用了springboot+bootstrap作为主要开发技术,页面美化非常美观,且搭建简单,拆箱即用. 依赖环境jdk1.8+mysql即可,同时提供数据 ...

  3. 基于javaweb+springboot的仿天猫商城系统(java+jsp+Springboot+SSM+mysql+maven)

    基于javaweb+springboot的仿天猫商城系统(java+jsp+Springboot+SSM+mysql+maven) 一.项目介绍: 迷你天猫商城是一个基于SSM框架的综合性B2C电商平 ...

  4. JavaWeb代码审计实战之迷你天猫商城系统详细分析版,实战应用级系统的Log4j2shell代码审计

    嗨,大家好,我是闪石星曜CyberSecurity创始人Power7089. 欢迎大家搜索并关注我的VX:闪石星曜CyberSecurity 本文是[炼石计划@Java代码审计]内部圈子原创课程,公益 ...

  5. 基于javaweb+mysql的在线购物商城shop系统(仅前台购物)

    基于javaweb+mysql的在线购物商城shop系统(仅前台购物) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/myeclipse/sts等均可配置运行 适用 ...

  6. 基于javaweb+SpringBoot+MyBatis在线购物商城shop系统(仅前台购物)

    基于javaweb+SpringBoot+MyBatis在线购物商城shop系统(仅前台购物) 开发工具:eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计,大作业,毕 ...

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

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

  8. 基于javaweb的仿天猫商城系统(java+jsp+springboot+ssm+mysql)

    基于javaweb的仿天猫商城系统(java+jsp+springboot+ssm+mysql) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/myeclipse/s ...

  9. SpringBoot迷你天猫商城系统(附源码)

    介绍 迷你天猫商城是一个基于Spring Boot的综合性B2C电商平台,需求设计主要参考天猫商城的购物流程:用户从注册开始,到完成登录,浏览商品,加入购物车,进行下单,确认收货,评价等一系列操作. ...

最新文章

  1. HyperLedger Fabric区块链技术形成(1.2)
  2. as用百度地图不联网就gg
  3. python for
  4. 文件系统fsd hook (一)原理
  5. 2017-2018-1 20179215《Linux内核原理与分析》第二周作业
  6. p50会搭载鸿蒙吗,华为Mate40和华为P50也会搭载鸿蒙,华为Mate30跌至白菜价让路
  7. 命令行 降低IE版本 IE11降到IE8
  8. 查看docker 容器的端口
  9. python计算圆锥体积和表面积_圆锥体积公式和表面积
  10. 汽车维修企业管理【10】
  11. FAT32 R0.12b f_mkfs应用实例
  12. python樱桃小丸子_appium+python自动化启动app
  13. 华为 OSPF虚链路出现环路了,如何解决?
  14. CNZZ异步统计代码
  15. 迈瑞医疗前三季归母净利81亿:同比增21.6% 营收233亿
  16. 坎坎坷坷的深度学习之路(二)-Hello world(1)
  17. Java比较日期时间大小
  18. 1.cpt介绍与思科设备的基本配置
  19. 史上最著名的10个思想实验 (转)
  20. 网站会员与动网论坛会员同步整合非官方方法

热门文章

  1. 黑苹果使用小技巧之按键设置
  2. 鸿蒙系统有通知服务器吗,鸿蒙系统通知栏怎么清除和打开?鸿蒙系统没有下拉菜单怎么回事?...
  3. 996M11鹅厂这些互联网行业“黑话”,你知多少?
  4. php实现文本替换,php如何实现汉字替换
  5. prometheus监控之postgresql
  6. #SATA# SATA 实际管脚接线图
  7. 聊聊 SAP 产品 UI 上的消息显示机制
  8. 单兵渗透工具-Yakit-Windows安装使用
  9. Source Insight 设置和快捷键大全
  10. 手机开热点如何查看接入热点的所有ip