0

我想将所有请求映射到特定的 servlet,但 Tomcat 不允许我映射 /WEB-INF/ 目录。

我的 web.xml 文件。

<servlet>
    <servlet-name>TestServlet</servlet-name>
    <servlet-class>mypackage.TestServlet</servlet-name>
</servlet>
<servlet-mapping>
    <servlet-name>TestServlet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

这工作正常,直到您在 /WEB-INF/ 目录中请求页面(给出 404)。有没有办法将所有内容(包括 /WEB-INF/ 目录)映射到 servlet?

我还尝试使用 /WEB-INF/* 映射 servlet,但没有效果。

4

2 回答 2

1

不可以。您不能WEB-INF直接从外部访问文件。

您必须有一个html或一个jsp文件,它将请求重定向到文件WEB-INF夹内的文件。

于 2013-06-20T23:53:04.870 回答
1

根据 tomcat 标准,您需要将所有 *.html、*.jsp 等放在应用程序根目录中。/WEB-INF 目录主要用于包含您的 web.xml、类和库,但不包含 jsp/htmls。您不能直接导航到放置在 WEB-INF 目录下的任何文件/工件(也适用于 META-INF)。

这是 servlet 引擎的一个安全特性:WEB-INF 下的内容受到保护,不能通过 URL 从“外部”访问。否则,任何人都可以通过组合适当的 URL 来读取应用程序/数据库配置等敏感细节。

您需要遵循有关打包 Web 应用程序的指南,请在此处阅读更多信息:

http://tomcat.apache.org/tomcat-6.0-doc/appdev/deployment.html

于 2013-06-21T00:27:24.570 回答