springmvc支持jsonp

来源:互联网 发布:php简历项目经验 编辑:程序博客网 时间:2024/05/29 17:06

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

@ControllerAdvicepublic 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
原创粉丝点击