zoukankan      html  css  js  c++  java
  • 菜鸟学习Spring——SpringMVC注解版解析不同格式的JSON串

    一、概述
            不同格式的JSON串传到后台来实现功能这个是我们经常要做的一件事,本篇博客就给大家介绍四种不同的JSON串传到后台后台如何用@RequestBody解析这些不同格式的JSON串的。
    二、代码展示

    需要引用的jar包


    1.xml配置

    Web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    	<servlet>
    		<servlet-name>springMVC</servlet-name>
    		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>springMVC</servlet-name>
    		<url-pattern>*.spring</url-pattern>
    	</servlet-mapping>
    	<welcome-file-list>
    		<welcome-file>index.jsp</welcome-file>
    	</welcome-file-list>
    </web-app>

    springMVC-servlet.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
    	xsi:schemaLocation="
            http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
            http://www.springframework.org/schema/context 
            http://www.springframework.org/schema/context/spring-context-3.0.xsd
              http://www.springframework.org/schema/mvc 
            http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
    	<context:component-scan base-package="com.gaowei.JSON" />
    	<mvc:annotation-driven />
    	
    
    </beans>


    2.java代码

    Userinfo.java

    package com.gaowei.entity;
    
    public class Userinfo {
    	private String username;
    	private String password;
    	public String getUsername() {
    		return username;
    	}
    	public void setUsername(String username) {
    		this.username = username;
    	}
    	public String getPassword() {
    		return password;
    	}
    	public void setPassword(String password) {
    		this.password = password;
    	}
    }

    Test.java

    package com.gaowei.JSON;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    
    
    
    
    import com.gaowei.entity.Userinfo;
    
    @Controller
    public class Test {
    	
    	@RequestMapping(value="getJSON1")
    	public void getJSON1(@RequestBody Userinfo userinfo){
    		System.out.println("------getJSON1---start----");
    		System.out.println(userinfo.getUsername());
    		System.out.println(userinfo.getPassword());
    		System.out.println("------getJSON1---end----");
    	}
    	
    	@RequestMapping(value="getJSON2")
    	public void getJSON2(@RequestBody ArrayList<String> list){
    		System.out.println("------getJSON2---start----");
    		for (int i = 0; i < list.size(); i++) {
    			System.out.println(list.get(i));
    		}
    		System.out.println("------getJSON2---end----");
    	}
    	
    	@RequestMapping(value="getJSON3")
    	public void getJSON3(@RequestBody List<Map> list){
    		System.out.println("------getJSON3---start----");
    		for (int i = 0; i < list.size(); i++) {
    			Map map=list.get(i);
    			System.out.println(map.get("username")+" "+map.get("password"));
    		}
    		System.out.println("------getJSON3---end----");
    	}
    	
    	@RequestMapping(value="getJSON4")
    	public void getJSON4(@RequestBody Map map){
    		System.out.println("------getJSON4---start----");
    		System.out.println(map.get("username"));
    		List<Map> workList=(List)map.get("work");
    		for (int i = 0; i < workList.size(); i++) {
    			Map eachAddressMap=workList.get(i);
    			System.out.println("address="+eachAddressMap.get("address"));
    		}
    		Map schoolMap=(Map)map.get("school");
    		System.out.println(schoolMap.get("name"));
    		System.out.println(schoolMap.get("address"));
    		System.out.println("------getJSON4---end----");
    	}
    }
    


    3.界面代码

    Test.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8" %>
     <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
        <head>
            <script src="jquery-1.3.2.js">
            </script>
            <script src="json2.js">
            </script>
            <script>
                function userinfo(username, password){
                    this.username = username;
                    this.password = password;
                }
                
                function sendAjax1(){
                    var userinfoRef = new userinfo('中国', '中国人');
                    var jsonStringRef = JSON.stringify(userinfoRef);
                    $.ajax({
                        type: "POST",
                        data: jsonStringRef,
                        url: "getJSON1.spring?t=" + new Date().getTime(),
                        contentType: "application/json"
                    });
                }
    
                function sendAjax2(){
    				var myArray =new Array();
    				myArray[0]="中国1";
    				myArray[1]="中国2";
    				myArray[2]="中国3";
    				myArray[3]="中国4";
    				var jsonString=JSON.stringify(myArray);
    			      $.ajax({
    	                    type: "POST",
    	                    data: jsonString,
    	                    url: "getJSON2.spring?t=" + new Date().getTime(),
    	                    contentType: "application/json"
    	                });
                    }
    
    
                function sendAjax3(){
    					var myArray=new Array();
    					myArray[0]= new userinfo('中国1', '中国人1');
    					myArray[1]= new userinfo('中国2', '中国人2');
    					myArray[2]= new userinfo('中国3', '中国人3');
    					myArray[3]= new userinfo('中国4', '中国人4');
    					var jsonString=JSON.stringify(myArray);
    				      $.ajax({
    		                    type: "POST",
    		                    data: jsonString,
    		                    url: "getJSON3.spring?t=" + new Date().getTime(),
    		                    contentType: "application/json"
    		                });
                    }
    
                function sendAjax4(){
                    var jsonObject={
    					"username":"accp",
    					"work":[{
    						"address":"address1"
    						},{
    						"address":"address2"	
    							}],
    						"school":{
    							"name":"tc",
    							"address":"pjy"
    							}
                            }
    				var jsonString=JSON.stringify(jsonObject);
    			      $.ajax({
    	                    type: "POST",
    	                    data: jsonString,
    	                    url: "getJSON4.spring?t=" + new Date().getTime(),
    	                    contentType: "application/json"
    	                });
                }
            </script>
        </head>
        <body>
            <input type="button" onclick="sendAjax1()" value="sendAjax1"/>
            <br/>
            <input type="button" onclick="sendAjax2()" value="sendAjax2">
            <br/>
            <input type="button" onclick="sendAjax3()" value="sendAjax3">
            <br/>
            <input type="button" onclick="sendAjax4()" value="sendAjax4">
            <br/>
        </body>
    </html>


    4.效果图



    三、总结。

            这里要注意jar包的引用不要把Spring的所有jar包都引用了会引起jar包冲突而导致报HTTP 415的错误。@RequestBody这个方法很强大可以把JSON串转化为实体类、ArryList、Map等对象。这样的方法让我们开发人员开发效率大大的提高了

  • 相关阅读:
    Java内存模型
    Redis的复制特性
    Redis数据持久化
    Java的三种代理模式
    设计模式—模板方法模式
    设计模式—观察者模式
    web性能优化之:no-cache与must-revalidate深入探究
    JWT
    数值每三位加逗号
    Webpack 打包优化之速度篇
  • 原文地址:https://www.cnblogs.com/iplus/p/4490353.html
Copyright © 2011-2022 走看看