JSP是一种旧的视图技术,已广泛与JSF1.x结合使用。Facelets(有些人被普遍称为XHTML)是JSP的继承者,并于2009年底作为JSF2.x的默认视图技术引入。当您看到JSP时,您可能正在阅读针对JSF 1的过时书籍,教程或资源。 。X。在使用JSF 2.x进行开发时,通常应该忽略它们,而转到针对JSF 2.x的资源,否则您可能会陷入混乱,因为在Facelets上的JSF 2.x中许多事情都以不同的方式进行。
该*.jsf
是对广泛使用的URL模式只是一个FacesServlet
中映射web.xml
。其他的是*.faces
和/faces/*
,但是这些来自JSF1.0 /1.1时代。它们均不代表具体的文件扩展名/路径,而仅代表虚拟文件扩展名/路径,并且只能在URL中指定,例如http://example.com/contextname/page.jsf。如果您熟悉基本的Servlet,那么您应该知道,当请求URL与Servlet的URL模式匹配时,servletcontainer将调用servlet。因此,当请求网址匹配时*.jsf
,FacesServlet
将以这种方式调用。使用JSP时,它实际上会执行page.jsp
。使用Facelets时,实际上可以进行编译page.xhtml
。
从JSF 2.x开始,您还可以将其*.xhtml
用作URL模式。这样,您无需在指定URL时感到困惑。*.xhtml
在带有Facelets 1.x的JSF 1.x中不可能使用URL模式,因为FacesServlet
它将随后在无限循环中运行,每次都调用它自己。使用的另外一个优势*.xhtml
是,最终用户将无法看到原始JSF的源代码,只要最终用户有意改变来自例如在浏览器地址栏中的URL扩展.jsf
到.xhtml
。不能将其*.jsp
用作URL模式,因为这样一来JspServlet
,已经使用该URL模式的容器内建函数将被覆盖,然后FacesServlet
将无法再以JSP为基础。