当前位置: 技术问答>java相关
用sevrlet打开一个PDF文件时出现的问题?
来源: 互联网 发布时间:2017-03-16
本文导语: 在IE中调用时Adobe能运行,但是IE窗口是空白的,什么都没有, 按F5刷新一下就可以在IE正常出现被调用的PDF,为什么? 我在代码中加入response.setHeader("Refresh","10"); 也不行,哪位高手能帮我解决这个问题? import java.io....
在IE中调用时Adobe能运行,但是IE窗口是空白的,什么都没有,
按F5刷新一下就可以在IE正常出现被调用的PDF,为什么?
我在代码中加入response.setHeader("Refresh","10");
也不行,哪位高手能帮我解决这个问题?
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.lang.*;
import java.net.*;
public class PDFCouponServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws IOException {
ServletOutputStream out = response.getOutputStream();
response.setContentType( "application/pdf" );
response.setHeader("Refresh","10");
String fileURL = "http://localhost:8080/examples/jsp/Chap0401.pdf";
System.out.println(fileURL);
URL url = new URL(/tech-qa-java/fileURL/index.html);
BufferedInputStream bis = new BufferedInputStream(url.openStream());
BufferedOutputStream bos = new BufferedOutputStream(out);
byte[] buff = new byte[2048];
int bytesRead;
while(-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
bis.close();
bos.close();
}
}
按F5刷新一下就可以在IE正常出现被调用的PDF,为什么?
我在代码中加入response.setHeader("Refresh","10");
也不行,哪位高手能帮我解决这个问题?
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.lang.*;
import java.net.*;
public class PDFCouponServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws IOException {
ServletOutputStream out = response.getOutputStream();
response.setContentType( "application/pdf" );
response.setHeader("Refresh","10");
String fileURL = "http://localhost:8080/examples/jsp/Chap0401.pdf";
System.out.println(fileURL);
URL url = new URL(/tech-qa-java/fileURL/index.html);
BufferedInputStream bis = new BufferedInputStream(url.openStream());
BufferedOutputStream bos = new BufferedOutputStream(out);
byte[] buff = new byte[2048];
int bytesRead;
while(-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
bis.close();
bos.close();
}
}
|
还有老大既然可以
String fileURL = "http://localhost:8080/examples/jsp/Chap0401.pdf";
您 refresh 的时候直接
/examples/jsp/Chap0401.pdf
不就可以了?
不然,web server 的压力不是多余的?
String fileURL = "http://localhost:8080/examples/jsp/Chap0401.pdf";
您 refresh 的时候直接
/examples/jsp/Chap0401.pdf
不就可以了?
不然,web server 的压力不是多余的?
|
Netscape 和 IE 在保持http响应header始终一致有bug。
当需要绝对确保servlet输出不被缓存时,对每个servlet的请求都应使用
略有不同的URL,可以加上一点外加参数信息。
来自java servlet programming/java servlet 编程
(Jason Hunter & William Crawford)
当需要绝对确保servlet输出不被缓存时,对每个servlet的请求都应使用
略有不同的URL,可以加上一点外加参数信息。
来自java servlet programming/java servlet 编程
(Jason Hunter & William Crawford)
|
加一行:
bos.flush();
bis.close();
bos.close();
若行了的话,分就是俺的了。
bos.flush();
bis.close();
bos.close();
若行了的话,分就是俺的了。
|
你的PDF文件有多大呢?将缓存重新设置一个合适的值是是看。
|
另外设置一下输出缓存,默认好象是8k你,如果你的PDF大就设置的大一些,然后调用flush()
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。