【发布时间】:2014-04-07 16:48:36
【问题描述】:
我们对我们的项目进行了更深入的研究,并且已经使用 eclipse 建立了一个基本的 Web 应用程序。每当我们尝试运行服务器时,我们都会收到如下所示的 404 错误
根据我的研究,我发现我需要某种 web.xml 文件。应该把这个文件放在哪里。我该怎么做呢
【问题讨论】:
我们对我们的项目进行了更深入的研究,并且已经使用 eclipse 建立了一个基本的 Web 应用程序。每当我们尝试运行服务器时,我们都会收到如下所示的 404 错误
根据我的研究,我发现我需要某种 web.xml 文件。应该把这个文件放在哪里。我该怎么做呢
【问题讨论】:
您的问题是您试图访问 WEB-INF 文件夹中的资源,这是不允许的,这就是您出现此错误的原因,您必须将 jsp 放在 WebContent 文件夹下或 WebContent 文件夹下的任何文件夹下。 WEB-INF\classes 包含 Java 类的 .class 文件,它不是放置任何资源的好地方。
由于 Servlet 的 3.0 规范,Web 部署描述符 (web.xml) 是可选的。
我希望这可以帮助您解决问题
【讨论】:
将 JSP 放在 WEB-INF 下会使它们无法访问,除非您将它们映射到 WEB.XML 中 WEB-INF 的目的是隐藏东西,因为用户无法下载或访问 WEB-INF 下的任何内容。如果您不希望用户能够通过其真实姓名(即http://localhost/app/whatever.jsp)去那里但希望将其映射到某个特定的网址(即http://localhost/app/somename/),则您只需将JSP 放在WEB-INF 下即可
将 WEB-INF 下的 JSP 映射到 URL 可以在 WEB.XML 中完成
<servlet>
<servlet-name>somename</servlet-name>
<jsp-file>/WEB-INF/whatever.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>somename</servlet-name>
<url-pattern>/somename/*</url-pattern>
</servlet-mapping>
当然,如果您需要将另一个 URL 映射到 JSP,但又不需要通过其 .jsp 文件名来禁止用户访问,那么您可以为此使用 URL 重写过滤器。在这种情况下,将其放在 WEB-INF 下是没有意义的。
【讨论】: