好程式設計師Java分享SpringMVC之@ResponseBody註解
好程式設計師Java 分享 SpringMVC 之 @ResponseBody 註解,本章我們學習到 SpringMVC 的伺服器端如何提供資料查詢服務,這裡需要使用兩個重要的註解: @ResponseBody 和 @RestController 。
@ResponseBody 註解
在前面使用SpringMVC 時, Controller 中的方法返回值會透過檢視處理器 ViewResolver 處理為頁面的 URL ,然後跳轉到對應頁面中,如下面例子返回的 hello ,將轉換為 /WEB-INF/pages/hello.jsp
@Controller public class UserController{ @RequestMapping(“/login”) public String login(){ return “hello”; } }
有時候我們需要用Controller 實現網路服務介面,比如:商品查詢、查詢天氣、新聞資料等。就不需要進行頁面跳轉而是直接返回資料。
這時候我們可以在方法上,新增註解:@ResponseBody
@Controller public class UserController{ @ResponseBody @RequestMapping(“/login”) public String login(){ return “hello”; } }
在瀏覽器中直接顯示hello 文字,也就是說新增了 @ResponseBody 註解的方法,返回值會透過 HTTP 響應主體直接傳送給瀏覽器。
型別轉換器
預設情況下,使用@ResponseBody 返回的資料只能是 String 型別,其它型別返回時會出現異常:
這裡提示沒有對應的轉換器,這裡可以新增轉換器將資料轉換為特定的格式,如:xml 或 json 等, JSON 是資料通訊的主要格式,我們將新增一個 JSON 格式的轉換器。配置方法非常簡單,我們只需要新增jackson-databind依賴:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.7</version> </dependency>
Jackson 庫可以實現 Java 物件和 JSON 的相互轉換,引入 Jackson-databind 依賴後, SpringMVC 會自動新增 Jackson 的轉換器。
轉換自定義型別
接下來我們再進行測試,新增方法測試返回boolean 資料
@ResponseBody @RequestMapping("/login2") public boolean login2(){ return false; }
我們進行資料查詢時,需要返回自定義型別的資料,如:使用者、商品、訂單、文章等,這裡我們測試返回自定義型別:
public class User { private int id; private String username; private String birthday; private String sex; private String address; //新增get\set\構造方法
...
} @ResponseBody @RequestMapping("/login3") public User login3(){ User user = new User(1, "張三", "1990-2-1", "男", "武漢"); return user; }
可以看到User物件被轉換成了JSON格式。再測試物件集合:
@ResponseBody @RequestMapping("/login4") public List<User> login4(){ List<User> users = new ArrayList<>(); users.add(new User(1, "張三", "1990-2-1", "男", "武漢")); users.add(new User(2, "李四", "1990-2-1", "男", "武漢")); users.add(new User(3, "王五", "1990-2-1", "男", "武漢")); return users; }
List集合被轉換成了JSON陣列,我們從資料庫查詢到資料後都會放入對應的實體類集合中,然後把集合轉換成JSON格式傳送給客戶端,有了@ResponseBody和Jackson轉換器可以很容易的實現。
@RestController 註解
如果一個Controller 類主要用於做網路服務,所有的方法都需要新增 @ResponseBody 註解,我們可以在類的前面加上 @RestController 註解,這個註解相當於 @Controller+@ResponseBody ,也就是說它既可以用於宣告類為 Controller ,也可以給所有方法自動新增 @ResponseBody 註解。
總結
本章我們學習了SpringMVC中的@ResponseBody註解,有該註解的方法,可以將資料直接返回給客戶端,我們還學習了利用Jackson庫提供的轉換器,將自定義型別轉換為JSON格式,實際專案中有很多地方需要它們來提供查詢資料的服務。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2654622/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師教程分享Java註解和運用註解程式設計程式設計師Java
- 好程式設計師Java學習路線分享SpringMVC之MVC概述程式設計師JavaSpringMVC
- 好程式設計師Java教程分享Java之設計模式程式設計師Java設計模式
- 好程式設計師Java學習路線分享SpringMVC之請求和響應程式設計師JavaSpringMVC
- 好程式設計師分享SpringBoot須掌握的註解程式設計師Spring Boot
- SpringMVC:@ResponseBody註解與HttpServletResponse物件SpringMVCHTTPServlet物件
- SpringMVC的@ResponseBody註解說明SpringMVC
- 好程式設計師Java培訓分享註解與反射原理說明程式設計師Java反射
- 好程式設計師Java學習路線之SpringMVC之基本配置程式設計師JavaSpringMVC
- 好程式設計師分享java設計模式之享元模式程式設計師Java設計模式
- 好程式設計師Java培訓分享Java程式設計技巧程式設計師Java
- 好程式設計師Java教程分享Java面試題之Hibernate程式設計師Java面試題
- 好程式設計師Java培訓分享Java之反射技術程式設計師Java反射
- 好程式設計師Java教程分享Vue外掛之Axios程式設計師JavaVueiOS
- 好程式設計師Java分享MySQL之SQL入門(一)程式設計師JavaMySql
- 好程式設計師Java培訓分享Java程式設計師技能提升指南程式設計師Java
- 好程式設計師Java教程分享Java難點解析之泛型程式設計師Java泛型
- 好程式設計師Java教程分享Java語法程式設計師Java
- 好程式設計師Java培訓分享For迴圈詳解程式設計師Java
- 好程式設計師Java教程分享List介面程式設計師Java
- 好程式設計師Java教程分享javaweb框架程式設計師JavaWeb框架
- 好程式設計師Java分享Spring框架之AOP的基本配置程式設計師JavaSpring框架
- 好程式設計師Java乾貨分享Spring框架之IOC原理程式設計師JavaSpring框架
- 好程式設計師Java培訓Java最常用的五個註解程式設計師Java
- 好程式設計師Java教程分享Java之包裝類與常用類程式設計師Java
- 好程式設計師Java培訓分享Java程式設計師常用的工具類庫程式設計師Java
- 好程式設計師Java培訓分享20個Java程式設計師基礎題程式設計師Java
- 好程式設計師Java教程分享Java面試妙招程式設計師Java面試
- 好程式設計師Java教程分享Java開發工具程式設計師Java
- 好程式設計師Java培訓分享如何快速入門Java程式設計程式設計師Java
- 好程式設計師Java培訓分享SpringBoot -YAML程式設計師JavaSpring BootYAML
- 好程式設計師Java分享SQL語言之索引程式設計師JavaSQL索引
- 好程式設計師java分享spring框架精講程式設計師JavaSpring框架
- 好程式設計師Java學習路線分享MyBatis之Spring整合程式設計師JavaMyBatisSpring
- 好程式設計師Java學習路線分享MyBatis之基本使用程式設計師JavaMyBatis
- 好程式設計師分享java8新特性之Lambda表示式程式設計師Java
- 好程式設計師Java培訓分享Java面試題之Java集合篇三程式設計師Java面試題
- 好程式設計師Java教程分享Java8.0新特性之Lambda表示式程式設計師Java