您好,登錄后才能下訂單哦!
好程序員Java分享SpringMVC之@ResponseBody注解,本章我們學習到SpringMVC的服務器端如何提供數據查詢服務,這里需要使用兩個重要的注解:@ResponseBody和@RestController。
?????在前面使用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格式,實際項目中有很多地方需要它們來提供查詢數據的服務。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。