【问题标题】:Tomcat 7 /WEB-INF/ directory mappingTomcat 7 /WEB-INF/ 目录映射
【发布时间】:2013-06-18 00:30:32
【问题描述】:

我想将所有请求映射到特定的 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,但没有效果。

【问题讨论】:

标签: java tomcat web.xml


【解决方案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

【讨论】:

    【解决方案2】:

    没有。您无法直接从外部访问WEB-INF 中的文件。

    您必须在外部有一个htmljsp 文件,它将请求重定向到WEB-INF 文件夹内的文件。

    【讨论】:

    • 我不想访问 /WEB-INF/ 目录中的任何内容。我只想拦截来自目录的请求并用我自己的 servlet 处理它,而不是自动 404。
    • 它硬连线到容器中。容器甚至没有那么远。这基本上是一种安全预防措施。
    猜你喜欢
    • 2011-01-15
    • 2013-06-20
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 2014-01-09
    • 2012-07-03
    • 2013-06-29
    • 1970-01-01
    相关资源
    最近更新 更多