我开始探索JSF 2 facelet,我想在一个简单的项目中测试它。
我只是对JSF 2中的文件结构有一些疑问。当我使用Spring时, 我用来将所有页面放在WEB-INF下,以便浏览器无法访问它们。
我注意到在JSF 2中,你应该将你的* .xhtml放在WEB-INF之外,并允许通过它访问它们 Faces Servlet。
问题,这是否意味着所有使用JSF的企业应用程序总是放 他们的web.xml中有安全约束吗?
<security-constraint>
<web-resource-collection>
<web-resource-name>XHTML files</web-resource-name>
<url-pattern>*.xhtml</url-pattern>
</web-resource-collection>
<auth-constraint />
</security-constraint>
或者他们正在使用某种过滤器,它会捕获所有传入的请求,然后拒绝请求 有* .xhtml?
我的理解是否正确,如果是,哪一个更容易被使用?
由于
答案 0 :(得分:1)
JSF 2.x中的第三种选择是直接在FacesServlet
而不是*.xhtml
或其他地方映射*.jsf
。这样您就不需要使用安全约束或过滤器来防止最终用户直接访问*.xhtml
文件。它的唯一缺点是你不能在不调用FacesServlet
的情况下提供“普通的”XHTML文件,但这反过来已经没有多大意义了,因为这些文件在技术上应该具有*.html
扩展名。 / p>
请注意,这在旧的JSF 1.x中不起作用。 FacesServlet
将在无限循环中运行,一次又一次地调用它。