2017-06-05 14 views
0

在我构建在Eclipse上的示例Web应用程序中,我尝试将index.html文件放在WEB-INF文件夹下,然后更新部署描述符web.xml文件,如下所示加载部署相同:如何访问WEB-INF下的index.html文件

<welcome-file>WEB-INF/index.html</welcome-file> 

但是,当我尝试在Tomcat服务器上部署Web应用程序时,它不会加载index.html文件。但是,当我将index.html文件直接移动到应用程序的根目录(即直接位于WebContent文件夹下)时,index.html文件在浏览器中成功加载。

我想,如果我必须把WEB-INF下默认的index.html文件,然后我需要写一个servlet,并将其作为<load-on-startup>0</load-on-startup>
在我的web.xml文件。 否则,Tomcat容器无法直接访问WEB-INF下的index.html。

如果我缺少某些东西,请随时添加。

回答

0

这是不可能的。

的Servlet 3.1规范

大多数WEB-INF节点不是 应用程序的公共文档树的一部分。除了驻留在WEB-INF/lib 目录中的JAR文件的打包在 METAINF/resources中的静态资源和JSP之外,WEB-INF目录中包含的其他文件可能不会由容器直接提供给客户端。

最佳做法是将您的文件index.html置于src/main/webapp之内。

参考

http://download.oracle.com/otn-pub/jcp/servlet-3_1-fr-eval-spec/servlet-3_1-final.pdf(第10-105)

https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

+0

为什么不可能?当我们通过servlet呈现它们时,我们对于放置在WEB-INF内部的jsps不做同样的事情吗? API表示可能不会提供服务而不能提供服务。纠正我,如果我失去了一些东西。 – dirai

+0

在使用JSP文件的情况下(您的回复),它正在间接访问。 –

+0

是的。所以我们仍然可以间接访问它,但这不是一个好的做法。至少有一个文件(默认)应该是公开的。 – dirai

相关问题