1. 程式人生 > >springMVC——控制層傳回JSON物件和JSON字串

springMVC——控制層傳回JSON物件和JSON字串

1、傳回JSON物件

實體類

	private String username;
	private String password;
	private List<String> daylist = new	ArrayList<String>();

控制層中通過屬性consumes = "application/json"限制前臺傳遞過來的資料格式必須是JSON,屬性produces = "application/json"設定返回的userinfo中的資料要轉換成JSON物件並傳回給客戶端,@ResponseBody註解指將JSON字串作為響應處理

package com.controller;

import java.util.ArrayList;

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.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.entity.Userinfo;

@Controller
public class CreateJSON {

	@RequestMapping(value = "createJSONURL", method = RequestMethod.POST,
			consumes = "application/json",produces = "application/json")
	@ResponseBody
	public Userinfo createJSON(@RequestBody Userinfo userinfoparam){
		System.out.println(userinfoparam.getUsername()+"  "+userinfoparam.getPassword());
		Userinfo userinfo = new Userinfo();
		userinfo.setUsername("張大");
		userinfo.setPassword("123");
		userinfo.setDaylist(new ArrayList<String>());
		userinfo.getDaylist().add("星期一");
		userinfo.getDaylist().add("星期二");
		userinfo.getDaylist().add("星期三");
		return userinfo;
	}
}

jsp頁面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'getJSON.jsp' starting page</title>
        <script src="jquery-1.3.2.js"></script>
        <script src="json2.js"></script>
        <script type="text/javascript">
        	function userinfo(username,password){
        		this.username = username;
        		this.password = password;
        	}
        	
        	function sendAjax(){
        		var usernameRef = new userinfo("李四","123");
        		var jsonString = JSON.stringify(usernameRef);
        		$.ajax({
        			type:"POST",
        			data:jsonString,
        			url:"createJSONURL.spring?t="+new Date().getTime(),
        			contentType:"application/json",
        			dataType:"json",
        			success:function(data,type){
        				alert(data.username+"  "+data.password);
        				var dayArray = data.daylist;
        				for(var i=0;i<dayArray.length;i++){
        					alert(dayArray[i])
        				}
        			}
        		});
        	}
        </script>
  </head>
  
  <body>
    <input type="button" onclick="sendAjax()" value="send"/>
  </body>
</html>

在springMVC-servlet.xml添加註解使JSON字串自動轉換成實體類

	<mvc:annotation-driven />

2、傳回json字串

需要新增jar如下

實體類

	private String username;
	private String password;
	private List<String> daylist = new	ArrayList<String>();

控制層

package com.controller;

import java.util.ArrayList;

import net.sf.json.JSONObject;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.entity.Userinfo;

@Controller
public class CreateJSON {

	@RequestMapping(value = "returnJSONString")
	@ResponseBody
	public String ReturnJSONString(){
		Userinfo userinfo = new Userinfo();
		userinfo.setUsername("王五");
		userinfo.setPassword("123");
		userinfo.setDaylist(new ArrayList<String>());
		userinfo.getDaylist().add("星期一");
		userinfo.getDaylist().add("星期二");
		userinfo.getDaylist().add("星期三");
		return JSONObject.fromObject(userinfo).toString();
	}
}

jsp頁面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'sendAjax.jsp' starting page</title>
        <script src="jquery-1.3.2.js"></script>
        <script src="json2.js"></script>
        <script type="text/javascript">
        	function sendAjax(){
       			$.ajax({
       				type:"POST",
       				url:"returnJSONString.spring?t="+new Date().getTime(),
       				success:function(data,textStatus){
       					var jsonObject = JSON.parse(data);
       					alert("returnJSONString="+data+" value="+jsonObject.username+" "+jsonObject.password
       					+jsonObject.password+" "+jsonObject.daylist[0]+" "+jsonObject.daylist[2]+" "+jsonObject.daylist[3])
       				}
       			});
        	}
        </script>
  </head>
  
  <body>
    <input type="button" onclick="sendAjax()" value="send">
  </body>
</html>

需要在springMVC-servlet.xml中新增utf-8處理配置否則會出現亂碼

    <context:component-scan base-package="com.controller" />

	<bean
		class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
		<property name="messageConverters">
			<list>
				<ref bean="stringHttpMessageConverter" />
			</list>
		</property>
	</bean>
	<bean id="stringHttpMessageConverter"
		class="org.springframework.http.converter.StringHttpMessageConverter">
		<property name="supportedMediaTypes">
			<list>
				<value>text/plain;charset=utf-8</value>
			</list>
		</property>
	</bean>

    <mvc:annotation-driven />

執行效果