赞
踩
1.@RequestParam等同于request.getParameter的获取方式相同,主要处理默认的application/x-www-form-urlencoded提交的类型数据,是一个对象。@RequestParam接受的是一个对象,如果和fastjosn.jar中的JSONObject使用就会报错(但是如果将JSONObject.paresObject一个具体的实体类就不会出错了)。
(1)前端代码(用过ajax来测试),可以正常操作
- console.log("json对象");
- var jsonobject = {"jsonobject":"测试josn对象的上传!"};
- $.ajax({
- url:"http://localhost:8099/ajaxjsonobject",
- type:"POST",
- data:jsonobject,
- success:function(result)
- {
- console.log(result);
- }
- });
(2)前端代码(通过vue的axios来进行测试),运行不正常,需要通过qs模块进行URL序列化,才能获取对象。
(2.1)先下载:npm install qs --save 然后引入qs模块 import qs from "qs";
- var josnobject = {"jsonobject":"json对象上传!","jsonobject2":"jsond对象上传2!"};
- var jsonobj = this.qs.stringify(josnobject);
- this.$axios({
- method:"post",
- url:"http://localhost:8099/ajaxjsonobject",
- data:jsonobj
- }).then(result=>{
- console.log(result)
- });
(3)后端代码
- @RequestMapping("/ajaxjsonobject")
- @ResponseBody
- public void ajaxjsonobject(@RequestParam Map<String,Object> params)
- {
- String jsonobject = "jsonobject";
- String mapjsonobject = (String) params.get("jsonobject");
- System.out.println("获取对象jsonobject的值:"+mapjsonobject);
- for (String key:params.keySet()) {
- for (Object val:params.values()) {
- System.out.println(key+":"+val);
- }
- }
- }
2.@RequestBody使用接受的是一个字符串,所以前端得将数据进行JSON.stringify(jsonobject)转换,将转换的数据进行上传,@RequestBody JSONObject jsonobject就能通过getString方法就能直接获取前端传来的字符串数据格式。当然如果是ajax需要加入json字符串的类型,contentType:"application/json"。
(1)前端代码
- var josnstringtest = {"jsonstring":"测试字符串上传!"}
- var josnstring = JSON.stringify(josnstringtest);//字串转换
- console.log(typeof(josnstring));
- $.ajax({
- url:"http://localhost:8099/ajaxjsonstring",
- type:"POST",
- //这是提交一个字符串格式。如果不写类型,则默认提交application/x-www-form-urlencoded格式数据
- contentType:"application/json",
- data:josnstring, //josnstringtest josnstring
- success:function(result){
- console.log(result);
- }
- });
(2)前端代码(通过vue的axios来进行测试),可以正常操作,axios本身就是json字符串格式。
- console.log("json字符串测试!");
- //axios本身就对对象进json字符串的处理
- var josnstringtest = {"jsonstring":"测试字符串上传!","jsonstring2":"测试字符串上传2!"};
- this.$axios({
- method:"post",
- url:"http://localhost:8099/ajaxjsonstring",
- data:josnstringtest
- }).then((result)=>{
- console.log(result);
- });
(3)后端代码
- @RequestMapping("/ajaxjsonstring")
- @ResponseBody
- public void ajaxjosnstring(@RequestBody JSONObject jsonObject)
- {
- //可以直接获取前端转换好的json字符串数据格式
- String jsonstring = jsonObject.getString("jsonstring");
- System.out.println(jsonstring);
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。