如何发送压缩 (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" />
作为对 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" />