2012-04-27 14 views
1

可能性の重複:
how to display a pdf file in jsp using servletブラウザに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は私のサーブレット名) と言うと、クライアントのブラウザのデータベースから取得したファイルを表示する必要があります。
どうすればよいですか?

答えて

2

は、それからちょうど送って、サーバー上のファイルにPDFファイルを保存しないでくださいレスポンスオブジェクト

+0

申し訳ありません。私はあなたのコードを書くためにここにいません – ganesshkumar

+0

私は "application/pdf"がMozillaでは表示されているが、Google Chromeでは表示されていない場合:( – suraj

+0

クロムバージョンはあなたが使用していますか? – ganesshkumar

2

に、PDFの内容を書きPDF

response.setContentType("application/pdf"); 

への応答のコンテンツタイプを設定します。それはサーブレットの応答としてブラウザに戻されます。基本的には、FileOutputStreamの代わりにServletResponseオブジェクトにgetOutputStream()と電話することから得られるOutputStreamを使用してください。また、Content-Typeヘッダを設定して、ブラウザがPDFファイルであることをブラウザに知らせる必要があります。

このようなハードコードされたパスへのサーブレットの書き込みは、サーブレットの複数のインスタンスが異なるスレッドで同時に実行できるため、危険です。 (同時に2人がブラウザにサーブレットのURLを入力した場合どうなるか考えてみてください)。両方が同じファイルに同時に書き込みを行っていると、それらは壊れてしまいます。

関連する問題