在springboot整合thymeleaf中,經常會在HTML頁面中接收來自服務器的json數據,然后處理json數據並在頁面上渲染。那么如何在服務器中返回json類型的數據呢?
1.使用@ResponseBody注解
該注解用於將 Controller 的方法返回的對象,通過 HttpMessageConverter 接口轉換為指定格式的
數據如:json,xml 等,通過 Response 響應給客戶端
在controller的方法上增加@RespongBody
@RequestMapping("/findAll.do")
@ResponseBody
public List<SysCategory> findAll(){ //查詢分類信息,具體的service層方法略 List<SysCategory> categoryList = categoryService.findAll(); System.out.println(categoryList); return categoryList; }
Java控制台打印出的結果如下:

接下來是在前端接收服務器返回的json數據
$.get("/category/findAll.do",{},function (data) {
console.log(data);
},"json");
在頁面控制台打印出的結果如下:

可以看到 服務器端的返回的確實是json類型的數據
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層的業務邏輯和第一種方法一樣。
在頁面控制台打印出的結果如下:

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);
在頁面控制台打印出的結果如下:

