Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否在浏览器中显示pdf文件?_Java_Jsp_Servlets - Fatal编程技术网

Java 是否在浏览器中显示pdf文件?

Java 是否在浏览器中显示pdf文件?,java,jsp,servlets,Java,Jsp,Servlets,可能重复: 我从我的数据库中检索了一个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);

可能重复:

我从我的数据库中检索了一个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..");
}
现在这是在服务器端。在我的客户端,每当用户单击链接时 a href=pdfpdf是我jsp页面中的servlet名称,我应该在客户端浏览器上显示从数据库检索到的文件。
我该怎么办

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

response.setContentType("application/pdf");

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

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

response.setContentType("application/pdf");

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

不要将pdf保存到服务器上的文件中,只要将其作为servlet的响应发送回浏览器即可。基本上,使用从ServletResponse对象上调用getOutputStream获得的OutputStream,而不是FileOutputStream。您还需要设置内容类型标题,以便浏览器知道它是PDF文件


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

不要将PDF保存到服务器上的文件中,只要将其作为servlet的响应发送回浏览器即可。基本上,使用从ServletResponse对象上调用getOutputStream获得的OutputStream,而不是FileOutputStream。您还需要设置内容类型标题,以便浏览器知道它是PDF文件


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

对不起,苏拉杰。我不是来写你的代码的,如果我的应用程序/pdf显示在Mozilla中,但不是在google chrome中:你使用的是哪个chrome版本?检查你的Chromether中的adobe插件chrome插件有问题。我解决了问题,得到了结果。谢谢Machi!!!你证明了你是真正的美国人。我不是来写你的代码的,如果我的应用程序/pdf显示在Mozilla中,但不是在google chrome中:你使用的是哪个chrome版本?检查你的Chromether中的adobe插件chrome插件有问题。我解决了问题,得到了结果。谢谢Machi!!!你证明了你是真正的阿姆利人