@ResponseBody使用須知


-------------------siwuxie095

   

   

   

   

   

   

   

   

@ResponseBody 使用須知

   

   

使用 @ResponseBody 注解映射響應體

   

   

@ResponseBody 注解可被應用於方法上,標志該方法的返回值

應該被直接寫回到 HTTP 響應體中去(而不會被被放置到 Model

被解釋為一個視圖名)

   

   

   

在實際開發中,返回 JSON 是最常見的一種方式,而 SpringMVC

提供了一種更為簡便的方式輸出 JSON(非 JSP 頁面),那就是使

用 @ResponseBody 注解

   

   

   

在輸出 JSON 時,需要 Jackson 的 jar 包支持,2.x 版本需要導入

如下三個 jar 包:

   

1jackson-core

   

https://github.com/FasterXML/jackson-core/wiki

   

http://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/

   

   

2jackson-annotations

   

https://github.com/FasterXML/jackson-annotations/wiki

   

http://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-annotations/

   

   

3jackson-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」

   

   

   

   

   

例如:

   

編寫一個實體類

   

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 + "]";

}

 

}

   

   

   

編寫一個 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

* 對象的 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;

 

}

 

 

}

   

   

   

訪問路徑:

   

http://localhost:8080/工程名/show.do

   

   

   

   

   

原理:

   

當一個處理請求的方法被標記為 @ResponseBody 時,就說明

該方法需要輸出其它視圖(JSON、XML),SpringMVC 通過

已定義的轉化器做轉化輸出,默認輸出 JSON

   

   

   

注:源碼詳見 spring-webmvc 的 jar 包中第二個包 org.springframework.

web.servlet.config 中第一個類 AnnotationDrivenBeanDefinitionParser

   

   

   

   

   

   

值得注意的是:

   

@RequestBody 是寫在方法參數前,作用於方法參數

   

@ResponseBody 是寫在方法上,作用於方法返回值

   

   

   

參考鏈接:

   

參考鏈接1參考鏈接2參考鏈接3

   

   

   

   

   

附:

   

推薦一個模擬發送請求的 Chrome 插件 Advanced REST Client,非常好用!

   

https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo

   

   

   

   

   

   

   

   

【made by siwuxie095】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM