如何发送压缩 (gzip) JSON 作为对来自 Java 的 Ajax 请求的响应?

How can I send compressed (gzip) JSON as response to an Ajax Request, from Java?

作为对 Ajax 请求的响应,我想从我的 Java 程序发送压缩文件,即 gzipped JSON。我知道,我需要将 Response Header 中的 Content-Encoding 设置为 gzip,但我需要做的就这些吗?

您还需要确保 a) 您的客户端(浏览器或应用程序)接受此 gzip 编码并可以处理它 b) 你的服务器(你的 java 应用程序的容器)配置为默认发送 gzip 压缩的响应。如果服务器配置为发送压缩响应,那么 content-type header 很可能由服务器本身设置。

除了设置 content-encoding header 之外,您的服务器端代码还应该对响应进行 gzip 压缩。你可以看看GZIPResponseWrapper.java.

感谢大家的投入。我使用以下方法使其工作。

在我的应用程序 web.xml 中,添加了以下过滤器:

<filter>
    <filter-name>GZipFilter</filter-name>
    <filter-class> org.mortbay.servlet.GzipFilter</filter-class>
    <init-param>
        <param-name>mimeTypes</param-name>
        <param-value>application/json</param-value>
    </init-param>
</filter>

<filter-mapping>    
    <filter-name>GZipFilter</filter-name>
    <url-pattern>*.data</url-pattern>
</filter-mapping>

并在 servlet.xml 中将以下 bean 属性 添加到 DataViewController bean。

<beans:property name="contentType" value="application/json" />