今天才明白@responseBody和异步ajax的关系:以前听xxx说异步的controller方法都要加注解@responseBody,不然就请求不到方法,我也就记住了,可今天才发现,原来有些异步请求的controller也可以不用@responseBody注解,也是可以请求到对应的方法的。根本原因还是我没有搞明白@responseBody注解的应用场景。
@responseBody的应用场景:
作用:
该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
使用时机:
返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;
而以前说异步请求的controller方法都要有@responseBody注解,是因为那时用的异步都设定了返回数据类型为json,所以必须用@responseBody注解。而有些异步请求返回的jsp,或者是html类型的数据(load()方法请求返回的内容就不是json数据),此时controller映射的方法上就不能适应@responseBody注解了,否则会映射不到请求路径!
下面是@RequsetBody的作用: