【发布时间】:2010-11-04 19:45:56
【问题描述】:
example documentation 表示您只需将文件放在 war/(或子目录)中,它们应该可以从主机访问(只要它们不是 JSP 或 WEB-INF)。例如,如果您将 foo.css 放在 war/ 中,那么您应该能够通过 http://localhost:8080/foo.css 访问它。但是,这根本不适合我。我的所有静态文件都无法访问。
appengine-web.xml 上的文档说您还可以专门将某些类型表示为静态。这个我也试过了,没什么区别。
我是否遗漏了一些明显的东西?
更新: 原来我的 web.xml 中的一个映射有点过于激进。以下是罪魁祸首:
<servlet>
<servlet-name>Main</servlet-name>
<servlet-class>MainServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Main</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
似乎它正在抓取所有未抓取的内容,这是其他规则之一,我不明白,因为 url 模式的末尾没有 *。它似乎也与the documentation 直接矛盾,它说:
注意:静态文件,即逐字提供给用户的文件,例如图像、CSS 或 JavaScript,与部署描述符中提到的路径分开处理。无论部署描述符中的 servlet 和过滤器映射如何,对与 WAR 中被视为静态文件的文件的路径匹配的 URL 路径请求都将为该文件提供服务。您可以使用appengine-web.xml 文件从那些被视为静态文件的文件中排除文件。
那么,我怎样才能有一个与我的域的基础匹配的规则(例如http://www.example.com/)并且仍然允许静态文件过滤?
【问题讨论】:
-
SDK 附带的示例是否有效?如何启动应用程序。我猜你已经检查过文件真的在战争中/
-
是的,留言簿应用程序让我可以很好地访问它的 CSS 文件。
标签: java google-app-engine web.xml