【发布时间】:2011-11-06 14:09:17
【问题描述】:
以下 web.xml 似乎不起作用:
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>*.wfn</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>SelectSessionServer.wfn</welcome-file>
</welcome-file-list>
而是显示目录列表。我在那里有一个 index.html 文件,该 index.html 文件有一个指向完全相同的 SelectSessionServer URL 的链接,然后它就可以正常工作了。
("它" = Glassfish & Tomcat)
怎么会?
我已经看到了这个问题 (servlet as welcome-file-list in tomcat 7),它的回答似乎表明我的设置应该可以正常工作。
【问题讨论】:
-
应该可以正常工作。你是如何部署的?显示目录列表也很奇怪;默认情况下它们是关闭的,所以它们应该是有目的地打开的。谁在管理容器和部署 Web 应用程序?您还是某个服务器管理员?
-
只有 Glassfish 实际显示目录列表。 Tomcat 给出了 -404 (或任何“不可用”错误),但这已经过时了。我知道这只是一个配置选项,即使我不知道它在哪里。关键是,根据我在此处找到的信息,为什么它不能像我预期的那样工作,而且显然应该如此。我会尝试查看应用服务器的日志,看看里面有什么。
-
部署使用的是 WAR 文件。但它不应该相关,因为我在应用服务器停止/启动后也得到了这种行为。
-
我想通了。必须有一个同名的文件。否则,AS 看到“welcome-file”名称,发现它不是文件,并且不会费心将其作为 URL 来“提交”以进行处理。内容无关紧要,不会使用,但文件必须存在。我怀疑这种行为是否是这样指定的,但它解决了 Glassfish 和 Tomcat 中的问题。
-
因此,即使您的目标是与 Servlet 3.0 兼容的容器,您的
web.xml也被声明为 Servlet 2.5 而不是 Servlet 3.0?
标签: java tomcat servlets web.xml