什么是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;

JSONP以及Spring对象MappingJacksonValue的使用方式的更多相关文章

  1. Spring实现Ioc的多种方式--控制反转、依赖注入、xml配置的方式实现IoC、对象作用域

    Spring实现Ioc的多种方式 一.IoC基础 1.1.概念: 1.IoC 控制反转(Inversion of Control) IoC是一种设计思想. 2.DI 依赖注入 依赖注入是实现IoC的一 ...

  2. 【Spring】Spring之向 IOC 容器注入对象的三种方式

    关于Spring的搭建可参见:浅析Spring框架的搭建.在测试之前还是应该先将环境配置好,将相关Jar包导进来.Spring创建的对象,默认情况下都是单例模式,除非通过scope指定. 向IOC容器 ...

  3. spring中创建bean对象的三种方式以及作用范围

    时间:2020/02/02 一.在spring的xml配置文件中创建bean对象的三种方式: 1.使用默认构造函数创建.在spring的配置文件中使用bean标签,配以id和class属性之后,且没有 ...

  4. spring ioc三种注入方式

    spring ioc三种注入方式 IOC ,全称 (Inverse Of Control) ,中文意思为:控制反转 什么是控制反转? 控制反转是一种将组件依赖关系的创建和管理置于程序外部的技术. 由容 ...

  5. Spring学习总结(一)——Spring实现IoC的多种方式

    控制反转IoC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IoC的一种方法,也有人认为DI只是IoC的另一种说法.没有IoC的程序中我们使用面向对象编程对象的创 ...

  6. Spring MVC 前后端 Json 方式交互和处理

    众所周知,在mvc中,数据是在各个层次之间进行流转是一个不争的事实. 而这种流转,也就会面临一些困境,这些困境,是由于数据在不同世界中的表现形式不同而造成的.   数据在页面上是一个扁平的,不带数据类 ...

  7. Spring实现IoC的多种方式

    目录 一.使用XML配置的方式实现IOC 二.使用Spring注解配置IOC 三.自动装配 四.零配置实现IOC 五.示例下载 控制反转IoC(Inversion of Control),是一种设计思 ...

  8. spring配置datasource三种方式

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp34 spring配置datasource三种方式 1.使用org.spri ...

  9. spring实例化bean三种方式

    我看了这篇博文<https://www.cnblogs.com/zhanglei93/p/6221546.html>,以及自己实践总结了关于spring实例化bean对象的3种方式. 一. ...

随机推荐

  1. 5.Python的语言特点

    前言   Python有哪些语言特点?可以列出的特点很多,例如,<Python核心编程>第二版列出了十多条特点.本文的三个特点是笔者学习Python的体会,其他特点有体会之后再写,笔者是这 ...

  2. ruby Time类与Date类

    Time类用于表示时间.时间除了表示年月日时分秒的信息外,还包含了表示地域时差的时区(time zone)信息.例如我们可以计算中国当前时间是国际协调时间的几点 Date类只用于表示年月日.因此,相对 ...

  3. DHT11资料

    产品名:温湿度传感器 型号:DHT11 厂商:奥松电子 参数: 相对湿度: 分辨率:0.1%RH        16Bit 精度:25℃  正负 %2 温度: 分辨率:0.1%RH        16 ...

  4. 多线程编程之Apue3rd_Chapter15.10之posix信号量

    看了APUE的chapter15,只重点看了15.10,学习了posix信号量.Posix信号量比起xsi信号量的优点是性能更好,在Linux3.2.0平台上性能提升很大.其中命名信号量使用方法如下. ...

  5. R语言学习笔记(十六):构建分割点函数

    选取预测概率的分割点 cutoff<- function(n,p){ pp<-1 i<-0 while (pp>=0.02) { model.predfu<-rep(&q ...

  6. android开发过程中项目中遇到的坑----布点问题

    我们在红点push 的到达和点击的地方,都加了布点.后来功能上了线,发现,每天的点击都比到达高! 这肯定不科学. 赶紧查问题,打开程序,发红点,关闭程序,布点上传.没问题.数据部门可以收到红点啊! 从 ...

  7. Python3全栈学习目录

    http://www.cnblogs.com/wupeiqi/articles/4938499.html 文辉整理: http://blog.51cto.com/9272317/1869914

  8. 创龙TMS320C6748开发板串口和中断学习笔记

    1. 硬件上,底板有2个串口,UART1和UART2(使用了MAX3232电平转换芯片),其中UART2也可以转RS485的. 2. 看下数据手册部分,不过一直不理解过采样的意思,16字节的FIFO ...

  9. 多图片上传(base64方式传至后台)

    <!DOCTYPE html><html><head> <meta http-equiv="X-UA-Compatible" conten ...

  10. ActiveRecord-连接多张表之单表继承

    ActiveRecord-连接多张表之单表继承 1. 基本概念 Rails提供了两种机制,可以将复杂的面向对象模型映射为关系模型,即所谓的单表继承(single-table inheritance)和 ...