问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

springmvc怎么接受前台传进来的json数据

发布网友 发布时间:2022-04-22 23:41

我来回答

1个回答

热心网友 时间:2022-04-07 20:13

json作为一种轻量级
的数据交换格式,在前后台数据交换中占据着非常重要的地位。Json的语法非常简单,采用的是键值对表示形式。JSON 可以将 JavaScript
对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web
客户机传递给服务器端程序,也可以从服务器端程序传递json格式的字符串给前端并由前端解释。这个字符串是符合json语法的,而json语法又是
javascript语法的子集,所以javascript很容易解释它,而且
JSON 可以表示比"名称 / 值对"更复杂的结构。下面我们通过实例来看看JQuery传递/解析json格式的数据是如何实现的。

1.首先来看前端jsp代码:

[html] view plain copy
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript" src="/springMVC6/js/jquery-1.7.2.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">

$(document).ready(function(){
//传递字符串格式json对象到后台(一个json对象)
$("#resolveJsonObject").click(function(){
var userName =encodeURI($("#userName").attr("value"));
var age = encodeURI($("#age").attr("value"));

var user = {userName:userName,age:age};
var aMenu = encodeURI(JSON.stringify(user));

$.ajax({
url:"/springMVC6/user/data/resolveJsonObject" ,
data:"orderJson=" + aMenu,
success:function(data){

}
});
});

//传递json数组到后台
$("#resolveJsonArray").click(function(){
var userName =encodeURI($("#userName").attr("value"));
var age = encodeURI($("#age").attr("value"));

//数组开始
var user1 = {userName:userName,age:age};
var allMenu={
"menu":[ ]
};
allMenu.menu.push(user1);
var allMenu1 = encodeURI(JSON.stringify(allMenu));

$.ajax({
//json数组
url:"/springMVC6/user/data/resolveJsonArray" ,
data:"orderJson=" + allMenu1,
success:function(data){

}
});
});

//接收后台的json在前台解析
$("#resolveJson").click(function(){

$.ajax({
//解析从后台返回的json数据
url:"/springMVC6/user/data/resolveJson" ,
type:"post",
success:function(data){
var arr=eval(data);
alert(arr.length);
for(var m = 0;m<arr.length;m++){
alert(arr[m].user.userName);
}
}
});
});
});

</script>
</head>
<body>
<h1>json添加用户</h1>

姓名:<input id="userName" type="text" name="userName">
年龄:<input id="age" type="text" name="age"><br>
<input type="button" id="resolveJsonObject" value="json对象">
<input type="button" id="resolveJsonArray" value="json数组">
<input type="button" id="resolveJson" value="前端解析json字符串">
</body>
</html>

2.使用javabean解析前端数据:

[java] view plain copy
package com.tgb.web.controller.annotation;

import java.io.IOException;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.tgb.web.controller.entity.User;

@Controller
@RequestMapping("/user/data")
public class DataController {

//接收前台传过来的字符串格式的json对象,在后台进行解析
@RequestMapping("/resolveJsonObject" )
public void resolveJsonObject(HttpServletRequest request,HttpServletResponse response) throws IOException {
//解码
String str = URLDecoder.decode(request.getParameter("orderJson"),"UTF-8");
JSONObject jb=new JSONObject();
//将json格式的字符串转换为json对象,并取得该对象的“userName”属性值
String o=(String)jb.fromObject(str).get("userName");
System.out.println(o);
}

//传递json数组字符串
@RequestMapping("/resolveJsonArray" )
public void resolveJsonArray(HttpServletRequest request,HttpServletResponse response) throws IOException {
//解码,为了解决中文乱码
String str = URLDecoder.decode(request.getParameter("orderJson"),"UTF-8");
JSONObject jb=new JSONObject();
//将json格式的字符串转换为json数组对象
JSONArray array=(JSONArray)jb.fromObject(str).get("menu");
//取得json数组中的第一个对象
JSONObject o = (JSONObject) array.get(0);//获得第一个array结果
//取出json数组中第一个对象的“userName”属性值
String name=o.get("userName").toString();//获得属性值
System.out.println(name);
}

//通过该函数返回json格式的数据,在前台通过JQuery进行解析
@RequestMapping("/resolveJson" )
public void resolveJson(HttpServletRequest request,HttpServletResponse response) throws IOException {

List m = (List) new ArrayList();
JSONArray jsons = new JSONArray();
for(int i=0;i<10;i++){
User user = new User();
user.setUserName("name_" + i);
m.add(user);
}

for(int j=0;j<m.size();j++){
JSONObject jsonObject = new JSONObject();
jsonObject.put("user", m.get(j));
jsons.add(jsonObject);
}
response.getWriter().print(jsons.toString()) ;
}

@RequestMapping("/toJson" )
public String toJson() {
return "/json";
}
}

json的作用并不仅仅
在于作为字符串在前后台进行传递,我们采用json传递数据的时候更主要的考虑到的是它的传输效率。当两个系统需要进行数据交换的时候,如果传递的是经过
序列化的对象,效率是非常低的,如果传递的是存储大量对象的数组的时候效率就更不敢想象了,这时如果通过将对象或数据转换成json字符串进行传递,效率
就会提高很多。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 为什么某些浏览器无法获取JSON? javascript解析多维数组生成的json javascript解析json问题 如何把一串字符串再解析成json 新下的EVE 和新注册的账号,怎么不能用! referenceerror lessonjsons啥意思 json数据格式,xml数据格式的区别和用法 python 多线程如何延时 json对象获取属性名 linux下vyysh命令有什么作用啊?经常见到! c#读取json DELPHi分布式多层设计,的瘦客户机的理解 python threads can only be started once 为什么在解析json中汉字解析不了 如何用python方法检测UDP端口 javascript 解析json数据的问题 Python socket 如何实现广播单播切换 json s数据能传给异步任务吗 android python 多进程通讯 使用什么好 js怎么获取json数据里重复的值? js将字符串转换成对象和数组 struts2返回json数据问题 为什么某些浏览器用JSON无法传递中文参数? 怎样在官网上查商品真假? 不记得在哪个平台买的物品怎么查购买的商品忘了是从哪个平台买的了怎么查? 怎么查一件商品是不是正品? 怎样查产品的真假? 如何查找抖音上的热销商品呢? 用一个订单编号怎么查商品,不是自己的在淘宝上面买的? 怎么在网上用商品条形码查找商品? 居民身份证能异地办理吗,怎样办理,到哪里办理? 在外地怎样办理身份证 如何在异地办理身份证 外地怎么补办身份证 异地办理身份证流程是怎么样的 如何异地办理身份证,需要什么证件 外地户口怎样在本地办身份证 如何异地办理身份证,需要什么证件? 身份证如何异地办是不是很麻烦? 异地如何办理身份证补办