我如何发送压缩(gzip) JSON作为响应Ajax请求,从Java

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

本文关键字:Ajax 响应 请求 Java JSON 何发送 压缩 gzip      更新时间:2023-09-26

作为对Ajax请求的响应,我想从我的Java程序发送压缩即gzipped JSON。我知道,我需要将响应头中的内容编码设置为gzip,但这就是我所需要做的吗?

您还需要确保A)你的客户端(浏览器或应用程序)接受这个gzip编码,可以处理它B)服务器(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中为DataViewController bean添加了以下bean属性。

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

除了设置内容编码头外,您的服务器端代码还应该对响应进行gzip。您可以查看GZIPResponseWrapper.java.