SpringMVC的json交互

一、注解说明

1、@RequestBody

 作用:@RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内容转换为json、xml等格式的数据并绑定到controller方法的参数上。

2、@ResponseBody

 作用:@ResponseBody注解用于将Controller的方法返回的对象,通过HttpMessageConverter接口转换为指定格式的数据,如json、XML等,通过response响应给客户端。

二、请求json,响应json

1、加入jar包

 springmvc默认使用MappingJacksonHttpMessageConverter对json数据进行转换,需要加入jackson的jar包。

2、配置json转换器

  第一种方式:使用注解适配器的配置方式。

<!--注解适配器 -->
	<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
		<property name="messageConverters">
		<list>
		<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
		</list>
		</property>
	</bean>

  第二种方式:使用注解驱动方式,则不需要进行任何配置即可使用。

3、controller方法获取json,响应json

 @RequestMapping("/updateitemsByJson")
//使用注解,接受json,返回json
public @ResponseBody ItemsCustom updateitemsByJson(@RequestBody ItemsCustom itemsExtend) throws Exception{
    System.out.println(itemsExtend);
    return itemsExtend;
}

4、编写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>
         <title>修改商品信息</title>
        <!--引入jquery-->
        <script type="application/javascript" src="${pageContext.request.contextPath}/js/jquery-1.4.4.min.js"></script>
        <!--ajax异步请求-->
        <script type="application/javascript">
            function request_json() {
                $.ajax({
                    type :"post",
                    url:"${pageContext.request.contextPath}/updateitemsByJson.action",
                    contentType:"application/json;charset=utf-8",
                    data:'{"id":1,"name":"笔记本","price":5005}',
                    success:function (date) {
                    alert(date.toString())
                    }
                });
            }
        </script>
    </head>
    <body>
       <input type="button" value="请求json" onclick="request_json()">
    </body>
</html>

5、测试结果

请求:

响应:

三、请求key/value,返回json

1、加入jar包

 springmvc默认使用MappingJacksonHttpMessageConverter对json数据进行转换,需要加入jackson的jar包。

2、配置json转换器

  第一种方式:使用注解适配器的配置方式。

<!--注解适配器 -->
	<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
		<property name="messageConverters">
		<list>
		<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
		</list>
		</property>
	</bean>

  第二种方式:使用注解驱动方式,则不需要进行任何配置即可使用。

3、controller方法获取key/value,响应json

 @RequestMapping("/updateitemsByJson1")
    //使用注解,接受json,返回json
    public @ResponseBody ItemsCustom updateitemsByJson1(ItemsCustom itemsExtend) throws Exception{
        System.out.println(itemsExtend);
        return itemsExtend;
    }

4、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>
         <title>修改商品信息</title>
        <!--引入jquery-->
        <script type="application/javascript" src="${pageContext.request.contextPath}/js/jquery-1.4.4.min.js"></script>
        <!--ajax异步请求-->
        <script type="application/javascript">
            function response_json() {
                $.ajax({
                    type:"post",
                    url:"${pageContext.request.contextPath}/updateitemsByJson1.action",
                 /*   contentType:"application/x-www-from-urlencode",*/
                    data:"id=1&name=笔记本&price=500",
                    success:function (data) {
                        alert(data.toString());
                    }
                });
            }
        </script>
    </head>
    <body>
       <input type="button" value="响应json" onclick="response_json()">
    </body>
</html>

5、测试结果

请求:

响应:

原文地址:https://www.cnblogs.com/jack1995/p/7357586.html