我在 web.xml 中使用以下内容来配置 servlet 以动态生成 PDF。
<servlet-mapping>
<servlet-name>pdfServlet</servlet-name>
<url-pattern>*.pdf</url-pattern>
</servlet-mapping>
现在,我还必须提供一些静态 PDF 文件。配置它的最干净的方法是什么?我目前只提供四到五个动态文件,并且预计不会增加(如果这有帮助的话)。
最佳答案
这是一个令人惊讶的恼人问题,我尚未找到令人满意的解决方案。
我相信您已经知道,问题的根源在于您的 web.xml 配置为将对 *.pdf 的所有请求发送到您的 Spring servlet。显然,要尝试的事情是让 servlet 识别哪些请求是针对静态 PDF 的,然后将请求在内部转发到该静态文件,但由于该文件可能以 .pdf 结尾,因此该请求将仅通过 servlet 返回再次令人作呕。
我尝试过的唯一解决方法是让 servlet 手动从 servlet 上下文中读取静态 PDF(使用 ServletContext.getResource()
),并将其写入 servlet 输出流,确保设置各种 header 适本地。这不太好。
我能想到的唯一选择是制作 url-pattern
在web.xml
有点不太宽泛,因此只有动态 PDF 请求才会路由到 servlet,而静态 PDF 请求才会路由到文件,但这需要对文档进行某种命名约定,这可能不是一个选项。
关于java - 在 Tomcat/Spring 中映射静态和动态文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1601442/