springmvc 数据传输跨域问题之JSONP数据格式
json和jsonp的区别自行搜索啦~~
需要用到的包:这个是@ResponseBody返回数据的转换包
springmvc 在前端后端交互数据的时候,使用了跨域访问,一开始我只是用json数据传输,发现以下问题:
就是不允许跨域请求,所以后端数据传输需要转换为jsonp的格式。
我是这样解决的:控制器方法
在springmvc.xml中配置:
import org.springframework.http.converter.json.MappingJacksonValue;
@Controller
@RequestMapping("/news")
public class YController {
@RequestMapping(value = "/newsIndex",method = { RequestMethod.POST,RequestMethod.GET })
public @ResponseBody Object newsIndex(HttpServletRequest request, String callback) throws Exception {
Map<String, String[]> parameterMap = request.getParameterMap(); //打印前端调用函数
YunshanSqlEvent yunshanSqlEvent = new YunshanSqlEvent();
List<String> list = new ArrayList<String>();
yunshanEventList.add("1");
yunshanEventList.add("2");
System.out.println(list);
System.out.println(JSON.toJSON(list));
//转换jsonp格式
MappingJacksonValue mappingJacksonValue = new MappingJacksonValue(list);
mappingJacksonValue.setJsonpFunction(callback);
return mappingJacksonValue;
}
}
参数:String callback
这个是前端的回调函数,需要注意他的函数名,我这边的前端就是用Jquery写的并且名字是callback。
在用这个方法进行数据的转换,最后为jsonp数据
MappingJacksonValue mappingJacksonValue = new MappingJacksonValue(list);
mappingJacksonValue.setJsonpFunction(callback);
最后返回这个对象,提供接口给前端就可以访问啦。例如这个方法的接口为:192.*.*.*:8080/ProjectName/news/newsIndex.action
谢谢。
参考:
http://www.cnblogs.com/leechenxiang/p/5783467.html
http://www.jianshu.com/p/2eb45e090c83