【问题标题】:Alternative for request.getSession().getServletContext().getRealPath()request.getSession().getServletContext().getRealPath() 的替代方案
【发布时间】:2017-05-11 19:13:06
【问题描述】:

我正在将 Java Web 应用程序从 Tomcat 6 迁移到 Tomcat 8。在应用程序中,单击按钮,首先在 'Workspace.metadata.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps 中创建 pdf \Project' 文件夹,如果它不存在,然后在新窗口中打开。

此功能在 Tomcat 6 和 7 中运行良好。 但是在 Tomcat 8 中,pdf 被创建但它在第一次点击时没有打开(得到 404 错误)。在第二次或第三次单击时,它会显示出来。

以下代码用于获取pdf位置的路径:

字符串路径 = request.getSession().getServletContext().getRealPath("//MyPdf.pdf");

pdf 路径的硬编码在 Tomcat 8 中也可以正常工作。我无法理解是什么问题,建议为上述代码提供一些替代方案。

【问题讨论】:

  • 记录生成的路径。一个斜线、区分大小写的名称、tomcat 用户权限等。
  • 路径是正确的,因为如果在 pdf 已经存在的情况下单击该按钮,它可以正常工作。仅在生成 pdf 然后打开时才会出现此问题
  • 检查生成是否正确关闭文件。
  • @Joop 在文档创建后使用 document.close() 和 writer.close() [使用 Pdfwriter]。如果我在流程中的任何位置使用提到的代码但不使用返回的值而不是我如果硬编码路径那么它也不起作用。但我需要使用上述或一些替代方法

标签: java servlets tomcat8


【解决方案1】:

我可以在您的文件名前看到 2 个斜杠

String path = request.getSession().getServletContext().getRealPath("//MyPdf.pdf");

下面的代码应该可以工作。

String path = request.getSession().getServletContext().getRealPath("/MyPdf.pdf");

【讨论】:

    猜你喜欢
    • 2014-11-21
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 2015-03-03
    • 2015-09-25
    相关资源
    最近更新 更多