Spring-boot系列(14):jsonp的用法

上文粗略的讲了一下jsonp的使用,但是实际过程中很少没有返回的。
springboot支持增强控制器注解,实现选择性返回json或者jsonp。

1.新建jsonp基类

@ControllerAdvice(basePackages = "com.controller")
public class Jsonp extends AbstractJsonpResponseBodyAdvice {
    public Jsonp() {
        //构造函数
        super("callback","jsonp");
    }

}

增强注解,对应这个包com.controller下。继承AbstractJsonpResponseBodyAdvice ,根据父类方法参数名生成对应的jsonp数据。上面的super表示访问地址如果参数是callback=xxx或者jsonp=xxx,就会把xxx的值作为回调名字返回
如:http://localhost:8080/index?callback=callback
返回:

/**/callback({“id”:12,”name”:”苍老师”});

2.新建一个vo类返回对象值

继承一下上面的类即可

public class Student extends Jsonp {
    private int id;
    private String name;
。。。
}

3.控制器

直接返回对象即可,如果中文乱码设置一下response的字符集即可。

@Controller
@RequestMapping(value = "", method = RequestMethod.GET)
public class IndexController {
    // @CrossOrigin(origins = "*")
    // @CrossOrigin
    @RequestMapping(value = "/index")
    @ResponseBody
    public Student index(HttpSession session, HttpServletResponse response) throws IOException {
        System.out.println("我的sessionId为" + session.getId());
        Student student = new Student();
        student.setId(12);
        student.setName("苍老师");

        response.setCharacterEncoding("utf-8");
      return student;
    }
    }

访问地址:http://localhost:8080/index
返回正常json字符串

{“id”:12,”name”:”苍老师”}

访问带参数:http://localhost:8080/index?callback=callback
返回:

/**/callback({“id”:12,”name”:”苍老师”});

ajax写法

注释的地方可以省略,用默认即可。

$.ajax({
            dataType:'jsonp',
            //jsonp:"callback", //传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)
            //jsonpCallback:"flightHandler",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据
            url:"http://192.168.1.196:8080/index",
            success:function(data){
                console.log(data);
            }



        })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值