我从我的数据库中检索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 = pdf(pdf是我的servlet名称)在我的jsp页面中,我应该在客户端的浏览器上显示从数据库中检索到的文件。
我该怎么办?
答案 0 :(得分:2)
将回复的内容类型设置为pdf
response.setContentType("application/pdf");
然后将pdf内容写入响应对象
答案 1 :(得分:2)
不要将PDF保存到服务器上的文件中,只需将其作为servlet的响应发送回浏览器即可。基本上,不是使用FileOutputStream
,而是使用OutputStream
对象上getOutputStream()
调用的ServletResponse
。您还需要设置Content-Type标头,以便浏览器知道它是PDF文件。
让servlet写入这样的硬编码路径是危险的,因为servlet的几个实例可以在不同的线程中同时运行。 (想想如果两个人同时在他们的浏览器中输入你的servlet的URL会发生什么。)如果他们同时写入同一个文件,他们最终会破坏它。