ディレクトリが存在しない場合、およびファイルがサーブレットで同じプレフィックスで既に作成されている場合に、例外を処理したいと思います。
リクエストを取得した後のサーブレットが PDF を書き込み、FileOutputStream
前の受信ページにリダイレクトを正常に送信した場合、リクエスト スコープに原因を説明するメッセージが書き込まれることは望ましくありません。
しかし、ディレクトリが存在しない場合 (ディレクトリ変数が のようなパスをもたらす'D:\pdf'
)、または同様の名前のファイルが存在する場合は、リクエスト スコープでサンプル エラー メッセージを送信したいと考えています。
私の条件式は正しいですか?私は使用しており、それが意図されている方法でFileOutputStream
もありますか? ServletOutputStream
1 つのサーブレットが に送信ServletOutputStream
または書き込みできることを読みましたPrintWriter
。
ガイダンスや正しい方向に私を送るために、私は非常に義務付けられています.
サーブレットのオーバーライドされたメソッドは次のとおりです。
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("headr " + request.getHeader("referer"));
// response.setContentType("application/pdf");
// response.setHeader("content-disposition", "attachment; filename=pdf.pdf");
// response.setStatus(HttpServletResponse.SC_NO_CONTENT);
String prefix = request.getParameter("prefix");
String no = request.getParameter("no");
String html = request.getParameter("source");
String directory = new SibsDelegate().getDirectoryPath();
File file = new File(directory);
if ( file.exists() && !new File(file, "prefix"+"-"+"no").exists())
{
System.out.println("exists");
try
{
HtmlCleaner cleaner = new HtmlCleaner();
CleanerProperties props = cleaner.getProperties();
TagNode node = cleaner.clean(html);
// OutputStream os = response.getOutputStream();
final XmlSerializer xmlSerializer = new PrettyXmlSerializer(props);
final String html1 = xmlSerializer.getAsString(node);
ITextRenderer renderer = new ITextRenderer();
renderer.setDocumentFromString(html1);
renderer.layout();
String filename = prefix + "-" + no +".pdf";
String fileNameWithPath = "D:\\pdf\\" + filename;
FileOutputStream fos = new FileOutputStream( fileNameWithPath, false);
renderer.createPDF( fos );
fos.close();
System.out.println( "PDF: '" + fileNameWithPath + "' created." );
RequestDispatcher rd = null;
// set message in request scope -- TODO
request.getRequestDispatcher("Common_Receipt.jsp").forward(request, response);
// response.sendRedirect("Common_Receipt.jsp");
}
catch (Exception ex)
{
ex.printStackTrace();
}
finally
{
// fos.close();
}
}
}