【发布时间】:2020-10-16 13:28:20
【问题描述】:
我需要为我的应用程序中的所有 PDF 文件设置内容处置标头响应。所以我认为最好的方法是使用 servlet:
public class PdfServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("---> Servlet working");
//Some code here
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("---> Servlet working");
//Some code here
}
}
我像这样配置了我的应用程序 web.xml:
<servlet>
<servlet-name>pdfServlet</servlet-name>
<servlet-class>net.universia.pymes.servlets.PdfServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>pdfServlet</servlet-name>
<url-pattern>*.pdf</url-pattern>
</servlet-mapping>
我需要获取的 PDF 是 {TOMCAT_HOME}/webapps/resources/files/*.pdf 中的静态文件,问题是当我指向那个 Url (localhost:8080/resources/files/myPDF.pdf ) 在浏览器中,servlet 不打印任何内容,也不调用 servlet。但是,当我从浏览器中点击 docbase 文件夹中的 PDF {TOMCAT_HOME}/webapps/FRONTEND_BANCO_CO/res/myPDF.pdf --> localhost:8080/res/myPDF.pdf 时,它确实有效,它打印了消息我在 doGet() 方法中。即使我点击了一个不存在但最后有 .pdf 的 url,它也会执行 servlet 并且可以工作。
我尝试将资源文件夹从 {TOMCAT_HOME}/webapps/resources/ 移动到 {TOMCAT_HOME}/webapps/FRONTEND_BANCO_CO/resources/ 并且它有效。所以我得出结论,这与我在 server.xml 中的上下文标记处的路径属性有关:
<Context path="" reloadable="true" docBase="FRONTEND_BANCO_CO"></Context>
我无法更改路径属性,所以这不是一个选项。我也不能将资源文件夹留在 docbase 文件夹中。有什么建议吗? 请帮忙,我整天都被这个问题困扰:'(
【问题讨论】:
标签: java pdf tomcat servlets content-disposition