JSF 2.2资源应该放在哪里:WEB-INF或root



在JSF 2.2之前,javascript、css和复合组件等资源将被放置在/resources文件夹中的web存档的根目录下。WEB-INF中的安全约束将伴随此设置,以防止直接访问:

<security-constraint>
    <display-name>Restrict direct access to JSF resources</display-name>
    <web-resource-collection>
        <web-resource-name>JSF resources</web-resource-name>
        <url-pattern>/resources/*</url-pattern>
    </web-resource-collection>
    <auth-constraint />
</security-constraint> 

然而,在JSF 2.2中,您可以简单地将resources文件夹放在WEB-INF:/WEB-INF/resources中。这为资源提供了隐含的保护,使其免受直接访问。

根据Tomcat文档和IBM文档,WEB-INF将其描述为存储配置文件的文件夹。将非配置资源放在WEB-INF中只是为了获得WEB-INF目录的保护,这似乎是一种黑客行为。

两种存储资源的方法在效果上是否相同?这两种方法都有具体的缺点吗?

您可以安全地将资源放在WEB-INF下,这将使您免于忘记保护它不被直接访问的错误,仅此而已!如果你想在保护下扎根,效果是一样的。

最新更新