答疑 | 前后端分离,如何接收json数据?

json

1.颜老师,在前后端分离的项目中,后端如何接收前端发来的json数据?我记得是@RequestBody,但有时候会报错。

答:当使用SpringMVC接收json数据时,需要区分json的数据格式,具体如下:

(1)若前端发送的是Json对象,那么后端需要用@RequestParam注解;

(2)若前端发送的是Json字符串,那么后端需要用@RequestBody注解;(通常,在前台的ajax中,可以使用 JSON.stringify(json对象) ,将json对象转为json字符串)

但要注意的是:以上虽然是普遍性结论,但在个别框架中的确存在bug。我曾在课堂遇到一个情况,有学生前端使用微信小程序,并通过JSON.stringify(this.data.userAnswers)向后端发数据(Json字符串),但后端的SpringMVC必须用

@PostMapping("commitExams")

public Result commitExams(@RequestParam Map<String,String> userAnswers){...}

才能接收到数据,否则报500错误。显然,这和我上面的结论是相悖的。因此想告诉大家的是,在应用层面的一些结论,不要记得太死。这其中可能是开发者代码哪个细节有问题,也可能是某个框架自己的bug。

深克隆和浅克隆

2.深克隆和浅克隆的区别是什么?

答:因为java、js等编程语言均支持这两种克隆,就不针对某一个语言来解释了。

深克隆和浅克隆,也成为深拷贝和浅拷贝。

(1)当拷贝的对象只包含了 基本类型的属性时,深克隆和浅克隆没啥区别,都是将对象复制了一份。

(2)当拷贝的对象包含了 引用类型 的属性时:对于引用类型的属性,浅克隆复制的是属性的引用地址。即,拷贝前和拷贝后的两个引用属性,会指向同一个内存地址;而深克隆是将引用属性的值也拷贝了一份,即,拷贝前和拷贝后的两个引用属性各自独立。

- 完 -

推荐阅读

Java小白到大神的心路历程(Java SE)

答疑 | 面试全对,却没offer?

答疑 | 背下这300字,面试就能加薪!

猜你喜欢

转载自blog.csdn.net/yanqun007/article/details/105966544
今日推荐