您的位置:首页 > 编程语言 > Java开发

springmvc支持jsonp

2016-08-23 13:13 411 查看
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类

12345678
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注解

12345678910
@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,调用


方式一

1234567891011121314151617181920212223
<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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: