springMvc注解之@ResponseBody和@RequestBody詳解
簡介
springmvc對json的前后臺傳輸做了很好封裝,避免了重復(fù)編碼的過程,下面來看看常用的@ResponseBody和@RequestBody注解
添加依賴
springmvc對json的處理依賴jackson
<dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-core-asl</artifactId> <version>1.9.11</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.11</version> </dependency>
xml配置
<mvc:annotation-driven />//不要忘了命名空間配置
@ResponseBody
如果傳輸?shù)氖菃螌觠son對象,我們后臺可以直接用 @RequestParam接收
$.ajax({ type : "post", dataType : "json", url : "/testRequestBody", data:{ name:"韋德", age:35 }, success : function(result) { } });
@RequestMapping("/testRequestBody") public String testRequestBody(@RequestParam Map<String, Object> map) { System.out.println(map);// {name=韋德, age=35} return "index"; }
如果傳輸?shù)氖嵌鄬忧短譲son對象,這個時候會就會出現(xiàn)數(shù)據(jù)丟失問題
@ResponseBody很好的解決了這個問題,它會把前臺傳輸過來的json轉(zhuǎn)化為后臺對應(yīng)的對象
$.ajax({ type : "post", dataType : "json", url : "/testRequestBody", contentType:"application/json", data:JSON.stringify({ name:"韋德", win:[2006,2012,2013], age:35 }), success : function(result) { } });
@RequestMapping("/testRequestBody") public String testRequestBody(@RequestBody Map<String, Object> map) { System.out.println(map);//{name=韋德, win=[2006, 2012, 2013], age=35} return "index"; }
需要注意的是前臺需要指定contentType為"application/json"
同時要把json對象轉(zhuǎn)化為String,否則后臺不能識別
@ResponseBody
ajax請求返回json格式,往常我們可以這樣做
private void writeJson(HttpServletResponse response, Object object) { String json = JSON.toJSONString(object); response.setCharacterEncoding("UTF-8"); response.setContentType("application/json; charset=utf-8"); PrintWriter out = null; try { out = response.getWriter(); out.write(json); } catch (IOException e) { e.printStackTrace(); } finally { if (out != null) { out.close(); } } }
這個時候 @ResponseBody就派上用場了,只需要一個注解,全部搞定
$.ajax({ type : "post", dataType : "json", url : "/testResponseBody", success : function(result) { console.info(result); } });
@RequestMapping("/testResponseBody") @ResponseBody public Map<String, Object> testRequestBody() { Map<String, Object> result = new HashMap<String, Object>(); result.put("name", "韋德"); result.put("age", 35); return result; }
前臺console輸出
{ "age": 35, "name": "韋德" }
總結(jié)
在網(wǎng)上看到很不錯的流程圖,作為總結(jié)吧
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Springboot整合Spring Cloud Kubernetes讀取ConfigMap支持自動刷新配置的教程
這篇文章主要介紹了Springboot整合Spring Cloud Kubernetes讀取ConfigMap支持自動刷新配置,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09Java實現(xiàn)AES/CBC/PKCS7Padding加解密的方法
這篇文章主要介紹了Java實現(xiàn)AES/CBC/PKCS7Padding加解密的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08Spring Boot JPA Repository之existsBy查詢方法失效的解決
這篇文章主要介紹了Spring Boot JPA Repository之existsBy查詢方法失效的解決方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06詳解Java獲取環(huán)境變量及系統(tǒng)屬性的方法
這篇文章主要介紹了詳解Java獲取環(huán)境變量及系統(tǒng)屬性的方法,講解了System.getEnv()和System.getProperties()這兩個核心方法的使用,需要的朋友可以參考下2016-05-05詳解Java的Struts框架中上傳文件和客戶端驗證的實現(xiàn)
這篇文章主要介紹了Java的Struts框架中上傳文件和客戶端驗證的實現(xiàn),Struts是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下2015-12-12