我有一个扩展RemoteServiceServlet的类。这个类有几种方法,在一种方法中,我使用getThreadLocalResponse()获取当前调用的HttpServletResponse,然后在响应中写入一个File。以下是代码:GWT的RemoteServiceServlet可以在HttpServletResponse中写入文件流吗?
File aFile = new File("c://test.txt");
int iBufferSize = 1000;
int iLength = 0;
HttpServletResponse resp = getThreadLocalResponse();
ServletOutputStream op = resp.getOutputStream();
ServletContext context = getServletConfig().getServletContext();
String mimetype = context.getMimeType(aFile.getName());
resp.setContentType((mimetype != null) ? mimetype : "application/octet-stream");
resp.setContentLength((int) aFile.length());
resp.setHeader("Content-Disposition", "attachment; filename=\"" + aFile.getName() + "\"");
byte[] xbuf = new byte[iBufferSize];
DataInputStream in = new DataInputStream(new FileInputStream(aFile));
while ((in != null) && ((iLength = in.read(xbuf)) != -1))
{
op.write(xbuf, 0, iLength);
}
in.close();
op.flush();
op.close();
但是,总会出现错误。调试完成后,我发现在写入响应时抛出异常。
我不重写doGet和doPost,因为还有其他一些方法,我不希望每个请求都能调用这段代码。
但是,如果我在这个类中创建单独的Servlet或覆盖doGet或doPost,它工作正常。
有人知道为什么吗?当我们使用getThreadLocalResponse()时,GWT RemoteServiceServlet是否支持在响应中写入Stream?
谢谢!