加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

JSONP以及Spring对象MappingJacksonValue的使用方式

发布时间:2020-12-16 18:43:19 所属栏目:百科 来源:网络整理
导读:? 什么是JSONP?,以及Spring对象MappingJacksonValue的使用方式 原文: https://blog.csdn.net/weixin_38111957/article/details/81842460 一,引言 最近小编在写这样一套服务端的代码,说白了就是提供数据和处理一些业务逻辑。这个服务端是单独的一个工程

?

什么是JSONP?,以及Spring对象MappingJacksonValue的使用方式


原文: https://blog.csdn.net/weixin_38111957/article/details/81842460

一,引言

最近小编在写这样一套服务端的代码,说白了就是提供数据和处理一些业务逻辑。这个服务端是单独的一个工程,提供给PC端,移动端(IOS,Android)等多个终端进行调用。在调试过程中发现这样的一个异常,才了解到我们的JS请求是不能跨域请求的。为了考虑安全性的问题,JS只能访问相同域名,相同端口号的地址。但是JS能跨域请求JS,正好利用了这个因素,才有了JSONP这个解决方案。错误提示信息如下:

Failed to load http://127.0.0.1:8081/rest/itemcat/all?callback=category.getDataService: No ‘Access-Control-Allow-Origin‘ header is present on the requested resource. Origin ‘http://localhost:8082‘ is therefore not allowed access.

二,什么是JSONP?

JSONP其实是解决JS跨域调用数据的一种方案,JS跨域直接请求数据是不可以的,但是JS跨域请求JS脚本是可以的。可以把返回的数据封装成一个JS脚本,把数据作为。参数传递到这个方法中,做一个方法的调用的js跨域请求可以得到此脚本数据,从而获取到想要到数据。执行流程如下:

三,JSONP使用方式

那使用JSONP请求服务端,那服务端该怎么返回数据呢看如下代码:

再给大家科普小知识:在使用RequestMapping注解的时候,也可以设置返回JSON数据的字符编码哟!

produce = MediaType.APPLICATION_JSON_VALUE +“; charset = utf-8“

在这只提供了服务端怎么写,具体JS怎么调用麻烦各位小伙伴自行学习下,因为调用是前端工程师写的,没源码给我,如果有小伙伴实在没找到,那就在评论区留言,小编回头找前端工程师要要哈哈!

  1. @RequestMapping(value = "/itemcat/all",produces = MediaType.APPLICATION_JSON_VALUE+";charset=utf-8")
  2. @ResponseBody
  3. public Object getItemCatList(String callback){
  4. //需要返回的数据
  5. CatResult itemCat = itemCatService.getItemCat();
  6. ?
  7. //callback 这个是js调用时传过来的参数,内容就是回调的方法名
  8. ?
  9. //第一种方式 ,把我们返回的数据转JSON后,然后拼接我们在js中定义的方法名,把json数据作为参数传递进去
  10. //返回 String
  11. /*String jsonStr = JsonUtils.objectToJson(itemCat);
  12. return callback + "("+jsonStr+");";*/
  13. ?
  14. //第二种方式,使用Spring自带对象,前提是需要在Srping4.0的版本才有的哟。
  15. //返回 Object
  16. MappingJacksonValue mappingJacksonValue = new MappingJacksonValue(itemCat);
  17. mappingJacksonValue.setJsonpFunction(callback);
  18. return mappingJacksonValue;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读