springmvc支持jsonp

And an additional ControllerAdvice like this (see reference documentation):

@ControllerAdvice
public class JsonpAdvice extends AbstractJsonpResponseBodyAdvice {

    public JsonpAdvice() {
        super("callback");
    }
}

That's it.


1,新建JsonpAdvice控制器增强

继承org.springframework.web.servlet.mvc.method.annotation.AbstractJsonpResponseBodyAdvice类

      
      
1
2
3
4
5
6
7
8
      
      
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.AbstractJsonpResponseBodyAdvice;
@ControllerAdvice(basePackages = "com.xxx.web.controller.jsonp")
public class JsonpAdvice extends AbstractJsonpResponseBodyAdvice {
public JsonpAdvice() {
super( "callback", "jsonp");
}
}

2,需要jsonp的controller类使用@RestController注解

      
      
1
2
3
4
5
6
7
8
9
10
      
      
@RestController
@RequestMapping( "/test")
public class RankingListController {
@ResponseBody
@RequestMapping(value = "/getPopularity", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
//注意这里只能返回对象,JavaBean或JsonObject都可以,不能用String
public JSONObject getPopularity() {
return JSON.parseObject((String) redisClient.getObject(popularityRankingListKey));
}
}

3,调用

方式一
      
      
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
      
      
<html>
<head>
<meta charset="UTF-8" />
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"> </script>
</head>
<body>
<div>
请用Chrome浏览器打开,返回结果在F12 Console日志显示。
</div>
<script language="JavaScript">
$(document).ready(function() {
$.ajax({
url:'http://localhost:8080/test/getPopularity',
dataType:'jsonp',
success:function(data){
console.log("返回Json:")
console.log(data)
}
});
});
</script>
</body>
</html>
方式二
      
      
1
      
      
http://localhost:8080/test/getPopularity?callback=jsonp


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值