【问题标题】:Servlet : try to read pdf file using servlet in eclipse [duplicate]Servlet:尝试在 Eclipse 中使用 servlet 读取 pdf 文件 [重复]
【发布时间】:2013-02-24 22:57:50
【问题描述】:

我正在尝试使用 ServletContext 读取文件`

InputStream is = servletContext.getResourceAsStream(path)

路径的值为:

path = D:\Assignments\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\HelpGuide\GeneratedReports\userDetail.pdf`

userDetail.pdf 文件存在于给定路径中,但是当我尝试使用上面定义的 servlet 上下文将资源作为流获取时,is 的值为 null。

【问题讨论】:

    标签: java


    【解决方案1】:

    这是因为 getResourceAsStream 查找相对于上下文根的路径。 检查 servlet 上下文的 javadoc,尤其是“getResource”部分:http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html#getResourceAsStream(java.lang.String) 您应该使用相对路径并将您的 pdf 放在您的类路径中,这将是一个更好的做法,因为您的应用将不依赖于绝对路径。

    【讨论】:

      【解决方案2】:

      正如 servlet 告诉你的那样,这是个坏主意。

      将该 PDF 放入 CLASSPATH(例如 WAR 的 WEB-INF/类)中,并将其作为 InputStream 从 servlet 上下文中读取。

      绝对路径对于网络应用来说是错误的。

      【讨论】:

      • 但这是eclipse ide,如果我将文件放在WEB-INF中,那么文件路径是什么?
      • 看我的回答,但这就是为什么你应该使用相对路径而不是绝对路径。
      • 文件绝对路径取自getServletContext().getRealPath("fileName"))方法。
      • 先生,eclipse如何处理,eclipse中WEB-INF中没有classes文件夹?
      • 是的。您认为您的 serlvet .class 文件编译到哪里?创建一个您可以看到的并将您的 PDF 放在那里。
      猜你喜欢
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-22
      • 2019-10-07
      • 2012-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多