springMVC下的json数据的传递

本文介绍了在SpringMVC框架下如何处理JSON数据,包括前端jsp的JSON对象构造和后端Controller接收数据的方法,重点讲解了数据传递的流程和关键配置。

1、前端jsp代码

<%@ 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、后台的controller的java代码:
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"
    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值