Springmvc 4.1新特性-jsonp支持
来源:互联网 发布:js中获取元素的方法 编辑:程序博客网 时间:2024/05/18 13:43
1、模型
- public class User implements Serializable {
- public static interface OnlyIdView {}
- public static interface OnlyNameView {}
- public static interface AllView extends OnlyIdView, OnlyNameView {}
- @JsonView(OnlyIdView.class)
- private Long id;
- @JsonView(OnlyNameView.class)
- private String name;
- ……
- }
定义了三个视图:OnlyIdView、OnlyNameView和AllView。
2、控制器
- @RestController
- public class JacksonJsonViewController {
- @RequestMapping("/jackson1")
- @JsonView(User.OnlyIdView.class)
- public User test1() {
- return new User(1L, "zhangsan");
- }
- @RequestMapping("/jackson2")
- @JsonView(User.OnlyNameView.class)
- public User test2() {
- return new User(1L, "zhangsan");
- }
- @RequestMapping("/jackson3")
- @JsonView(User.AllView.class) //可以省略
- public User test3() {
- return new User(1L, "zhangsan");
- }
- }
使用@JsonView控制渲染哪些数据。
3、使用AbstractJsonpResponseBodyAdvice 实现支持jsonp
- @Order(2)
- @ControllerAdvice(basePackages = "com.github")
- public class JsonpAdvice extends AbstractJsonpResponseBodyAdvice {
- public JsonpAdvice() {
- super("callback", "jsonp"); //指定jsonpParameterNames
- }
- }
然后访问如http://localhost:8080/json?callback=callback即可得到JSONP响应:callback({"user":{"id":1,"name":"zhangsan"}});。
@ContollerAdvice的作用请参考《Spring3.2新注解@ControllerAdvice》,basePackages用于指定对哪些包里的Controller起作用。
4、使用ResponseBodyAdvice也可以对响应体做一些处理,如下自定义MyResponseBodyAdvice
我们之前实现的JsonpAdvice其继承自AbstractJsonpResponseBodyAdvice,而AbstractJsonpResponseBodyAdvice继承自ResponseBodyAdvice,其作用是在响应体写出之前做一些处理:
- @Order(1)
- @ControllerAdvice(basePackages = "com.github")
- public class MyResponseBodyAdvice implements ResponseBodyAdvice<Object> {
- @Override
- public boolean supports(MethodParameter methodParameter, Class<? extends HttpMessageConverter<?>> converterType) {
- return methodParameter.getMethod().getReturnType().isAssignableFrom(User.class);
- }
- @Override
- public Object beforeBodyWrite(
- Object obj, MethodParameter methodParameter, MediaType mediaType,
- Class<? extends HttpMessageConverter<?>> converterType,
- ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
- User user = ((User)obj);
- user.setName("---" + user.getName() + "---");
- return user;
- }
- }
supports指定支持哪些类型的方法进行处理,此处是返回值为User的;2、我们得到User对象然后在名字前后拼上”---“ ;3、可以指定多个ResponseBodyAdvice,使用@Order指定顺序。访问http://localhost:8080/jackson2?callback=callback可以看到效果。
0 0
- Springmvc 4.1新特性-jsonp支持
- SpringMVC 4.1 新特性(一)JSONP的支持
- SpringMVC 4.1 新特性(一)JSONP的支持
- SpringMVC 4.1使用ResponseBodyAdvice支持jsonp
- springmvc支持jsonp
- SpringMvc 支持 jsonP
- springmvc支持jsonp
- SpringMVC 支持JSONP
- springMVC 新特性
- springmvc支持json和jsonp类型数据
- springmvc支持json和jsonp类型数据
- Spring4.1新特性——jsonp
- SpringMVC 4.1 新特性(二)内容协商视图
- SpringMVC 4.1 新特性(二)内容协商视图
- Spring MVC 4.1 支持jsonp
- Spring MVC 4.1 支持jsonp
- SpringMVC支持Jsonp跨域请求的方法
- 扩展springMVC消息转换器来支持jsonp数据格式
- 我的sublime setting
- Manifest.xml 入门基础 (二) <uses-permission> 标签
- 关于字符串输出的问题
- 【P2P】Peer-To-Peer综述(1)
- 要想写好一个jquery插件就来这看看吧
- Springmvc 4.1新特性-jsonp支持
- imx6q平台的gpio配置方法
- profile of Linux For Java/Maven..
- linux 内核oops调试技术
- C++ STL string 大小写转换时的 no matching function for call to ‘transform 错误
- Python 2.7.x 和 3.x 版本的重要区别
- 搭建maven私服nexus
- Lua之table
- imx6 添加matrix keypad