总结浏览器发送请求到前端到后端后,再响应回浏览器的过程(复习)

我们该如何实现从浏览器页面发送请求到响应给浏览器这个过程呢?

首先我们要知道这个过程有什么参与。

这个过程由前端程序和后端程序,还有浏览器参与。

整个工作过程是这样的:浏览器发起请求,然后请求传到前端,前端根据地址(浏览器发起请求的时候会自动生成一个地址)来识别路由,通过路由找到对应的前端页面,然后再执行方法语句,假如是新增一个商品,那么他的方法就涉及到几个名字,也就是属性名,因为新增一个商品,他需要的是商品的名字,首字母,图片等等,这些都是属性名,所以这些属性名在前端起了自己的名字,然后把数据传到后端,在data后面,你写的东西决定了这些属性名是一个整体的jason对象,还是说是分开的字符段。这两个的不同之处是,如果是Jason对象的话,后端只需要一个参数就可以接收,但是也会出现问题,比如说你前端的属性名和后端封装的方法不一样,这可能让后端重新写pojo方法,这会造成代码冗余,但是如果你传入的是分开的字符段的话,后端并不需要重写方法,而只需要列多个参数去接收你的属性名就可以。

我们该如何寻找前端对应的页面呢?首先我们要看浏览器,我们点击那个新增商品的功能组件,然后可以看看网址,在除去正常需要解析的路径之后,还有哪些路径?然后去前端专门查看路径跟路由关系的,去找到相对应的路由,根据路由找到相对应的前端页面,然后就可以找到我们自己的功能组件,我们要看看方法那里,也是需要看看URL地址是什么,然后这个地址,除去解析的地址之外,你需要在后端截取这些地址,而且你要在前端看清楚他的请求方式是什么,如果是post请求方式的话,你就需要用PostMapping注释。

无论怎么样,只要你涉及从前端接收数据到后端进行修改的话,你就需要用到,ResponseEntity方法,因为这个是只是传入数据库而已,并不需要你返回什么商品的结果集,因此你也不需要返回结果集,所以ResponseEntity那里不需要加入泛型,直接加入void就可以了,但是你不要以为这样就不用返回值,实际上这样也是需要返回值的,你需要在方法执行成功之后返回一个插入成功的状态码。

在ResponseEntity方法中,你需要传入参数,这个时候你就需要看了,看前端给你的是一个Jason对象,还是一个分开的字符段。你根据情况看分几次接收或者一次接收,这里需要注意的一点是,Jason对象的话,你不可能用几段参数去接收,而且是Jason对象的话,你需要用RequestBody做注释。如果前端分开字符段给你接收,你根据多少个字符段,然后编写对应的参数去接收,这里有个细节需要提醒,假如我一个Brand的pojo类方法,封装了五个对象,但是只能接收前端的三个对象,前端还有一个对象需要接收,但是不在我的方法范围内,这个时候我们要用insert的insertSelective去接收那三个对象,剩余一个对象我们要写另外的参数去接收它。

这里我们要注意的是,这个方法传进来的时候,品牌的参数只有一个,但是商品类目有很多个,所以品牌参数我们只需要用brand参数去接收就可以,但是商品的类目的话,我们需要用一个list来接收,最终我们实现操作数据库是在mapper方法里面实现的,但是操作mapper方法是在service方法里面,我们该如何去写这个service方法呢?我们只需要调用mapper里面能够把传入的数据输入数据库的方法就可以了,如果mapper里面没有这个方法,我们可以自己在mapper里面写一个,加入insert注解,后面写上插入数据库的方法,并且在当前mapper方法把参数传进去。

如果你按以上方法做的话,你就只是单纯把数据传进去,数据表里面,你要想把数据传进数据表里面,你必须先看看你有什么数据表,他的格式是怎么样的?在当前的项目中,我们可以看到数据表有两张需要传进去,一张是单纯的品牌名表,这个比较简单,因为我们直接传入品牌名就可以了,难点在第三张表,这个表需要传入品牌名,还有对应的商品类目,一个品牌名对应多个商品类目,所以这就需要我们编写方法去传入,mapper里面只是写了如何插入数据库的方法,所以这个方法我们只能在service里面写,那我们应该如何去实现一个品牌名对应多个商品类目,我们是需要遍历方法,因为我们传进来的一次数据当中,只有一个品牌名,还有多个商品类目名,所以我们只能用商品类目名进行遍历,因为如果我们用品牌名进行遍历的话,只能进行一次,剩余的商品类目名就对不上,所以我们用商品类目名进行遍历,就可以实现多个商品类目名对应一个品牌,所以我们需要这个遍历方法,但是我们这个遍历方法比较特殊,它是每遍历一个商品类目,就执行一次商品类目和品牌名匹配的方法,如果这个直接是个mapper方法,那就等于一次次把商品类目与商品品牌进行匹配,也是一次次一起传入到数据库当中,那不就完成了吗?这里可能有人会有疑问,你传入数据库当中怎么保证他们是匹配的,其实你只要一次时间传入两个参数,数据表里面就只有这两个参数,新增的时候,就相当于数据表再插多一行进去而已,这也就是实现了匹配。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值