Java 发送JSONP与JSON数据?

Java 发送JSONP与JSON数据?,java,web-services,json,jsonp,Java,Web Services,Json,Jsonp,我正在制作一个需要以JSONP格式返回数据的web服务。我将JSON标记库用于JSP,我认为所有需要添加的都是括号,但我找不到一个好的资源来验证这一点 例如,ever web service函数使用以下函数返回: private static String getJSONPObject(String s) throws JSONException { return "(" + new JSONObject(s) + ")"; } 这是正确的吗 谢谢 JSONP只是一种允许web应用程序

我正在制作一个需要以JSONP格式返回数据的web服务。我将JSON标记库用于JSP,我认为所有需要添加的都是括号,但我找不到一个好的资源来验证这一点

例如,ever web service函数使用以下函数返回:

private static String getJSONPObject(String s) throws JSONException {
    return "(" + new JSONObject(s) + ")";
}
这是正确的吗


谢谢

JSONP只是一种允许web应用程序跨域检索数据的黑客行为。可以说是违反了法律。其工作方式是使用Javascript在页面中插入“script”元素。因此,您需要一个回调函数。如果没有,Javascript将无法访问JSON对象。但是通过使用JSONP,Javascript代码可以调用回调函数

因此,必须指定回调名称。因此,您的函数可能如下所示:

private static String getJSONPObject(String callback, String s) throws JSONException {
    return callback + "(" + new JSONObject(s) + ")";
}

我添加了一个示例,用Jquery和Servlet或JAX-WSWebService解决跨域JSONP(带填充的Json)

请检查这篇文章。

您应该可以访问http请求对象,或者至少可以通过某种方式访问发送的回调,通常是这样的形式:Ya,为了扩展Abdullah的观点,您的Javascript代码应该调用函数“name123”来获取JSON。啊,谢谢,我现在理解了回调。但是,我不确定如何在web服务中检索它。我可以要求它作为我函数中的一个参数,但这似乎不像Abdullah举例说明的那样,能够在链接中解析它那样方便用户。具体来说,这是在类中使用的,web服务允许访问这些方法。请求对象可以在类中使用吗?example.com?callback=name123将调用JSP servlet,后者反过来调用函数“getJSONPObject”,并将“name123”作为“callback”参数传递。