java - 下载servlet很慢

标签 java jsp tomcat servlets

我已经编写了一个 servlet,它将从服务器位置下载文件。在我们自己的内部网中,下载速度似乎非常非常慢,而且当我在浏览器中安装了 Adob​​e 插件时,如果我正在下载 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 上。

最佳答案

一次读取和写入一个字节的效率极低。在 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。

关于java - 下载servlet很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29781250/

相关文章:

java - 在系统之间迁移大数据

java - JSP 下载 - 应用程序/八位字节流

java - 在 JSP 中获取返回值

macos - Tomcat 连接器 (mod_jk) 出错

php - API 服务器框架的选择

java - Spring-boot - 如何同时使用 Resteasy JAX-RS 和 Spring MVC Controller

java - Keytool 更改 key 密码使用 'keypasswd' 抛出 'Alias has no key' 错误

java - Eclipse 安装程序找不到 JRE

java - IntelliJ IDEA 的 Visual Studio 白色背景主题

java - 具有多个空格的正则表达式