我一直在检查,无法找到有关 FacesServlet 如何将 URL 解析为 Web 应用程序文件结构中的真实文件的解释。在 servlet 的上下文中,我的理解是 URL 只是您希望客户端使用的虚构名称。然后,在 web.xml 中,您将特定的 servlet 映射到 URL 模式,但是 servlet 的真实名称/位置对外界是隐藏的……这通常适用于 servlet。
特别是对于 JSF 2,我们处理 FacesServlet,这引出了我的第一个问题:FacesServlet 是我需要在我的应用程序中提供映射详细信息的唯一 servlet(也是我唯一需要的 servlet,期间)?答案似乎是“是”,但如果在某些情况下并非如此,请举个例子。
通过阅读关于 SO 的其他问题,我了解到并非所有请求都需要通过 FacesServlet,因此基本上请求分为 A)对不应该由 FacesServlet 处理的静态内容的请求,和 B)对动态内容的请求需要由 FacesServlet 处理。那么,静态内容是如何获得的呢?只是通过传入的请求,其中的 URL 与 FacesServlet 的 URL 模式不匹配,但匹配应用程序文件结构中的真实文件位置?
最后,我的主要问题是:当一个请求与 FacesServlet 的 URL 模式匹配时,FacesServlet 如何知道要呈现哪个视图文件 (.xhtml)?在使用 JSF 2 时是否有一个约定,我需要遵循它才能使其工作?如果不是,那么我不明白,因为就像我在上面提到的“通用”servlet 的情况下,URL 可以包含一个与真实文件名无关的名称,只要它映射到web.xml 文件中的正确 servlet。我觉得我在这里遗漏了一些明显(和重要)的东西。我唯一能想到的是 URL 应该匹配一个真实的文件位置,或者有另一个映射表或将 URL 与视图文件相关联的东西。
顺便说一句,我看了这个问题,它是相关的,但没有任何答案。
谢谢!