2

我在 web.xml 中使用以下内容来配置 servlet 以动态生成 PDF。

<servlet-mapping>
    <servlet-name>pdfServlet</servlet-name>
    <url-pattern>*.pdf</url-pattern>
</servlet-mapping>

现在,我还必须提供一些静态 PDF 文件。配置它的最干净的方法是什么?我目前只提供四个或五个动态文件,如果有帮助的话,不要指望它会增加。

4

2 回答 2

3

这是一个令人惊讶的恼人问题,我还没有找到令人满意的解决方案。

我相信您知道问题的基础是您的 web.xml 配置为将所有对 *.pdf 的请求发送到您的 Spring servlet。显而易见的尝试是让 servlet 识别哪些请求是针对静态 PDF 的,然后在内部将请求转发到该静态文件,但由于文件可能以 .pdf 结尾,因此请求将通过 servlet 返回再次,令人作呕。

我尝试过的唯一解决方法是让 servlet 从 servlet 上下文中手动读取静态 PDF(使用ServletContext.getResource()),并将其写入 servlet 输出流,确保正确设置各种标头。这不是很好。

我能想到的唯一选择是使url-patterninweb.xml不那么广泛,以便只有动态 PDF 请求被路由到 servlet,静态 PDF 请求被路由到文件,但这需要某种命名约定您的文件,这可能不是一个选项。

于 2009-10-21T15:16:55.433 回答
1

您根本不需要配置静态文件;如果 Tomcat 可以找到一个文件,它将提供它。仅当您希望 Tomcat 调用某些代码时,才需要进行配置。

于 2009-10-21T15:04:53.320 回答