【问题标题】:TomCat 6: can welcome page be inside WEB-INF?TomCat 6:欢迎页面可以在WEB-INF里面吗?
【发布时间】:2010-12-02 03:10:25
【问题描述】:

我正在按照这个示例来启动并运行 Spring:http://static.springsource.org/docs/Spring-MVC-step-by-step/part2.html

他们所做的是将所有 .jsp 文件移动到 WEB-INF 中,以阻止用户直接访问它们……到目前为止一切顺利。然而,servlet 有一个 index.jsp 的欢迎页面,当它被移动到 WEB-INF 目录中时,我得到了错误。我无法确定 Tomcat 6 是否应该允许欢迎页面位于 WEB-INF 中?

【问题讨论】:

    标签: tomcat servlets web.xml


    【解决方案1】:

    我使用这种技术(适用于 Servlet API >= 2.4):

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
        <url-pattern>/index.htm</url-pattern>    <<==  *1*
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>index.htm</welcome-file>   <<== *2*
    </welcome-file-list>
    

    所以你不再需要 redirect.jsp 了:

    <% response.sendRedirect("/myproject/MyAction.action"); %>
    

    在非WEB-INF目录!!

    这里有两个使用相同技术的博客:

    更新来自Servlet API 2.4文档的SRV.9.10 Welcome Files部分^

    这种机制的目的是允许部署者指定一个有序的 容器的部分 URI 列表,用于在存在 URI 时附加到 URI 请求对应于 WAR 中未映射到的目录条目的 URI 一个 Web 组件。这种请求称为有效的部分请求。 以下常见示例清楚地说明了该设施的用途: 可以定义“index.html”的欢迎文件,以便对 URL 的请求 host:port/webapp/directory/,其中 `directory' 是 WAR 中的一个条目,即 未映射到 servlet 或 JSP 页面,以 `host:port/ 形式返回给客户端 webapp/目录/index.html”。

    【讨论】:

    • 这个答案假定 Spring,但问题中没有任何内容表明 OP 正在使用 Spring。
    • 为什么?它基于 Servlet API 2.4 文档的SRV.9.10 Welcome Files 部分。没有 Spring 关键字...
    • dispatcher on / 是经典的 Spring。
    • 是的,我从我的 Spring 项目中复制了一部分(作为真实的例子)。但是您可以使用任何 servlet 和任何 servlet 映射 URL 模式来做到这一点...
    • 哦?相应地更改答案,然后在没有任何第三方框架的情况下实现它。据我们所知,如果没有一个 servlet 转发到 /WEB-INF 资源,这是不可能的,就像 Spring 的调度程序一样,正如 skaffman 已经回答了很久。
    【解决方案2】:

    我正在尝试相同的教程。教程没有这么说,但我将 web.xml 中的值从“index.jsp”更改为“/WEB-INF/jsp/index.jsp”。

    【讨论】:

      【解决方案3】:

      WEB-INF 内部的任何东西都不能直接访问,但必须先通过其他东西(通常是 servlet),然后在内部将请求转发到 WEB-INF 资源。

      【讨论】:

        猜你喜欢
        • 2012-08-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-08
        • 2015-03-28
        • 2014-01-29
        • 1970-01-01
        • 1970-01-01
        • 2023-03-28
        相关资源
        最近更新 更多