繁体   English   中英

使用.jsp或.xhtml或.jsf扩展名创建JSF页面有什么区别

[英]What is the difference between creating JSF pages with .jsp or .xhtml or .jsf extension

我看到一些示例创建扩展名为.jsp的JSF页面,其他示例使用.xhtml扩展创建它们,其他示例选择.jsf 我只是想知道在使用JSF页面时上述扩展之间的区别是什么,以及如何选择适当的扩展名?

JSP是一种旧的视图技术,并与JSF 1.x结合使用。 Facelets(由一些人过度概括为XHTML )是JSP的继承者,并于2009年底作为JSF 2.x的默认视图技术引入。当您看到JSP时,您可能正在阅读过时的书籍,教程或针对JSF 1的资源。X。 在使用JSF 2.x进行开发时,通常应该忽略它们,然后转向针对JSF 2.x的资源,否则您可能最终会感到困惑,因为Facelets上的JSF 2.x中的许多内容都有所不同。

*.jsf只是web.xml FacesServlet映射的广泛使用的URL模式之一。 其他的是*.faces/faces/* ,但这些都来自JSF 1.0 / 1.1时代。 它们都不代表具体的文件扩展名/路径,而只是一个虚拟文件扩展名/路径,并且只能在URL中指定http://example.com/contextname/page.jsf 如果您熟悉基本Servlet ,那么您应该知道当请求URL与servlet的URL模式匹配时,servletcontainer将调用servlet。 因此,当请求URL与*.jsf匹配时,将以这种方式调用FacesServlet 使用JSP时,它实际上会执行page.jsp 使用Facelets时,实际上会编译page.xhtml

从JSF 2.x开始,您还可以使用*.xhtml作为URL模式。 这样,您在指定URL时就不必感到困惑。 在使用Facelets 1.x的JSF 1.x中使用*.xhtml作为URL模式是不可能的,因为FacesServlet将在每次调用自身的无限循环中运行。 使用的另外一个优点*.xhtml是,终端用户将无法看到原始JSF的源代码,只要最终用户有意改变来自例如在浏览器地址栏中的URL扩展.jsf.xhtml 不可能使用*.jsp作为URL模式,因为这样已经使用该URL模式的容器的内置JspServlet将被覆盖,然后FacesServlet将无法再以JSP为基础。

也可以看看:

.jsp文件通常用于使用JavaServer Pages定义的JSF视图。 .xhtml文件通常用于使用Facelets定义的JSF视图。

这可以通过配置更改(例如,请参阅javax.faces.DEFAULT_SUFFIXjavax.faces.FACELETS_SUFFIX配置参数。)

其他扩展映射( *.jsf*.faces )倾向于用于通过FacesServlet处理请求。 这是JSF运行时将处理的视图的逻辑映射。 如何处理映射在web.xml定义(不必使用扩展来完成;经常使用/faces/*映射。

从规格:

Servlet映射

基于将URL模式(如Java Servlet规范中所定义)与选择此Web应用程序的上下文路径之后的请求URL部分进行匹配,对Web应用程序的所有请求都映射到特定的servlet。 JSF实现必须支持定义<servlet-mapping> Web应用程序,该应用程序将任何有效的url-pattern映射到FacesServlet。 可以使用前缀或扩展映射。 使用前缀映射时,建议使用以下映射,但不是必需的:

 <servlet-mapping> <servlet-name> faces-servlet-name </servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping> 

使用扩展映射时,建议使用以下映射,但不是必需的:

 <servlet-mapping> <servlet-name> faces-servlet-name </servlet-name> <url-pattern>*.faces</url-pattern> </servlet-mapping> 

除了FacesServlet之外,JSF实现还可以支持其他方式来调用JavaServer Faces请求处理生命周期,但依赖这些机制的应用程序将无法移植。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM