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請求傳遞數組參數的解決辦法

相關文章
相關標籤/搜索