springmvc实现json交互-requestBody和responseBody

json数据交互

1.为什么要进行json数据交互

json数据格式在接口调用中、html页面中较常用,json格式比较简单,解析还比较方便。

比如:webservice接口,传输json数据.

2.springmvc进行json交互

(1)请求json、输出json,要求请求的是json串,所以在前端页面中需要将请求的内容转成json,不太方便。

(2)请求key/value、输出json。此方法比较常用。

3.环境准备

3.1加载json转的jar包

springmvc中使用jackson的包进行json转换(@requestBody和@responseBody使用下边的包进行json转),如下:

jackson-core-asl-1.9.11.jar

jackson-mapper-asl-1.9.11.jar

@RequestBody作用:

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

本例子应用:

@RequestBody注解实现接收http请求的json数据,将json数据转换为java对象

@ResponseBody作用:

该注解用于将Controller的方法返回的对象,通过HttpMessageConverter接口转换为指定格式的数据如:json,xml等,通过Response响应给客户端

本例子应用:

@ResponseBody注解实现将controller方法返回对象转换为json响应给客户端

3.2配置json转换器

在注解适配器中加入messageConverters

<!--注解适配器 -->
 <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> 

注意:如果使用<mvc:annotation-driven /> 则不用定义上边的内容。

4.json交互测试

4.1输入json串,输出是json串

4.1.1jsp页面

使用jquery的ajax提交json串,对输出的json结果进行解析。

使用jduery别忘记引入jquery-1.4.4.min.js

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
 <base href="<%=basePath%>" rel="external nofollow" rel="external nofollow" >
<title>json交互测试</title>
 <script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.4.4.min.js"></script>
 <script type="text/javascript">
  //请求的是json,输出的是json
  function reuqestJson(){
   $.ajax({
    type:'post',
url:'${pageContext.request.contextPath }/requestJson.action',
contentType:'application/json;charset=utf-8',
    //数据格式是json串,商品信息
    data:'{"name":"手机","price":999}',
    success:function(data){//返回json结果
     alert(data);
    }
   });
  }
 </script>
 </head>
 <body>
 <input type="button" onclick="reuqestJson()" value="请求的是json,输出的是json"/>
 </body>
</html>

4.1.2controller

package cn.edu.hpu.ssm.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import cn.edu.hpu.ssm.po.ItemsCustom;
//json交互测试
@Controller
public class JsonText {
 //请求json(商品信息),输出json(商品信息)
 //@RequestBody将请求的商品信息的json串转成itemsCustom对象
 //@ResponseBody将itemsCustom转成json格式输出
 @RequestMapping("/requestJson")
 public @ResponseBody ItemsCustom requestJson(@RequestBody ItemsCustom itemsCustom){
  //@ResponseBody将itemsCustom转成json格式输出
  return itemsCustom;
 }
}

4.1.3测试结果

4.2输入key/value,输出是json串

4.2.1jsp页面

使用jquery的ajax提交key/value串,对输出的json结果进行解析。

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
 <base href="<%=basePath%>" rel="external nofollow" rel="external nofollow" >
 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" >
 <title>json交互测试</title>
 <script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.4.4.min.js"></script>
 <script type="text/javascript">
  //请求是key/value,输出是json
  function responseJson(){
   $.ajax({
     type:'post',
url:'${pageContext.request.contextPath }/responseJson.action',
     //请求的是key/value,这里不需要指定contentType,因为默认就是key/value类型
     //contentType:'application/json;charset=utf-8',
     //数据格式是json串,商品信息
     data:'name=手机&price=999',
     success:function(data){//返回json结果
      alert(data);
     }
    });
  }
 </script>
 </head>
 <body>
 <input type="button" onclick="requestJson()" value="请求的是key/value,输出的是json"/>
 </body>
</html>

4.2.2controller

package cn.edu.hpu.ssm.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import cn.edu.hpu.ssm.po.ItemsCustom;
//json交互测试
@Controller
public class JsonText {
 //请求key/value(商品信息),输出json(商品信息)
 @RequestMapping("/responseJson")
 public @ResponseBody ItemsCustom responseJson(ItemsCustom itemsCustom){
  //@ResponseBody将itemsCustom转成json格式输出
  System.out.println("前台传过来得商品名:"+itemsCustom.getName());
  return itemsCustom;
 }
}

4.2.3测试

后台控制台输出了"前台传过来的商品名:手机",且查看http数据可以看到json数据的反馈。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持我们!

(0)

相关推荐

  • 详解springMVC之与json数据交互方法

    前台代码: function channel(){ //先获取选中的值 var channelId = $("#channelId option:selected").val(); //来判断发送的链接 if(channelId ==2){ **需要注意地方 start** var schoolBannerInfo = { "img": channelId, "title": channelId, "info": channe

  • 详解springmvc之json数据交互controller方法返回值为简单类型

    当controller方法的返回值为简单类型比如String时,该如何与json交互呢? 使用@RequestBody 比如代码如下: @RequestMapping(value="/ceshijson",produces="application/json;charset=UTF-8") @ResponseBody public String ceshijson(@RequestBody String channelId) throws IOException{

  • SpringMVC教程之json交互使用详解

    json数据交互 1.1 @RequestBody 作用:@RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内容转换为json.xml等格式的数据并绑定到controller方法的参数上. 本例子应用:@RequestBody注解实现接收http请求的json数据,将json数据转换为Java对象 1.2 @ResponseBody 作用:该注解用于将Controller的方法返回的对象,通过Http

  • springmvc实现json交互-requestBody和responseBody

    json数据交互 1.为什么要进行json数据交互 json数据格式在接口调用中.html页面中较常用,json格式比较简单,解析还比较方便. 比如:webservice接口,传输json数据. 2.springmvc进行json交互 (1)请求json.输出json,要求请求的是json串,所以在前端页面中需要将请求的内容转成json,不太方便. (2)请求key/value.输出json.此方法比较常用. 3.环境准备 3.1加载json转的jar包 springmvc中使用jackson的

  • 基于@RequestBody和@ResponseBody及Stringify()的作用说明

    @RequestBody和@ResponseBody及Stringify()的作用 首先,在项目的前后交互中json数据格式比较常用,普遍认为json格式比较简单,易于解析 如果我们在前端发送一个ajax请求的话 可以看到是用json字符串格式向后台传请求参数,那么后台需要采用@RequestBody来处理请求的json格式数据,将json数据转换为java对象,否则springmvc就不能解析导致传空参的结果 一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳

  • 详解springmvc 接收json对象的两种方式

    最近学习了springmvc 接收json对象的两种方式,现在整理出来,具体如下: 1.以实体类方式接收 前端 ajax 提交数据: function fAddObj() { var obj = {}; obj['objname'] = "obj"; obj['pid'] = 1 ; $.ajax({ url: 'admin/Obj/addObj.do', method: 'post', contentType: 'application/json', // 这句不加出现415错误:U

  • 基于SpringMVC接受JSON参数详解及常见错误总结

    最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一个统一的接口给浏览器还有APP.所以把一个练手项目的前台全部改成Ajax了,跳转再使用SpringMVC控制转发.对于传输JSON数据这边有了更深的一些理解,分享出来,请大家指正. 在SpringMVC中我们可以选择数种接受JSON的方式,在说SpringMVC如何接受JSON之前,我们先聊聊什么是JSON.具体的定义我也不赘述了,在JavaScript中我们经常这样定义JSON 对象 var jsonO

  • SpringMVC返回json数据的三种方式

    Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1,Struts2等. 1.第一种方式是spring2时代的产物,也就是每个json视图controller配置一个Jsoniew. 如:<bean

  • 使用SpringMVC返回json字符串的实例讲解

    最近开始接触SpringMVC这个框架,这个框架使用起来很方便,框架搭起来之后,写起代码几乎都是一个模式.当然要走到这一步必须保证你的SpringMVC的相关配置都已经完成,并且配置正确! 作为我的关于S平ringMVC的首篇博客,本篇博客主要说名如何配置SpringMVC,并且可以使之正常的返回Bean实体,这里的bean实体一般返回到前端都是以Json字符串的形式返回的. 使用的开发工具为eclipse,这个也是比较大众化的开发工具了,算的上是人人都会使用的了,只是熟练程度不一样! 具体的配

  • springmvc接收json串,转换为实体类List方法

    开始我用List<泛型>接受json串,如下,结果list内并非泛型对象,而是JSONObject对象.这样在遍历的时候就报了转化异常的错误.我不知道为什么springmvc在处理这个的时候并没有将json对象转化为泛型对象(我认为应该能获取到,可能是配置问题或者使用不当导致的),这个错误用实际证明了java是假泛型. 如何解决呢,暂时有两种方案,第一种是使用json工具类转化json对象为泛型对象,第二种使用数组接受,然后将数组转化为list对象.代码如下下.如果哪天找到了更好的解决方案,或

  • 使用SpringMVC响应json格式返回的结果类型

    背景: SpringMVC如何响应json格式的数据? 技术实现 方式1:在Controller使用@RestController注解 方式2:在Controller使用@Controller,在需要返回方法处使用@ResponseBody注解实现 需要导入j支持的jar包 jackson-annotations-2.2.2.jar jackson-core-2.2.2.jar jackson-databind-2.2.2.jar 注意事项: springMVC底层的实现需要这三个包支持,注意版

随机推荐