1. 程式人生 > >javaEE Springmvc,Json傳輸,@RequestBody(接收),@ResponseBody(傳送)

javaEE Springmvc,Json傳輸,@RequestBody(接收),@ResponseBody(傳送)

需要額外匯入Json的Jar包:jackson-annotations、jackson-core、jackson-databind

ItemController.java(Controller後端控制器,接收Json字串,傳送Json):

package com.xxx.springmvc.controller;

import org.springframework.beans.factory.annotation.Autowired;
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.ResponseBody;

import com.xxx.springmvc.pojo.Items;
import com.xxx.springmvc.service.ItemService;

//商品管理
@Controller
@RequestMapping(value = "/item")
public class ItemController {
	
	@Autowired
	private ItemService itemService;
	
	
	//json資料互動
	@RequestMapping(value = "/json.action")
	//@ResponseBody表示自動將返回的物件序列化成Json字串。
	//@RequestBody表示自動將前端傳的Json字串轉成物件。
	public @ResponseBody Items json(@RequestBody Items items){
		
		System.out.println(items);
		
		return items;  //@ResponseBody表示自動將返回的物件序列化成Json字串。
	}
	
}

demo.jsp(前端頁面,Ajax傳送Json字串):

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!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=UTF-8">
<title>Demo</title>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.4.4.min.js"></script>
<script type="text/javascript">
$(function(){
	//params是Json字串,並不是Json物件。
	var params = '{"id": 1,"name": "測試商品","price": 99.9,"detail": "測試商品描述","pic": "123456.jpg"}';

 	/* $.post("${pageContext.request.contextPath }/item/json.action",params,function(data){  //這種方式傳送的引數params是Json格式表示的鍵值對引數,並不是Json字串
		alert("aaa:"+data.name);
 	},"json"); */
	$.ajax({
		url : "${pageContext.request.contextPath }/item/json.action",
		data : params, //Json字串;並不是Json物件表示的鍵值對引數。
		contentType : "application/json;charset=UTF-8",//指定傳送資料的格式為Json字串。預設是Json格式表示的鍵值對引數。
		type : "post",
		dataType : "json", //回撥函式中,引數data的型別(自動將Json字串反序列化成Json物件)。
		success : function(data){
			alert(data.name);
		}
		
	});
});
</script>
</head>
<body> 

</body>
</html>