上手spring boot項目(四)之springboot如何返回json數據

在springboot整合thymeleaf中,常常會在HTML頁面中接收來自服務器的json數據,而後處理json數據並在頁面上渲染。那麼如何在服務器中返回json類型的數據呢?前端

1.使用@ResponseBody註解

該註解用於將 Controller 的方法返回的對象,經過 HttpMessageConverter 接口轉換爲指定格式的spring

數據如:json,xml 等,經過 Response 響應給客戶端json

在controller的方法上增長@RespongBodyspringboot

@RequestMapping("/findAll.do")
@ResponseBody
public List<SysCategory> findAll(){ //查詢分類信息,具體的service層方法略 List<SysCategory> categoryList = categoryService.findAll(); System.out.println(categoryList); return categoryList; } 

Java控制檯打印出的結果以下:服務器

 接下來是在前端接收服務器返回的json數據app

 $.get("/category/findAll.do",{},function (data) {
            console.log(data);
},"json");

在頁面控制檯打印出的結果以下:spa

 能夠看到 服務器端的返回的確實是json類型的數據3d

2. 使用@RestController註解

@RestController是@ResponseBody和@Controller二者的結合,使用這個註解後就無需再用那兩個註解。
@RestController
@RequestMapping("/category") public class CategoryController { @Autowired private CategoryService categoryService; @RequestMapping("/findAll.do") public List<SysCategory> findAll(){ List<SysCategory> categoryList = categoryService.findAll(); System.out.println(categoryList); return categoryList; } }

發送的請求和在controller層的業務邏輯和第一種方法同樣。code

在頁面控制檯打印出的結果以下:xml

3.使用response將數據寫回客戶端(不推薦)

String obj = "[SysCategory{id=1, name='JavaSe'}, SysCategory{id=2, name='JavaEE'}, SysCategory{id=3, name='前端'}, SysCategory{id=4, name='其餘'}]"
ObjectMapper mapper = new ObjectMapper(); response.setContentType("application/json;charset=utf-8"); mapper.writeValue(response.getOutputStream(),obj);

在頁面控制檯打印出的結果以下:

 

相關文章
相關標籤/搜索