今天回看SpringMVC ,准备复习一下绑定数据和JSON转换,没想到遇到下面的BUG

看了很多解释,都说是转化的问题,但是我已经JSON 转换了。

错误报告

这是控制台给出的错误

POST http://localhost:8080/mvc/testJson 415 (Unsupported Media Type)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BvAENJUA-1658548787606)(D:\软考\Snipaste_2022-07-23_11-47-02.png)]

项目配置

检查你是否已经JSON.stringify

contentType的值是否为application/json;charset=utf-8

看看你的xml ,是否 <context:component-scan base-package=“cn.cg.controller”/> 扫描配置

function testJson(){
    // 获取输入的用户名和密码
   var username = $("#username").val();
   var password = $("#password").val();
   $.ajax({
        url : "${pageContext.request.contextPath }/testJson",
      type : "post", 
      // data表示发送的数据
      data :JSON.stringify({username:username,password:password}),
      // 定义发送请求的数据格式为JSON字符串
      contentType : "application/json;charset=UTF-8",
      //定义回调响应的数据格式为JSON字符串,该属性可以省略
      dataType : "json",
      //成功响应的结果

        success : function(data){
         if(data != null){              
           alert("您输入的用户名为:"+data.username+
                "密码为:"+data.password);
         }
      }
   });

控制层

/**
 * 接收页面请求的JSON数据,并返回JSON格式结果
 */
@RequestMapping(value = "/testJson",method =RequestMethod.POST ,consumes = "application/json")
   @ResponseBody
public User testJson(@RequestBody User user) {
   // 打印接收的JSON格式数据
   System.out.println(user);
   // 返回JSON格式的响应
   return user;
}

解决方法

缺少了一个包

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.13.3</version>
</dependency>

总结

415错误码原因:

  1. 检查你是否已经JSON.stringify
  2. contentType的值是否为application/json;charset=utf-8
  3. 看看你的xml ,是否 <context:component-scan base-package=“cn.cg.controller”/> 扫描配置
  4. 是否导包jackson-databind
  5. bean实体类中的getter,setter方法是否正确
  6. 控制台是否使用@ResponseBody 接受

更多推荐