`
fish119
  • 浏览: 149282 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

【转】两步使 Spring MVC 4.0 支持 JSONP

    博客分类:
  • Java
 
阅读更多

Step 1 : 添加JSONP转换器

public class JsonpHttpMessageConverter extends MappingJackson2HttpMessageConverter {
    @Override
    protected void writeInternal(Object object, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
        JsonEncoding encoding = getJsonEncoding(outputMessage.getHeaders().getContentType());
        JsonGenerator jsonGenerator = this.getObjectMapper().getFactory().createGenerator(outputMessage.getBody(), encoding);
        try {
            //ConfigContainer.JSONP_CALLBACK 为回调名称,如"callback"
            jsonGenerator.writeRaw(ConfigContainer.JSONP_CALLBACK);
            jsonGenerator.writeRaw('(');
            this.getObjectMapper().writeValue(jsonGenerator, object);
            jsonGenerator.writeRaw(");");
            jsonGenerator.flush();
        } catch (JsonProcessingException ex) {
            throw new HttpMessageNotWritableException("Could not write JSON: " + ex.getMessage(), ex);
        }
    }
}

 

step 2 : 添加配置

<mvc:annotation-driven>
      <mvc:message-converters register-defaults="true">
          <bean  class="...JsonpHttpMessageConverter" p:supportedMediaTypes="application/jsonp"/>
      </mvc:message-converters>
</mvc:annotation-driven>

 

ok!

test:

$.ajax({
        type: <your type>,
        url: <your url>,
        dataType: 'jsonp',
        jsonpCallback: 'JsonpCallback', //这个值要与第一步的ConfigContainer.JSONP_CALLBACK同名
        contentType: 'application/jsonp;charset=UTF-8',
    }).done(function (result) {
        //TODO
    }).fail(function (result, textStatus, info) {
    //TODO
    });
}

 

原文地址:http://my.oschina.net/gudaoxuri/blog/340936

分享到:
评论

相关推荐

    Asp.net MVC3 实现JSONP

    ASP.NET MVC3 实现 JSONP 是为了克服浏览器的同源策略限制,允许跨域数据交互。JSONP(JSON with Padding)是一种非标准但广泛接受的数据交换格式,它通过动态插入 `&lt;script&gt;` 标签来规避同源策略。下面将详细介绍...

    Jsonp在spring MVC系统中的前后台交互源码实例

    Jsonp(JSON with Padding)是资料格式 json 的一种“使用模式”,可以让网页从别的网域获取资料。 本资料 是 spring MVC系统中用jsonp进行跨域解析。可实现前后台交互。

    兼容IE6的spring mvc框架

    在这个场景中,"兼容IE6的spring mvc框架"意味着我们需要确保在使用Spring MVC 3.2版本开发的Web应用能够在IE6上正常运行。 **Spring MVC 3.2的关键特性:** 1. **模型-视图-控制器架构**:Spring MVC遵循MVC设计...

    在 Spring Web MVC 环境下使用 Dojo

    5. **数据绑定**:Dojo 控件如 DataGrid 可以通过 JSONP 或 CORS 从 Spring MVC 提供的 RESTful API 获取数据。确保服务器端支持跨域请求,或设置响应头以允许 JSONP 请求。 **四、DataGridTest 示例** 在你提供的...

    bboss mvc 通过jsonp实现跨站跨域远程访问

    标题中的“bboss mvc 通过jsonp实现跨站跨域远程访问”指的是使用bboss MVC框架来处理JSONP(JSON with Padding)请求,以克服浏览器的同源策略限制,实现跨域数据交互。bboss MVC是一个Java Web开发框架,它提供了...

    extjs4.0 MVC 示例代码

    下面将详细探讨EXTJS 4.0中的MVC概念以及在示例代码中可能涉及的关键知识点。 **1. MVC模式概述** MVC模式是一种软件设计模式,用于将业务逻辑、用户界面和数据存储分离。在EXTJS 4.0中,模型(Model)负责管理数据...

    day17代码:springBoot整合JSONP

    在本教程中,我们将深入探讨如何在Spring Boot项目中整合JSONP,以便实现跨域请求。JSONP(JSON with Padding)是一种广泛用于解决浏览器同源策略限制的技术,它允许JavaScript从不同源获取数据,这对于前后端分离的...

    spring + jdbc框架

    在这个项目中,我们看到Spring MVC被用来创建一个后端服务,该服务可以通过JSON数据格式与前端进行通信,同时也支持JSONP(JSON with Padding),这是一种跨域数据交互协议。 首先,让我们深入了解一下Spring MVC。...

    my jsonp with spring

    My jsonp 结合 spring 开发jsonp接口项目,具体demo参见: http://blog.csdn.net/xiuye2015/article/details/54375313 , 功能不全,只做练习.

    详解java 中Spring jsonp 跨域请求的实例

    1. 确保已引入必要的依赖包,如`spring-boot-starter-jersey`和`spring-boot-starter-web`,它们分别用于支持Jersey和Spring MVC。 2. 创建一个继承自`AbstractJsonpResponseBodyAdvice`的类,并使用`@...

    json和jsonp数据格式返回

    JSON(JavaScript Object Notation)和JSONP(JSON with Padding)是两种常见的数据交换格式,尤其在Web开发中广泛使用。本文将深入探讨这两种格式的特点、用途以及它们在跨域数据请求中的作用。 **1. JSON简介** ...

    .net3.5 WCF实现jsonp

    JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了`&lt;script&gt;`标签可以跨域请求资源的特性,将JSON数据包裹...虽然.NET 4.0及更高版本开始支持JSONP,但以上方法对于.NET 3.5环境仍然是一个有效的解决方案。

    jsonp异步

    BBoss-MVC可能是基于Java的MVC框架,它可能提供了对JSONP的支持,允许开发者方便地构建能够返回JSONP响应的服务。而BBoss-Tablib可能是一个表格处理库,用于展示或操作数据,这在与JSONP结合时,可能用于在前端展示...

    JSONP解决跨域问题

    在C#中,我们需要创建一个支持JSONP的Web方法。这通常意味着方法需要接受一个回调函数名作为参数,并将返回的数据包装在这个回调函数的调用中。例如: ```csharp [WebMethod] public string GetData(string ...

    jsonp示例2则

    JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了HTML的`...然而,随着现代浏览器对CORS(Cross-Origin Resource Sharing)的支持,JSONP的重要性已经逐渐降低,CORS提供了更强大、更安全的跨域策略。

    学习总结:前端跨域请求的解决办法——JSONP

    2. **无状态**:JSONP不支持Cookie,无法处理需要保持会话状态的请求。 3. **安全性**:由于服务器直接返回可执行的JavaScript代码,存在被XSS攻击的风险。 4. **无错误处理**:如果服务器返回的不是预期的函数调用...

    jsonp原理.txt

    3. **依赖于服务器的支持**:服务器必须能够正确处理JSONP请求,并将数据包装成函数调用的形式返回。 #### 六、总结 JSONP作为一种跨域数据获取的技术,在一定程度上解决了同源策略带来的限制。然而,随着现代Web...

Global site tag (gtag.js) - Google Analytics