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")
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
|