【问题标题】:Where should I place a pdf to be download in a Java web app project?我应该在哪里放置要在 Java Web 应用程序项目中下载的 pdf?
【发布时间】:2013-10-20 15:00:56
【问题描述】:

我有一个maven目录结构:

 /src

    /main

        /java 
        /resources 
        /webapp 

因此,如果我将文件放在 /resources 下,当我将应用程序部署到 tomcat 时,文件最终会位于:webapps/applicationRoot/WEB-INF/classes/xx.pdf

如果我输入 webapp/ 那么它最终会在 webapps/applicationRoot/xx.pdf 中

如果我在 webapp 下创建一个文件夹,例如 webapp/myResources,它最终会出现在:webapps/applicationRoot/myResources/xx.pdf

我认为第二个看起来最漂亮,因为在代码中我可以说:

    InputStream is = servletContext.getResourceAsStream("/re.pdf");

如何在我的 servlet 中获取我的 pdf 文件?

另外,哪一个是标准的?我应该使用哪个?

【问题讨论】:

    标签: java maven jakarta-ee web


    【解决方案1】:

    如果您将 pdf 放在 webapp/bla/my.pdf 下,用户可以直接在浏览器中从 http://{yoursercer}/{contextroot}/bla/my.pdf 访问它。那是你要的吗?那就放在那里吧。

    如果您希望您的 Java 代码可以访问 PDF,请将其放在资源下。它不能从浏览器直接访问。

    【讨论】:

    • 我怎样才能在第二个选项中得到它?
    • 你是什么意思?您已经说过:如果文件是onder 资源,您可以从Java 代码中读取它。为什么?我不知道,也许您想将其用作模板并在将其返回到 http 响应之前即时更新它。如果您只想提供服务,那就是 - 让您的 servlet 容器完成工作,不再打扰。放在webapp下。
    • 不,我说的是我使用的路径,参数为:getResourceAsStream();
    • 如果你把它放在resources/pdfs/my.pdf,你可以通过MyController.class.getResource("/pdfs/my.pdf")来访问它。纯 java,没有 servlet 的东西。
    【解决方案2】:

    设置内容类型。response.setContentType("application/pdf");

    【讨论】:

    • 请问?这是怎么回答的?
    猜你喜欢
    • 2010-10-02
    • 2011-03-04
    • 2011-06-10
    • 1970-01-01
    • 2015-06-08
    • 2020-08-02
    • 1970-01-01
    • 2014-01-30
    • 1970-01-01
    相关资源
    最近更新 更多