@ResponseBody使用须知
-------------------siwuxie095
@ResponseBody 使用須知
使用 @ResponseBody 注解映射響應(yīng)體
@ResponseBody 注解可被應(yīng)用于方法上,標(biāo)志該方法的返回值
應(yīng)該被直接寫回到 HTTP 響應(yīng)體中去(而不會(huì)被被放置到 Model
中 或 被解釋為一個(gè)視圖名)
在實(shí)際開(kāi)發(fā)中,返回 JSON 是最常見(jiàn)的一種方式,而 SpringMVC
提供了一種更為簡(jiǎn)便的方式輸出 JSON(非 JSP 頁(yè)面),那就是使
用 @ResponseBody 注解
在輸出 JSON 時(shí),需要 Jackson 的 jar 包支持,2.x 版本需要導(dǎo)入
如下三個(gè) jar 包:
(1)jackson-core
https://github.com/FasterXML/jackson-core/wiki
http://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/
(2)jackson-annotations
https://github.com/FasterXML/jackson-annotations/wiki
http://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-annotations/
(3)jackson-databind
https://github.com/FasterXML/jackson-databind/wiki
http://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/
「截止目前(2018/03/01),Jackson 最新版本為 2.9.4」
例如:
編寫一個(gè)實(shí)體類
User.java:
|
package com.siwuxie095.entity;
public class User {
private String userId; private String userName; private String userSex; private String userAge; public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserSex() { return userSex; } public void setUserSex(String userSex) { this.userSex = userSex; } public String getUserAge() { return userAge; } public void setUserAge(String userAge) { this.userAge = userAge; } @Override public String toString() { return "User [userId=" + userId + ", userName=" + userName + ", userSex=" + userSex + ", userAge=" + userAge + "]"; } } |
編寫一個(gè) Controller 類
UserController.java:
|
package com.siwuxie095.controller;
import java.util.ArrayList; import java.util.List;
import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody;
import com.siwuxie095.entity.User;
@Controller public class UserController {
/** * 注意:這里返回類型不是 ModelAndView * * 使用 @ResponseBody 注解將返回的 POJO * 對(duì)象的 List 集合序列化成 JSON */ @RequestMapping("/show/hi") @ResponseBody public List<User> show() { List<User> userList = new ArrayList<User>(); for (int i = 0; i < 10; i++) { User user = new User(); user.setUserId("100" + i); user.setUserName("小明-"+i); user.setUserSex("男"); user.setUserAge("1" + i); userList.add(user); } return userList; } } |
訪問(wèn)路徑:
http://localhost:8080/工程名/show.do
原理:
當(dāng)一個(gè)處理請(qǐng)求的方法被標(biāo)記為 @ResponseBody 時(shí),就說(shuō)明
該方法需要輸出其它視圖(JSON、XML),SpringMVC 通過(guò)
已定義的轉(zhuǎn)化器做轉(zhuǎn)化輸出,默認(rèn)輸出 JSON
注:源碼詳見(jiàn) spring-webmvc 的 jar 包中第二個(gè)包 org.springframework.
web.servlet.config 中第一個(gè)類 AnnotationDrivenBeanDefinitionParser
值得注意的是:
@RequestBody 是寫在方法參數(shù)前,作用于方法參數(shù)
@ResponseBody 是寫在方法上,作用于方法返回值
參考鏈接:
參考鏈接1,參考鏈接2,參考鏈接3
附:
推薦一個(gè)模擬發(fā)送請(qǐng)求的 Chrome 插件 Advanced REST Client,非常好用!
https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo
【made by siwuxie095】
總結(jié)
以上是生活随笔為你收集整理的@ResponseBody使用须知的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: xilinx7中管脚mrcc和srcc_
- 下一篇: Python机器学习笔记:奇异值分解(S