@ResponseBody註解的作用
@ResponseBody的作用其實是將java物件轉為json格式的資料。
@responseBody註解的作用是將controller的方法返回的物件通過適當的轉換器轉換為指定的格式之後,寫入到response物件的body區,通常用來返回JSON資料或者是XML資料。
注意:在使用此註解之後不會再走檢視處理器,而是直接將資料寫入到輸入流中,他的效果等同於通過response物件輸出指定格式的資料。
@ResponseBody是作用在方法上的,@ResponseBody 表示該方法的返回結果直接寫入 HTTP response body 中,一般在非同步獲取資料時使用【也就是AJAX】。
注意:在使用 @RequestMapping後,返回值通常解析為跳轉路徑,但是加上 @ResponseBody 後返回結果不會被解析為跳轉路徑,而是直接寫入 HTTP response body 中。 比如非同步獲取 json 資料,加上 @ResponseBody 後,會直接返回 json 資料。@RequestBody 將 HTTP 請求正文插入方法中,使用適合的 HttpMessageConverter 將請求體寫入某個物件。
-
後臺 Controller類中對應的方法:
-
@RequestMapping("/login.do")
-
@ResponseBody
-
public Object login(String name, String password, HttpSession session) {
-
user = userService.checkLogin(name, password);
-
session.setAttribute("user", user);
-
return new JsonResult(user);
-
}
-
@RequestBody是作用在形參列表上,用於將前臺傳送過來固定格式的資料【xml格式 或者 json等】封裝為對應的 JavaBean 物件,
-
封裝時使用到的一個物件是系統預設配置的 HttpMessageConverter進行解析,然後封裝到形參上。
-
如上面的登入後臺程式碼可以改為:
-
@RequestMapping("/login.do")
-
@ResponseBody
-
public Object login(@RequestBody User loginUuser, HttpSession session) {
-
user = userService.checkLogin(loginUser);
-
session.setAttribute("user", user);
-
return new JsonResult(user);
-
}
=========================================================================================
@RequestBody
@RequestBody 註解則是將 HTTP 請求正文插入方法中,使用適合的 HttpMessageConverter 將請求體寫入某個物件。
作用:
-
1) 該註解用於讀取Request請求的body部分資料,使用系統預設配置的HttpMessageConverter進行解析,然後把相應的資料繫結
-
到要返回的物件上;
-
2) 再把HttpMessageConverter返回的物件資料繫結到 controller中方法的引數上。
使用時機:
A) GET、POST方式提時, 根據request header Content-Type的值來判斷:
-
application/x-www-form-urlencoded, 可選(即非必須,因為這種情況的資料@RequestParam, @ModelAttribute
-
也可以處理,當然@RequestBody也能處理);
-
multipart/form-data, 不能處理(即使用@RequestBody不能處理這種格式的資料);
-
其他格式, 必須(其他格式包括application/json, application/xml等。這些格式的資料,必須使用@RequestBody來處理);
B) PUT方式提交時, 根據request header Content-Type的值來判斷:
application/x-www-form-urlencoded, 必須;multipart/form-data, 不能處理;其他格式, 必須;
說明:request的body部分的資料編碼格式由header部分的Content-Type指定;
例如:
-
@RequestMapping(value = "user/login")
-
@ResponseBody
-
// 將ajax(datas)發出的請求寫入 User 物件中
-
public User login(@RequestBody User user) {
-
// 這樣就不會再被解析為跳轉路徑,而是直接將user物件寫入 HTTP 響應正文中
-
return user;
-
}
相關文章
- @responseBody註解的使用
- @ResponseBody註解和@RequestBody註解使用
- SpringMVC的@ResponseBody註解說明SpringMVC
- SpringMVC:@ResponseBody註解與HttpServletResponse物件SpringMVCHTTPServlet物件
- 主動寫入流對@ResponseBody註解的影響
- @RequestParam,@RequestBody,@ResponseBody,@PathVariable註解的一點小總結
- @Configuration, @Bean 註解的作用Bean
- 好程式設計師Java分享SpringMVC之@ResponseBody註解程式設計師JavaSpringMVC
- @GrpcServise 註解的作用和使用RPC
- coding++:@DisallowConcurrentExecution 註解的作用
- JAVA註解的總結及其作用Java
- springboot的註解的作用說明(全)Spring Boot
- SpringMVC原始碼剖析5:訊息轉換器HttpMessageConverter與@ResponseBody註解SpringMVC原始碼HTTP
- 【Spring註解驅動開發】使用@Scope註解設定元件的作用域Spring元件
- [20211026]奇怪註解不起作用.txt
- 註解式專案開發!詳細解析Java中各個註解的作用和使用方式Java
- springMVC @ResponseBody 原理SpringMVC
- Java中的註解-自定義註解Java
- 解引符 *的作用
- Java註解解析-搭建自己的註解處理器(CLASS註解使用篇)Java
- SpringBoot如何優雅的使用@ResponseBody返回圖片Spring Boot
- JAVA-註解(2)-自定義註解及反射註解Java反射
- 註解專題(一)Java元註解,內建註解Java
- SpringMVC註解和非註解(xml)的方法的異同點SpringMVCXML
- Java註解-後設資料、註解分類、內建註解和自定義註解Java
- JDK註解的引入JDK
- springboot的@ConditionalOnBean註解Spring BootBean
- Java註解的使用Java
- SpringMvc的常用註解SpringMVC
- @Mapper註解的使用APP
- 註解@PropertySource的使用
- 【Spring註解】事務註解@TransactionalSpring
- 自定義註解以及註解在反射中的應用反射
- 註解
- let _this = this;作用講解
- @Import與@ImportResource註解的解讀Import
- 自定義註解+反射 實現給註解新增功能的效果反射
- Java註解詳解「註解專案實戰」Java