1. 程式人生 > >SpringMVC 之 @ResponseBody 和 @RequestBody

SpringMVC 之 @ResponseBody 和 @RequestBody

前後端進行資料互動的時候,規定資料互動的格式,使資料互動規範而統一,是極為重要的事。一般而言,我們會採用 JSON 進行資料互動。本文暫不討論如何 JSON 的格式規範,而是解析一下如何在 SpringMVC 中方便快捷的使用 JSON 進行資料互動。那就是使用兩大註解: @ResponseBody 和 @RequestBody 。

pom.xml

我採用 Maven 來管理構建專案,要使用 @ResponseBody 和 @RequestBody ,要先在 pom.xml 裡引入 jackson 依賴包。

    <!--JSON互動-->
    <dependency
>
<groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.5.2</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId
>
<version>2.5.2</version> </dependency>

額,至於 SpringMVC 具體使用哪個版本就需要你自己選擇了。

開啟 < mvc:annotation-driven />

為什麼要開啟 < mvc:annotation-driven /> ?
相當於註冊了 DefaultAnnotationHandlerMapping 和 AnnotationMethodHandlerAdapter 兩個 bean ,配置一些 messageconverter 。即解決了 @Controller 註解的使用前提配置。而我們在使用 SpringMVC 時,一定會用到 @Controller 註解,如果沒有 < mvc:annotation-driven/> ,那麼所有的 Controller 可能就沒有解析。

Java 程式碼示例

實體類:

public class User {
    private String name;
    private int id;
    public String getName() { return name;}
    public void setName(String name) { this.name = name;}
    public int getId() { return id;}
    public void setId(int id) { this.id = id;}
}

Controller:

@Controller
@RequestMapping("/json")
public class Controller {

    //僅傳送 JSON ,即僅使用 @ResponseBody 註解
    @RequestMapping("/justResponse")
    @ResponseBody
    public Map<String, Object> justResponse(Model model) throws Exception {
        Map<String, Object> map =new HashMap<String, Object>();
        User user = new User();
        user.setName("Test");
        user.setId(123);
        map.put("string", "string");
        map.put("user", user);
        return map;
    }

    //僅接收 JSON ,即僅使用 @RequestBody註解
    @RequestMapping("/justRequest")
    public User justRequest(@RequestBody User user) throws Exception {
        System.out.println("This is " + user.name);
        return user;
    }

    //收發 JSON ,即使用 @ResponseBody 和 @RequestBody
    @RequestMapping("/responseAndRequest")
    @ResponseBody
    public Map<String, Object> responseAndRequest(@RequestBody User user) throws Exception {
        System.out.println("This is " + user.name);
        Map<String, Object> map =new HashMap<String, Object>();
        map.put("string", "string");
        map.put("user", user);
        return map;
    }
}

之所以會有 Map< String, Object > ,是因為資料互動時會存在多個物件,這樣可能更貼合實際。以及還有一點,確保資料格式為 JSON ,不過使用 XML 也可以,以上兩個註解也支援 XML 。

相關推薦

SpringMVC @ResponseBody @RequestBody

前後端進行資料互動的時候,規定資料互動的格式,使資料互動規範而統一,是極為重要的事。一般而言,我們會採用 JSON 進行資料互動。本文暫不討論如何 JSON 的格式規範,而是解析一下如何在 SpringMVC 中方便快捷的使用 JSON 進行資料互動。那就是使用

SSM框架@ResponseBody@RequestBody的區別及HttpMessageConverter的作用

一、@ResponseBody @ResponseBody作用於方法上,將返回結果直接以Json等格式返回,直接封裝到response物件的Body中,不經過SpringMVC的檢視解析器。一般用於前後端分離的專案,或者Ajax等非同步請求。 @ResponseBody public Stu

SpringMVC中@ResponseBody @RequestBody 的作用

@RequestMapping(“url”),這裡的 url寫的是請求路徑的一部分,一般作用在 Controller的方法上,作為請求的對映地址。 程式碼: @RequestMapping(value = "/test")//類級別對映,可以沒有,一般用於減少書寫量 public cla

SpringMVC @ResponseBody@RequestBody使用

fas true 寫入 log 方法參數 success ack esp syn @ResponseBody用法 作用: 該註解用於將Controller的方法返回的對象,根據HTTP Request Header的Accept的內容,通過適當的HttpMessageC

SpringMVC中的ResponseBodyRequestBody介紹

package name 客戶 1.8 ota pos spa pro 頁面 1ResponseBody 和 RequestBody 1簡介 @ResponseBody把後臺pojo轉換為json對象,返回到頁面 @RequestBody接受前臺json數據,把jso

spring 中註解的詳細解釋@Responsebody與@RequestBody

可用 gif com .com profile 而是 ping get orm 1、@responseBoby @Responsebody與@RequestBody 一、預備知識:@RequestMapping RequestMapping是一個用來處理請求地

淺談@RequestMapping @ResponseBody @RequestBody 註解的用法與區別

ber attribute thrown text 返回結果 mode 需要 oca 格式 1.@RequestMapping 國際慣例先介紹什麽是@RequestMapping,@RequestMapping 是一個用來處理請求地址映射的註解,可用於類或方法上。用於類上,

Ajax傳值以及接受傳值,@ResPonseBody @RequestBody

Ajax對於Java程式設計人員開說可是很重要的,可以說是必會的。 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title&

註解@ResponseBody @RequestBody 的作用

@ResponseBody是作用在方法上的,@ResponseBody 表示該方法的返回結果直接寫入 HTTP response body 中,一般在非同步獲取資料時使用【也就是AJAX】,在使用 @RequestMapping後,返回值通常解析為跳轉路徑,但是加上 @ResponseBody 後返

@RequestMapping @ResponseBody @RequestBody 用法與區別

[email protected] 國際慣例先介紹什麼是@RequestMapping,@RequestMapping 是一個用來處理請求地址對映的註解,可用於類或方法上。用於類上,表示類中的所有響應請求的方法都是以該地址作為父路徑;用於方法上,表示在類的父路徑下追加方法上註解中

springMVC中@RequestParam@RequestBody的作用

  @RequestParam和@RequestBody是什麼區別,估計很多人還是不太清楚, 因為一般用@ RequestParam就足夠傳入引數了,要說他們區別,就需要知道contentType是什麼? Content-Type: 預設為 application/x-www-form-url

@ResponseBody @RequestBody 的作用

先提一嘴 @RequestMapping(“url”),這裡的 url寫的是請求路徑的一部分,一般作用在 Controller的方法上,作為請求的對映地址。 程式碼: @RequestMapping(value = "/test")//類級別對映,可以

常用註解@ResponseBody與@RequestBody與@RestController

@ResponseBody: @ResponseBody是作用在方法上的,@ResponseBody 表示該方法的返回結果直接寫入 HTTP response body 中,一般在非同步獲取資料時使用【也就是AJAX】,在使用 @RequestMapping後,返回值通常解析為跳轉路徑,但是加上

第五章 SpringMVCViewResolverView解析

          過完年了,本來是想在年前將SpringMVC系列寫完的,只是在接近年末的時候沒有了一種學習心態,這兩天看了一下ViewResolver原始碼,就想盡快將這篇部落格寫出,也好完結SpringMVC的系列部落格並開始下面的學習。           自己寫的

詳述 @ResponseBody @RequestBody 註解的區別

1 前言 在詳述 @ResponseBody 和 @RequestBody 註解之前,咱先了解一下 @RequestMapping 註解,@RequestMapping 是一個用來處理請求地址對映的註解,可用於類或方法上。用於類上,表示類中的所有響應請求的方法

SpringMVCHandlerMethodArgumentResolver

SpringMVC提供了一個HandlerMethodArgumentResolver介面可以讓我們處理方法的引數,和註解結合提來,能有很強大的功能,例如SpringMVC提供的@ModelAttri

WEBResponseBody RequestBody RequestParam

對象 map pin csdn 獲取數據 json www. 就是 寫入 https://blog.csdn.net/shahuhubao/article/details/80800938?utm_source=blogxgwz2 @ResponseBody是作用在方法上的

springmvcjson互動406異常(Not Acceptable)415異常(Unsupported Media Type)

一. 406異常(Not Acceptable) 1. 沒有新增jackson-databind包2. 請求的url的字尾是*.html。在springmvc中如果請求的字尾是*.html的話,是不可以響應一個json資料的,將url中的*.html改成*.action即可。 二. 415異常(Unsup

springmvcjson交互406異常(Not Acceptable)415異常(Unsupported Media Type)

XML 數據 set -c cor data spa cti json 一. 406異常(Not Acceptable) 1. 沒有添加jackson-databind包2. 請求的url的後綴是*.html。在springmvc中如果請求的後綴是*.html的話,是不可

springMVC解析excel xls xlsx格式

一、pom.xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</arti