下载servlet非常慢

时间:2015-04-21 19:19:49

标签: java jsp tomcat servlets

我编写了一个servlet,它将从服务器位置下载文件。在我们自己的INTRAnet中,下载似乎非常慢,当我在浏览器中安装Adobe插件时,如果我正在下载PDF文件,Adobe插件将在下载PDF时显示进度条,但这不会发生在我的情况下!以下是我的代码!我不应该把它作为依恋回应吗?

PrintWriter out = response.getWriter();
response.setContentType("APPLICATION/OCTET-STREAM");
response.setIntHeader("Refresh", 1);
response.setHeader("Content-Disposition",
    "inline; filename=\"" + fileNameWithExtension
        + "\"");
FileInputStream fileInStream = new FileInputStream(
        filePathWithExtension);
BufferedInputStream bufferInStream = new BufferedInputStream(
                fileInStream);
int cnt;
while ((cnt = bufferInStream.read()) != -1) {
    out.write(cnt);
}
fileInStream.close();
out.close();

不确定是否有更好的方法。基本上我尝试将我的一个点网络代码转换为这个Java Servlet。与此相比,当前的.NET代码非常快!

它托管在Apache Tomcat上,.NET代码托管在IIS上。

1 个答案:

答案 0 :(得分:1)

一次读取和写入一个字节非常低效。在Java中复制流的规范方法如下:

byte[] buffer = new byte[8192]; // or more if you like
int count;
while ((count = in.read(buffer)) > 0)
{
    out.write(buffer, 0, count);
}

此处不应使用Writer,请使用OutputStream.