在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下,这将使您免于忘记保护它不被直接访问的错误,仅此而已!如果你想在保护下扎根,效果是一样的。