SpringMVC在使用JSON时报错信息为:Content type 'application/json;charset=UTF-8' not supported

直接缘由是:个人(maven)项目parent父工程pom.xml缺乏必要的三个jar包依赖坐标。web

解决方法是:在web子模块的pom.xml里面添加springMVC使用JSON实现AJAX请求。ajax

<!--spring mvc-json依赖-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.9</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.9</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.9</version>
        </dependency>

<spring.version>5.0.15.RELEASE</spring.version>

jsp页面的<script>标签

//用jQuery实现AJAX请求提交数据到服务器端
            //保存数据到服务器,成功时控制台打印显示信息
            var selectListTest = new Array(); selectListTest[0] = "param1"; selectListTest[1] = "param2"; selectListTest[2] = "param3"; $.ajax({ type:"POST", url:"${pageContext.request.contextPath}/product/delete.do", contentType:"application/json",//jQuery的ajax提交数组使得springMVC使用必填参数
                    //接收用@requestBody
                    data:JSON.stringify(selectListTest),  //数组经过JSON.stringify格式化
                    success:function (data) { alert(data); } });


视图层Controller类的Method

//删除产品的某个分类经过产品编号
    @RequestMapping("/delete.do") @ResponseBody public String deleteByNum(@RequestBody List<String> selectListTest)throws Exception{ System.out.println( "JSP页面经过AJAX技术提交POST请求的路径找到。" ); // productService.deleteByNum(product);
 System.out.println( selectListTest ); System.out.println( "JSP页面经过AJAX技术提交字符串数组成功实现。" ); return"redirect:findAll.do"; }

 

总结一下,解决该问题需注意一下三点:

  1.  使用jackson依赖jar包。spring

  2.  jQuery的 $.ajax() 里面须要对JSP页面里的字符串数组提交以前格式化。json

var testList=['1','2','3']; $.ajax({ type: "post", url: "${pageContext.request.contextPath}/product/delete.do",  contentType:"application/json", data:JSON.stringify(testList), success: function(obj){ alert(obj.description); }, error: function(obj){ alert("操做出错"); return false; } });

 3. Controller控制层AJAX请求的调用的方法需在参数前加 @RequestBody注解。数组

  

public void method(@RequestBody List<String> testList) {

  return;
}

 



==================
end

参考资料:服务器

关于Ajax请求传递数组参数的解决办法

相关文章
相关标签/搜索