哪些 XHTML 文件需要放入 /WEB-INF 中,哪些不需要?

2023-12-22

提出这些问题后:

  • https://stackoverflow.com/questions/8589315/jsf2-dynamic-template https://stackoverflow.com/questions/8589315/jsf2-dynamic-template
  • 动态用户界面:包括 https://stackoverflow.com/questions/8786793/dynamic-uiinclude
  • 如何检索 @WindowScoped 上的对象? https://stackoverflow.com/questions/8911985/how-can-i-retrieve-an-object-on-windowscoped
  • 如何检查使用 @WindowScoped 存储的对象是否正确存储? https://stackoverflow.com/questions/8939037/how-can-i-check-if-an-object-stored-with-windowscoped-is-stored-correctly
  • ICE Faces 和在 WindowScoped 中创建 bean 时出现错误 https://stackoverflow.com/questions/9001426/ice-faces-and-error-in-creation-of-a-bean-in-windowscoped

我编写的所有内容都是为了解决 JSF2 框架的“愚蠢”问题,事实上我无法直接链接到存储在/WEB-INF子文件夹。之后我在 Google 和 Stackoverflow 上进行了一些研究,我知道了一件事:如何构建 JSF2 Web 项目?

特别是,我到底应该把 XHTML 页面放在哪里?


文件位于/WEB-INF最终用户确实无法公开访问文件夹。所以你不能有类似的东西http://localhost:8080/contextname/WEB-INF/some.xhtml。这将是一个潜在的安全漏洞,因为最终用户可以查看其他内容/WEB-INF/web.xml等等。

但是您可以使用/WEB-INF用于放置主模板文件、包含文件和标记文件的文件夹。例如,以下模板客户端page.xhtml放置在外面/WEB-INF并且可以通过以下方式访问http://localhost:8080/contextname/page.xhtml:

<ui:composition template="/WEB-INF/templates/template.xhtml"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
>
    <ui:define name="content">
        ...
        <ui:include src="/WEB-INF/includes/include.xhtml" />
        ...
    </ui:define>
</ui:composition>

将主模板和包含文件放置在/WEB-INF是最终用户无法通过在浏览器地址栏中输入/猜测其 URL 来直接打开它们。直接访问的普通页面和模板客户端不得放置在/WEB-INF folder.

顺便说一句,复合组件文件也不应该公开访问,但是按照规范要求它们放置在/resources默认情况下可公开访问的文件夹。如果您确保使用以下方式访问所有资源因此提供了组件 https://stackoverflow.com/questions/8367421/how-to-reference-resource-in-facelets-template/8368727#8368727这样它们就永远不会被访问/resources在 URL 中(而是通过/javax.faces.resource),那么你可以添加以下约束web.xml阻止所有公众访问/resources folder:

<security-constraint>
    <display-name>Restrict direct access to the /resources folder.</display-name>
    <web-resource-collection>
        <web-resource-name>The /resources folder.</web-resource-name>
        <url-pattern>/resources/*</url-pattern>
    </web-resource-collection>
    <auth-constraint />
</security-constraint> 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

哪些 XHTML 文件需要放入 /WEB-INF 中,哪些不需要? 的相关文章

随机推荐