spring mvc 進行前後臺json資料的互動
一:Spring MVC 的controller接收前臺的json的資料
獲取前臺的json的有多種方式,但是常用的有兩種方式:
(1)利用Spring提供的@Request方式,但是這中方式有很大的限制。前臺ajax的請求(1)必須用post請求(2)data:json物件必須轉化成json字串(3)必須設定contentType: "application/json;charset=UTF-8",否則後臺都無法獲得json資料。
前臺的ajax請求:
$.ajax({ url:"http://127.0.0.1:8080/SSM_maven/getUser", data:JSON.stringify(data), type:"POST", dataType: "json", contentType: "application/json;charset=UTF-8", success:function(ret){ //console.log(ret); //頁面解析使用者資訊 builder_user(ret); //解析分頁 builder_page(ret); }, });
後臺的程式碼:
@RequestMapping(value="/getUser")
@ResponseBody //返回json
public User getJson(@RequestBody User user){//獲得前臺傳遞過來的json字串並存儲到pojo中,這種方式只接受ajax的post請求,如果是個get請求會報錯。
System.out.println(user.getAddress());
return user;
}
1.1如果改為get請求:
前臺報400
後臺報:資訊:
Error parsing HTTP request header
java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
1.2、如果ajax不加contentType: "application/json;charset=UTF-8",
前臺報415錯誤:
後臺報: org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported
1.3如果ajax請求傳遞是json物件而不是json字串
前臺報:
後臺報:
org.springframework.http.converter.HttpMessageNotReadableException: Could not read document: Unrecognized token 'id': was expecting ('true', 'false' or 'null')
at [Source: [email protected]; line: 1, column: 4]; nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'id': was expecting ('true', 'false' or 'null')
at [Source: [email protected]; line: 1, column: 4]
(2)利用HttpServletRequest request請求來獲得前臺的ajax傳遞過來的json資料
前臺程式碼:
$.ajax({
url:"http://127.0.0.1:8080/SSM_maven/GetJson",
data:data,
type:"POST",
dataType: "json",
success:function(ret){
//console.log(ret);
//頁面解析使用者資訊
builder_user(ret);
//解析分頁
builder_page(ret);
},
});
後臺的程式碼: @RequestMapping("/GetJson")
@ResponseBody //返回json
public User GetJson(HttpServletRequest request){
User user = CommonUtils.toBean(request.getParameterMap(), User.class);//將request中的資料全部封裝到bean中。
System.out.println(user.getAddress());
return user;
}
在這個過程中寫了將request包含的資料直接封裝到bean中的工具類,具體建立了CommonUtils和DateConverter兩個類
CommonUtils.class程式碼
package cn.zzu.util;
import java.util.Map;
import java.util.UUID;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
/**
* 小小工具
*將request中資料直接載入到bean中
*
*/
public class CommonUtils {
/**
* 返回一個不重複的字串
* @return
*/
public static String uuid() {
return UUID.randomUUID().toString().replace("-", "").toUpperCase();
}
/**
* 把map轉換成物件
* @param map
* @param clazz
* @return
*
* 把Map轉換成指定型別
*/
@SuppressWarnings("rawtypes")
public static <T> T toBean(Map map, Class<T> clazz) {
try {
/*
* 1. 通過引數clazz建立例項
* 2. 使用BeanUtils.populate把map的資料封閉到bean中
*/
T bean = clazz.newInstance();
ConvertUtils.register(new DateConverter(), java.util.Date.class);
BeanUtils.populate(bean, map);
return bean;
} catch(Exception e) {
throw new RuntimeException(e);
}
}
}
DateConverter.class類的程式碼
package cn.zzu.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import org.apache.commons.beanutils.Converter;
/**
* 把String轉換成java.util.Date的型別轉換器
* @author qdmmy6
*
*/
public class DateConverter implements Converter{
@SuppressWarnings("rawtypes")
public Object convert(Class type, Object value) {
if(value == null) return null;//如果要轉換成值為null,那麼直接返回null
if(!(value instanceof String)) {//如果要轉換的值不是String,那麼就不轉換了,直接返回
return value;
}
String val = (String) value;//把值轉換成String
// 使用SimpleDateFormat進行轉換
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
return sdf.parse(val);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
}
總結:第二種方式相對比較好些,對於前臺的ajax請求的限制相對較少,後臺獲取的前臺傳遞過來的引數相對容易靈活。
相關推薦
spring mvc 進行前後臺json資料的互動
一:Spring MVC 的controller接收前臺的json的資料獲取前臺的json的有多種方式,但是常用的有兩種方式:(1)利用Spring提供的@Request方式,但是這中方式有很大的限制。前臺ajax的請求(1)必須用post請求(2)data:json物件必須
Spring mvc,jQuery和JSON資料互動
一、實驗環境的搭建 1、Spring mvc jar。 匯入spring mvc執行所需jar包。匯入如下(有多餘) 2、json的支援jar 3、加入jQuery。
使用ajax進行前後臺的資料互動
1 什麼是ajax: 非同步的JavaScript和xml,跟後臺互動,都用json 2 ajax幹啥用的? 前後端做資料互動: 3 特點: -非同步(非同步和同步的區別:同步是請求發過去,要等著迴應;非同步:不需要等迴應,可以進行其他操作) -區域性重新整理: 4 使用ajax實
Spring MVC中返回JSON資料的幾種方式
我們都知道Spring MVC 的Controller方法中預設可以返回ModeAndView 和String 型別,返回的這兩種型別資料是被DispatcherServlet拿來給到檢視解析器進行繼續處理返回頁面的,而不是直接返回給客戶端的。有時候我們需要發請求後讓服務端直接返回一些資料,不再經過Dispa
spring mvc如何返回json資料
springmvc如何返回json資料 常用的方法有兩種: 1.利用Gson等json轉換工具,將物件轉換成json字串,並通過HttpServletResponse將json字串返回給前臺 @RequestMapping("/getJson1")
Spring Mvc與Json資料互動
在web開發中,如果想做頁面區域性重新整理的功能,那麼使用ajax最合適不過了。在spring mvc逐漸替代struts框架的今天,掌握spring mvc和json的資料互動式很有必要的。 ajax與後臺的資料互動格式有好幾種,本文主要講解以ajax以js
Spring MVC之返回Json陣列資料
建立User package com.po; public class User { private String userName; private String passWord; publ
Spring MVC中傳遞json數據時顯示415錯誤解決方法
ping 數據 value 解決方法 傳遞 ica ons pub eth 在ajax中設置 ContentType為‘application/json;charset=utf-8‘ 傳遞的data類型必須是json字符串類型:{“key”:"va
Java框架-SpringMVC的應用(json資料互動、控制器方法返回值、檔案上傳)
1. 搭建SpringMVC開發環境 1.1 建立專案,新增依賴 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" x
SpringMVC的json資料互動
SpringMVC的json資料互
Spring Boot @ResponseBody 轉換 JSON資料時Date 型別處理方法
引用處: https://blog.csdn.net/molashaonian/article/details/53025118 https://blog.csdn.net/henianyou/article/details/81945409 解析JSON的方式:
Spring MVC Web請求提交資料
Spring MVC Web請求提交資料到控制器有下面幾種方法: 1.使用HttpServletRequest獲取 2.使用@RequestParam註解 3.使用自動機制封
springmvc之json資料互動
json資料格式在介面呼叫中,html頁面中較常用,json格式比較簡單,解析還比較方便。 springmvc進行json資料互動 為什麼要用json資料進行解析 最終輸出json資料,為了方便在前端介面對請求結果進行解析。 1、請求json、輸出jso
spring mvc(4)處理模型資料
處理模型資料 Spring MVC 提供了以下幾種途徑輸出模型資料: – ModelAndView: 處理方法返回值型別為 ModelAndView時, 方法體即可通過該物件新增 模型資料 – Map 及 Model: 入參為org.springframework.ui.Mo
json資料互動
springmvc 的json資料互動 - 哎幽的成長 - CSDN部落格--和老師講課相同 http://blog.csdn.net/u012373815/article/details/47208187 ----------------- 1 json資料互動 &n
【SpringMVC學習07】SpringMVC與前臺的json資料互動
json資料格式在介面呼叫中、html頁面中比較常用,json格式比較簡單,解析也比較方便,所以使用很普遍。在springmvc中,也支援對json資料的解析和轉換,這篇文章主要總結一下springmvc中如何和前臺互動json資料。 1. 兩種互動形式 springmvc和前臺互
Json資料互動格式介紹和比較
1、什麼是資料互動格式? 就是客戶端和服務端進行資訊傳輸的格式(xml和json),雙方約定用什麼格式進行傳輸,然後解析得到自己想要的值 xml擴充套件標記語言,屬於重量級(第一佔寬頻、第二解析難) json屬於輕量級的資料互動格式(不佔寬頻,解析很簡單) 2、xml和json優缺點
Spring mvc接收復雜資料型別
**前言:**Spring MVC在接收集合請求引數時,需要在Controller方法的集合引數裡前新增@RequestBody,而@RequestBody預設接收的enctype (MIME編碼)是application/json,因此傳送POST請求時需要設定請求報文頭資訊,否則Spri
SpringMVC與前/後臺的json資料互動
json資料格式在介面呼叫中、html頁面中比較常用,json格式比較簡單,解析也比較方便,所以使用很普遍。在SpringMVC中,也支援對json資料的解析和轉換,這篇文章主要總結一下在SpringMVC中如何和前臺互動json資料。 兩種互動形式 SpringMVC和
JavaWeb+Servlet:(二)Ajax非同步登入註冊?Servlet+Json 資料互動
上一篇文章已經將Dao層搭建好了,所以只需要編寫jsp及servlet。 具體專案訪問GitHub:連結 一、登入 1. 登入介面(index.jsp) 需要匯入並載入 jquery.js檔案 <%@ page language="java" contentType="te