Spring MVC POST方法

时间:2014-06-27 08:38:37

标签: java json spring-mvc http-post

这是我的Controller类代码段

@RequestMapping(value = "/createAgent", method = RequestMethod.POST)
@ResponseBody
public String createAgent(@RequestBody String json) {
    System.out.println(json);
} 

如何将JSON对象传递给此方法。我能以任何方式通过网址传递吗?如果我通过这种方式(虽然这似乎非常错误),

http://localhost:8080/SurveyApp3/createAgent/{"a_id": 8746574632, "pwd": "abcd", "pim_id": 3, "m_id":9738247882} 

我收到错误说

WARNING: No mapping found for HTTP request with URI [/SurveyApp3/createAgent/%7B%22a_id%22:%208746574632,%20%22pwd%22:%20%22abcd%22,%20%22pim_id%22:%203,%20%22m_id%22:9738247882%7D] in DispatcherServlet with name 'spring'

我还尝试使用欢迎文件index.jsp

中的ajax请求
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>


 <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
 <script type="text/javascript" >

 function sendAjax() {

 $.ajax({
     url: "/createAgent",
     type: 'POST',
     dataType: 'json',
     data: "{\"a_id\":7645534265,\"pwd\":\"abcd\", \"pim_id\":3, \"m_id\":9738247882}",
     contentType: 'application/json',
     success: function(data) {
         alert(data.a_id + " " + data.pwd);
    },
    error:function(data,status,er) {
       alert("error: "+data+" status: "+status+" er:"+er);
    }
 });
}
</script>
</body>
</html>

当我去这个网址时,

http://localhost:8080/SurveyApp3/createAgent

我收到错误,说不支持GET方法。我仍然是这个主题的新手,我无法弄清楚如何将JSON对象作为参数发送到post方法。 我哪里错了?

谢谢!

3 个答案:

答案 0 :(得分:0)

在Spring Controller中,每个方法都必须返回一个视图名称。在您的代码中缺少这就是您获得的原因 警告:找不到包含URI 错误的HTTP请求的映射,请添加
 将“viewname”返回到您的代码。
另外,对于对象使用@ModelAttribute ---           @PathVariable --- for Strings
          @RequestParam ---用于字符串数组。

希望这会有用......

答案 1 :(得分:0)

在您的控制器中保留此代码:

@RequestMapping(value = "/createAgent", method = RequestMethod.POST)
public @ResponseBody String createAgent(@RequestParam String jsonText) {
    System.out.println(jsonText);
} 

在你的Ajax调用中保留这个:

$.ajax({
     url: "/createAgent",
     type: 'POST',
     dataType: 'json',
     data: {
     "jsonText":"{'a_id':7645534265,'pwd':'abcd', 'pim_id':3,'m_id':9738247882}"
            },
     success: function(data) {
         alert(data.a_id + " " + data.pwd);
    },
    error:function(data,status,er) {
       alert("error: "+data+" status: "+status+" er:"+er);
    }
 });

希望它会有所帮助。 :)

答案 2 :(得分:0)

  • 首先尝试检查下一个依赖项:

        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.13</version>
        </dependency>
    
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-core-asl</artifactId>
            <version>1.9.13</version>
        </dependency>
    
  • 您是否使用按钮发送了帖子URL,是吗?您是否将其配置为调用“sendAjax()”方法?

  • 您可以检查Ajax中输入的网址(查看行的正确语法:

url:“/ createAgent”

也许您使用“/”符号

犯了输入错误
  • 最后有一个Json转换器。您是否在bean配置中定义了它?