我的应用程序中有一个gzip压缩的JSON资源,我想通过servlet提供服务。浏览器不确定原因,但实际上没有一个会加载我的内容。这段代码出了什么问题吗?
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setStatus(200);
InputStream in = <get an input stream to my gzipped data>;
resp.setIntHeader("Content-Length", in.available());
OutputStream out = resp.getOutputStream();
out.write(IOUtils.toByteArray(in));
out.close();
resp.setHeader("Content-Encoding", "gzip");
resp.setHeader("Content-Type", "application/json");
}
}
答案 0 :(得分:0)
我认为您正在寻找的答案可以在此主题中接受的答案的链接中找到 - Serve Gzipped content with Java Servlets。
这包括来自O'Reilly网站的工作示例。
但是我会质疑你是否需要引入这种交叉卷曲问题并手动gzip内容。假设您正在使用Apache或其分支,我建议您查看mod_deflate它是可配置且功能强大的,并使您无需编写用于gzipping响应的样板代码。