您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關@ResponseBody于@RequestBody注解在springMvc中的區別有哪些,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
springmvc對json的前后臺傳輸做了很好封裝,避免了重復編碼的過程,下面來看看常用的@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
如果傳輸的是單層json對象,我們后臺可以直接用 @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"; }
如果傳輸的是多層嵌套json對象,這個時候會就會出現數據丟失問題
@ResponseBody很好的解決了這個問題,它會把前臺傳輸過來的json轉化為后臺對應的對象
$.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對象轉化為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": "韋德" }
總結
在網上看到很不錯的流程圖,作為總結吧
關于@ResponseBody于@RequestBody注解在springMvc中的區別有哪些就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。