2

重複の可能性:
サーブレットを使用して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 は私のサーブレット名)というリンクをクリックするたびに 、データベースから取得したファイルをクライアントのブラウザに表示する必要があります。
私は何をすべきか?

4

2 に答える 2

2

応答の content-type を pdf に設定します

response.setContentType("application/pdf");

次に、pdf コンテンツを応答オブジェクトに書き込みます。

于 2012-04-27T06:40:14.190 に答える
2

PDF をサーバー上のファイルに保存せず、サーブレットの応答としてブラウザーに送り返すだけです。基本的に、その代わりに、オブジェクトを呼び出して取得した をFileOutputStream使用します。また、ブラウザーが PDF ファイルであることを認識できるように、Content-Type ヘッダーを設定する必要があります。OutputStreamgetOutputStream()ServletResponse

サーブレットの複数のインスタンスが異なるスレッドで同時に実行される可能性があるため、このようにハードコーディングされたパスにサーブレットを書き込むことは危険です。(2 人のユーザーが同時にブラウザーにサーブレットの URL を入力するとどうなるかを考えてみてください。) 2 人が同時に同じファイルに書き込んでいると、ファイルが壊れてしまいます。

于 2012-04-27T06:40:33.780 に答える