fre*_*dev 52 jsf file-extension jsp facelets
我看到了一些使用.jsp扩展创建JSF页面的示例,其他示例使用.xhtml扩展创建它们,其他示例选择.jsf.我只是想知道在使用JSF页面时上述扩展之间的区别是什么,以及如何选择适当的扩展名?
Bal*_*usC 62
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只是广泛使用的FacesServlet映射URL模式之一web.xml.其他的是*.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开始,您也可以使用*.xhtmlURL模式.这样,您在指定URL时就不必感到困惑.*.xhtml在使用Facelets 1.x的JSF 1.x中无法使用URL模式,因为FacesServlet它将在每次调用自身的无限循环中运行.使用的另外一个优势*.xhtml是,最终用户将无法看到原始JSF的源代码,只要最终用户有意改变来自例如在浏览器地址栏中的URL扩展.jsf到.xhtml.不可能使用*.jspURL模式,因为这种方式JspServlet已经使用该URL模式的容器内置将被覆盖,然后FacesServlet将无法再依赖于JSP.
McD*_*ell 14
.jsp文件通常用于使用JavaServer Pages定义的JSF视图..xhtml文件通常用于使用Facelets定义的JSF视图.
这可以通过配置更改(例如,请参阅javax.faces.DEFAULT_SUFFIX和javax.faces.FACELETS_SUFFIX配置参数.)
其他扩展映射(*.jsf,*.faces)倾向于用于处理请求FacesServlet.这是JSF运行时将处理的视图的逻辑映射.如何处理映射web.xml(不必使用扩展来完成; /faces/*通常使用映射.
从规格:
Servlet映射
到web应用程序的所有请求都被映射到基于针对所选择的该web应用程序的上下文路径后的请求URL的一部分相匹配的URL的图案(如Java Servlet规范中定义的)的特定的servlet.JSF实现必须支持定义
<servlet-mapping>将任何有效url-pattern映射到FacesServlet的Web应用程序 .可以使用前缀或扩展映射.使用前缀映射时,建议使用以下映射,但不是必需的:Run Code Online (Sandbox Code Playgroud)<servlet-mapping> <servlet-name> faces-servlet-name </servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping>使用扩展映射时,建议使用以下映射,但不是必需的:
Run Code Online (Sandbox Code Playgroud)<servlet-mapping> <servlet-name> faces-servlet-name </servlet-name> <url-pattern>*.faces</url-pattern> </servlet-mapping>除了FacesServlet的,JSF实现可能支持其他的方式来调用的JavaServer Faces请求处理生命周期,但依靠这些机制的应用程序将无法移植.
| 归档时间: |
|
| 查看次数: |
54501 次 |
| 最近记录: |