2016-08-03 19 views
0

クライアントサイドのブラウザの新しいタブにpdfファイルを表示したい。Javaを開く新しいウィンドウで開く

pdfファイルを表示するためにサーブレットクラスを作成しました。私はJavaで新しく、私が作成したクラスの使い方やクラスが正しいかどうかわかりません。

私はTomcatでWindows上でJavaを使用しています。

サーブレットコード:

public class DisplayPdf extends HttpServlet implements Servlet { 

private static final long serialVersionUID = 1L; 

protected void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    processRequest(request, response); 
} 

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, 
     IOException { 
    processRequest(request, response); 
} 

private void processRequest(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, 
     IOException { 
     File file = new File("test.pdf"); 
     InputStream inputStream = getServletContext().getResourceAsStream("/WEB-INF/resources/test.pdf"); 
     OutputStream outputStream = new FileOutputStream(file); 
     byte[] buffer = new byte[1024]; 
     int length; 
     while ((length = inputStream.read(buffer)) > 0) { 
      outputStream.write(buffer, 0, length); 
     } 
     outputStream.close(); 
     inputStream.close(); 
} 

}

どのように私は、このサーブレットを呼び出すとJavaのWebappからそれを使うことができますか?

答えて

0

これはサーブレットや他のサーバー側の技術とは関係なく、新しいウィンドウ/タブまたは保存ダイアログを開くことはブラウザの能力で完全に行われます。サーバーサイドでできることは、レスポンスに適切なHTTPヘッダーを設定することだけです。

response.setContentType("application/pdf"); 
response.setHeader("Content-Disposition", "inline; filename=\"My.pdf\""); 

Content-Dispositionヘッダのinline部分は、attachmentダウンロードを強制することが可能である場合、それは、ファイルをインラインで表示することができることを、ブラウザに指示します。

たとえば、ファイルがリンクされているHTMLから新しいタブ/ウィンドウを強制的に開くことができます。

<a href="#" onclick="window.open('My.pdf', '_blank', 'fullscreen=yes'); return false;">My PDF</a> 

詳細については、window.open()のマニュアルを参照してください。

関連する問題