在Tomcat/Spring中映射静态和动态文件?
我在web.xml中使用以下配置来动态生成PDF的servlet。在Tomcat/Spring中映射静态和动态文件?
<servlet-mapping>
<servlet-name>pdfServlet</servlet-name>
<url-pattern>*.pdf</url-pattern>
</servlet-mapping>
现在,我还必须提供一些静态PDF文件。什么是最简洁的配置方式?我目前只提供四到五个动态文件,如果这有帮助的话,不要期望增加。
根本不需要配置静态文件;如果Tomcat可以找到一个文件,它将会提供它。只有当您希望Tomcat调用某些代码时,配置才是必需的。
这是一个令人吃惊的令人惊讶的问题,我还没有找到令人满意的解决方案。
我相信你知道,问题的基础是你的web.xml被配置为发送* .pdf的所有请求到你的Spring servlet。显而易见的是,servlet能够识别哪些请求用于静态PDF,然后将请求内部转发到该静态文件,但由于该文件可能以.pdf结尾,请求将通过servlet返回再次,广告恶心。
我尝试过的唯一解决方法是让servlet从servlet上下文中手动读取静态PDF(使用ServletContext.getResource()
),并将其写入servlet输出流,确保正确设置各种头文件。这不是很好。
我能想到的唯一选择是让url-pattern
的web.xml
不那么宽泛,以便只有动态PDF请求才能路由到servlet,并且静态PDF请求会路由到该文件,但这需要某种文档的命名约定,这可能不是一种选择。
我可能会尝试命名约定;手动提供静态文件似乎不那么干净。基本上,我们正在从使用iText转为使用XDP(XML + PDF)来生成动态文档,但XDP需要提供静态PDF模板。 – 2009-10-21 16:13:11
我以前在所有PDF请求中都有Tomcat调用代码;它们都是由iText动态构建的。现在,我需要Tomcat来传递静态文件。这不会被servlet映射捕获吗? – 2009-10-21 16:11:13
啊,你的意思是静态的PDF文件(即*匹配你的URL规则的文件)。好的,不能帮你:) – 2009-10-21 17:09:02
是的。是的,似乎唯一的解决方案是单独映射所有动态的,没有通配符。 – 2009-10-21 19:53:42