在spring4.1后,提供了新的方法可以作为jsonp的调用.
1.response 响应类型为 application/JavaScript
2.进行json请求的URL中需要携带参数 jsonp 或 callback,并指定值。
3.针对显式注解 @ResponseBody 的方法 (我们本来就是直接响应JSON的),我们需要做特殊处理,使用 MappingJacksonValue 进行封装处理。
@RequestMapping(value="/list") @ResponseBody public Object list(String callback) { CatalogResult result = catalogService.getCatalogs(); if (StringUtils.isBlank(callback)) { //需要把result转换成字符串 return result; } MappingJacksonValue mappingJacksonValue = new MappingJacksonValue(result); mappingJacksonValue.setJsonpFunction(callback); return mappingJacksonValue; }例如 http://xxx/xxx/list?callback=myfunName 或 http://xxx/xxx/list??jsonp=myfunName 返回值为 myfunName({....(json数据)}) 那么只要在js需要调用jsonp的地方稍加处理就能够跨域调用数据了。