怎么用Springmvc的post请求json格式参数

这篇文章主要介绍了怎么用Springmvc的post请求json格式参数的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Springmvc的post请求json格式参数文章都会有所收获,下面我们一起来看看吧。

十余年专注成都网站制作,企业网站设计,个人网站制作服务,为大家分享网站制作知识、方案,网站设计流程、步骤,成功服务上千家企业。为您提供网站建设,网站制作,网页设计及定制高端网站建设服务,专注于企业网站设计,高端网页制作,对成都门窗定制等多个行业,拥有多年建站经验。

分析:

  这里我们只做get请求和post 请求 分析。

  1) springmvc 的配置方法不说了,保证包含 即可。

  2) 必备的jar 必不可少。springmvc 内置的json 处理包是 jackson,完整引入方式。引入包有jackson-databind,jackson-core,jackson-annotations


      com.fasterxml.jackson.module
      jackson-module-jaxb-annotations
      ${jackson.version}
    

  3) 采用注解方式来实现Controller

package com.bkc.bpmp.modules.external.controller;

import java.io.IOException;
import java.util.Map;

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.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.bkc.bpmp.modules.external.pojo.ExternalSingleResult;


@Controller
@RequestMapping("/external")
public class Test
{
    @RequestMapping(value = "/test1")
    @ResponseBody
    public Object test1(@RequestBody String  pageData)
        throws IOException
    {
        System.out.println(pageData);
        return pageData;
    }
    
    @RequestMapping(value = "/test2")
    @ResponseBody
    public Object test2(@RequestParam String  pageData)
        throws IOException
    {
        System.out.println(pageData);
        return pageData;
    }
    
}

  4)对应test2,采用的是 @RequestParam 方式获取的参数

    其参数格式就是一般 a=a&b=b 模式

    而对于test1,采用的是 @RequestBody 方式获取的参数

    其参数格式就是 json格式的字符串,{"a":"valueA","b":"valueB"}

  5)在我使用 HTTP请求工具测试 test2 的时候,一直报 415

    HTTP 415 错误 – 不支持的媒体类型(Unsupported media type)

    因为我设置的请求格式为application/json ,应该为 application/json;charset=UTF-8

  6)使用ajax 请求来测试,测试方法如下

    在TestAjax()方法中,data 是一个json 数组,用这种方式去发送请求的时候,其实本质上就是参数格式为  a=a&b=b 模式。TestAjax2() 方法,传递的则是 json 字符串

function TestAjax() {
  var datas = {
          "equObjCode" : "EO_10HLB21AN001.QY-GL01.JZ-01.TY"
        };
  var url = "/external/test2";
  var obj = $("#result");
  var data = $.parseJSON(datas);
  $.ajax({
    type : "get",
    async : false,
    url : url,
    data : data,
    //cache : false, //默认值true
    dataType : "jsonp",
    jsonp : "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
    jsonpCallback : "jsonpCallback",
    //自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
    //如果这里自定了jsonp的回调函数,则success函数则不起作用;否则success将起作用
    success : function(data) {
      obj.html(JSON.stringify(data));
      //obj.parent().css("background","#ddd");
    },
    error : function(XMLHttpRequest, textStatus) {
      obj.html(XMLHttpRequest.status + ","
          + XMLHttpRequest.readyState + ",error="
          + textStatus);
    }
  });
}
    
function TestAjax2() {
  var datas = {
      "equObjCode" : "EO_10HLB21AN001.QY-GL01.JZ-01.TY"
    };
  var url = "/external/test1";
  var obj = $("#result");
  $.ajax({
    type : "post",
    url : url,
    data : data,
    dataType : "json",
          contentType : 'application/json;charset=UTF-8',
    success : function(data) {
      obj.html(JSON.stringify(data));
    },
    error : function(XMLHttpRequest, textStatus) {
      obj.html(XMLHttpRequest.status + ","
          + XMLHttpRequest.readyState + ",error="
          + textStatus);
    }
  });
}

  7)

  jsonp 只支持get 请求,不支持post 请求。

  post模式下,使用@RequestBody 绑定请求对象,Spring会帮你进行协议转换,将Json、Xml协议转换成你需要的对象。

关于“怎么用Springmvc的post请求json格式参数”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“怎么用Springmvc的post请求json格式参数”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注创新互联行业资讯频道。


当前标题:怎么用Springmvc的post请求json格式参数
URL分享:http://myzitong.com/article/jdiepp.html