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为基础。



