springmvc 数据传输跨域问题 access control allow origin——JSONP数据格式解决

来源:互联网 发布:julius it 编辑:程序博客网 时间:2024/05/21 17:44

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

0 0
原创粉丝点击