Java 使用GZIP、JSON响应和JQuery

Java 使用GZIP、JSON响应和JQuery,java,jquery,json,jsp,gzip,Java,Jquery,Json,Jsp,Gzip,然而,如果可能的话,我想用GZIP压缩我的回答。我尝试使用headfirst网站上的免费下载。它适用于html、图像、css和javascript 下一步我将发布过滤器。它检查GZIP是否为可接受的编码,并将GZIP添加为内容编码。请参阅:wrappedResp.setHeader(“内容编码”、“gzip”) 我正在使用下一个代码在Struts web应用程序中发送JSON响应 public ActionForward get(ActionMapping mapping, Action

然而,如果可能的话,我想用GZIP压缩我的回答。我尝试使用headfirst网站上的免费下载。它适用于html、图像、css和javascript

下一步我将发布过滤器。它检查GZIP是否为可接受的编码,并将GZIP添加为内容编码。请参阅:
wrappedResp.setHeader(“内容编码”、“gzip”)

我正在使用下一个代码在Struts web应用程序中发送JSON响应

public ActionForward get(ActionMapping mapping,
    ActionForm     form,
    HttpServletRequest request,
    HttpServletResponse response) {
       JSONObject json = // Do some logic here
       RequestUtils.populateWithJSON(response, json);
       return null;         
}

public static void populateWithJSON(HttpServletResponse response,JSONObject json) {
    if(json!=null) {
        response.setContentType("text/x-json;charset=UTF-8");       
        response.setHeader("Cache-Control", "no-cache");
        try {
             response.getWriter().write(json.toString());
        } catch (IOException e) {
            throw new ApplicationException("IOException in populateWithJSON", e);
        }               
    }
 }
如果没有压缩,它可以正常工作,但是如果我压缩JSON响应,我就看不到我的JSON对象了。我使用JQuery处理JSON Ajax调用,代码片段如下:

    $.post(url,parameters, function(json) {
    // Do some DOM manipulation with the data contained in the JSON Object
}, "json");
如果我看到Firebug的响应,它是空的

我应该折射压缩过滤器以跳过JSON响应中的压缩吗?还是有解决办法


对我来说,JQuery似乎无法将响应识别为JSON,因为我正在添加Gzip压缩

如果要压缩,您必须再添加一个标题“content encoding:gzip”。

您是否尝试过使用基于java的显式客户端来确保jQuery或browser出现问题?如果java客户机失败,则表明服务器响应有问题

但我猜,虽然浏览器可以处理直接请求的解压缩,但这可能不适用于Ajax调用

这是一个有趣的问题,我希望我们能得到更明确的答案

如果我看到Firebug的响应,它 是空的

这是您的线索—这不是JQuery问题,而是服务器端问题。(恐怕我帮不了你,只是建议你不要再看客户端)


压缩ajax响应没有问题-如果您在Firebug中看不到响应,那么JQuery也看不到响应。

如果您在没有压缩部分的情况下运行代码,它是否成功地通过了响应?是的,所有涉及JSON的内容都可以在没有压缩的情况下正常工作您找到解决方案了吗?我有类似的未决问题。若你们能发布你们的答案,那个就太好了。它能在服务器之后,在客户端之前吗?由某些网络元素造成的问题?
    $.post(url,parameters, function(json) {
    // Do some DOM manipulation with the data contained in the JSON Object
}, "json");