首先准备以下 jar包:
commons-logging-113jar
jackson-core-asl-192jar
jackson-mapper-asl-192jar
spring-aop-406RELEASEjar
spring-beans-406RELEASEjar
spring-context-406RELEASEjar
spring-core-406RELEASEjar
spring-expression-406RELEASEjar
spring-web-406RELEASEjar
spring-webmvc-406RELEASEjar
其中commons-logging-113jar,jackson-core-asl-192jar,jackson-mapper-asl-192jar均可在struts2的工具包中取得
导入以上包后,去webxml中进行配置,配置文件如下:
<xml version="10" encoding="UTF-8"><web-app xmlns:xsi=">
接下来我们再看springMVC-servletxml,如下:
<xml version="10" encoding="UTF-8"><beans xmlns=">
接下来我们再看vo对象即值对象Userjava,如下:
package orgxtpojo;import javaioSerializable;
@SuppressWarnings("serial")public class User implements Serializable { private long userId; private String userName; private String userPassword; public long getUserId() { return thisuserId;
} public void setUserId(long userId) { thisuserId = userId;
} public String getUserName() { return thisuserName;
} public void setUserName(String userName) { thisuserName = userName;
} public String getUserPassword() { return thisuserPassword;
} public void setUserPassword(String userPassword) { thisuserPassword = userPassword;
}
}
好接下来便轮到了Controller的类TestJSONControllerjava,如下:
package orgxtcontroller;import orgspringframeworkstereotypeController;import orgspringframeworkwebbindannotationRequestBody;import orgspringframeworkwebbindannotationRequestMapping;import orgspringframeworkwebbindannotationRequestMethod;import orgspringframeworkwebbindannotationResponseBody;import orgxtpojoUser;
@Controller
@RequestMapping("/test")public class TestJSONController { /
看value属性,是以do结尾的,这正是webxml配置url-pattern的值为do的原因,
这样所有的请求链接都必须以do结尾,这样做的好处在于可以将请求链接同其他链接区分开来
笔者建议如此做(当然了,你也可以将do换成html,htm或者其他) /
@RequestMapping(value = "/testJSONdo",method={RequestMethodPOST})
@ResponseBody public User testJSON(@RequestBody User user) {
Systemoutprintln(usergetUserName() + " " + usergetUserPassword()); return user;
}
}
在以上类中出现的@ResponseBody和@RequestBody是关键,前者用于将JSON数据返回客户端,后者用于接受客户端的JSON数据
接下来我们来看看客户端的代码,客户端的代码由jquery完成
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 401 Transitional//EN" ">
以上jsp文件中出现了一个JSONstringify()函数,此函数由jquery提供,作用在于将JSON数据转换为字符串,之所以要这么做,原因在于服务端的@RequestBody只能识别字符串,而不能识别JSON对象
json中取出对象的属性值步骤如下:
1、打开vscode,创建一个测试页面JsonTesthtml,用于演示在js中如何获取json对象的属性集合。
2、在测试页面中,定义一个js变量,将其赋值为json格式的字符串,用于模拟从后台返回过来的json字符串值,以及后续转换为json对象,和获取其属性集合。var json = "[{\"Col1\": \"Hello\", \"Col2\": \"World\"}, {\"Col1\": \"您好\", \"Col2\": \"世界\"}]"。
3、使用js的eval函数,将json字符串的变量值,转换为json对象。var $json = eval("(" + json + ")");
4、得到json对象之后,使用for-in循环语句,得到json对象的序号,也就是,这个json对象中,还有多少个子对象。
5、因为js是弱类型的语言,并不要求json对象中的每个子对象属性都一样。所以,在得到序号之后,使用Objectkeys($json[i]); 就能获取到当前json子对象的属性集合。
6、如果想要获取到json对象的每个具体的列名和值,就需要再加一个for循环,遍历列名,得到列名和值。
当然是可以使用JSONObject接收咯,但是一般不建议这么做,你这么做的你的代码可读性就非常的差了,后人接手你的代码,根本不知道你的前端传参有哪些,每个字段又是代表什么意思,想这么做无非就是懒得写实体想节省点时间,相信我,多写一个实体带来的收益远远大于你节省的那点时间,况且写一个实体类注释每个字段的意义花费不了几个时间的。
import javaioIOException;
import netsfjsonJSONArray;
import netsfjsonJSONObject;
import orgapachecommons>
JSONObject jsonObject = new JSONObject();\x0d\Map map = requestgetParameterMap();\x0d\Iterator it = mapkeySet()iterator();\x0d\while(ithasNext()){\x0d\String key = (String)itnext();\x0d\String[] values = (String[])mapget(key);\x0d\jsonObjectaccumulate(key, values[0]);\x0d\}\x0d\\x0d\String name = jsonObjectgetString("userName"); //返回从前台接受的用户名\x0d\Systemoutprintln(name); //输出用户名\x0d\\x0d\jsonObjectclear(); // 清空jsonObjec中的数据\x0d\jsonObjectput("love" , "足球"); //将足球赋给love这个变量名\x0d\outprint(jsonObject); //返回json格式的数据
以上就是关于spring mvc 怎么获取json全部的内容,包括:spring mvc 怎么获取json、json中怎么取出对象的属性值啊、java注解@RequestBody的接收类型可以用JSONObject吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)