springMVC——控制層傳回JSON物件和JSON字串
阿新 • • 發佈:2018-12-10
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 />
執行效果