2

可能重复:
如何使用 servlet 在 jsp 中显示 pdf 文件

我从我的数据库中检索一个 pdf 文件并将其放入这样的文件中

String str="select * from files where name='Security.pdf';";
Statement stmt2= conn.createStatement  
                   (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs = stmt2.executeQuery(str);
while(rs.next())
{
 InputStream input = rs.getBinaryStream("content");
 //to create file
   File f=new File("c:/pdfile.pdf");
   OutputStream out=new FileOutputStream(f);
   byte buf[]=new byte[1024];
   int len;
   while((len=input.read(buf))>0)
   out.write(buf,0,len);
   out.close();
   input.close();
    System.out.println("\nFile is created..");
}

现在这是在服务器端。在我的客户端,每当用户在我的 jsp 页面中单击链接说 href=pdf(pdf 是我的 servlet 名称)时,我应该在客户端的浏览器上显示从数据库中检索到的文件。
我该怎么办?

4

2 回答 2

2

将响应的内容类型设置为 pdf

response.setContentType("application/pdf");

然后将pdf内容写入响应对象

于 2012-04-27T06:40:14.190 回答
2

不要将 PDF 保存到服务器上的文件中,只需将其作为 servlet 的响应发送回浏览器即可。基本上,代替 that FileOutputStream,使用OutputStream从调用对象中获得getOutputStream()的。ServletResponse您还需要设置 Content-Type 标头,以便浏览器知道它是 PDF 文件。

让 servlet 写入这样的硬编码路径是危险的,因为 servlet 的多个实例可以在不同的线程中同时运行。(想想如果两个人同时在他们的浏览器中输入你的 servlet 的 URL 会发生什么。)如果他们都同时写入同一个文件,他们最终会破坏它。

于 2012-04-27T06:40:33.780 回答