Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有时我看到JSF URL是*.JSF,有时是*.xhtml,有时是/faces/*。为什么?_Jsf_Web.xml_Facelets_Url Pattern - Fatal编程技术网

有时我看到JSF URL是*.JSF,有时是*.xhtml,有时是/faces/*。为什么?

有时我看到JSF URL是*.JSF,有时是*.xhtml,有时是/faces/*。为什么?,jsf,web.xml,facelets,url-pattern,Jsf,Web.xml,Facelets,Url Pattern,我一直在尝试学习JSF,有时我看到URL是*.JSF,有时是*.xhtml或/faces/*。有人能告诉我吗?当我使用Facelet创建JSF时,文件扩展名是.xhtml,那么.JSFURL扩展名从何而来?.JSF扩展名是FacesServlet在JSF1.2期间的位置,通常映射在web.xml中 <servlet-mapping> <servlet-name>facesServlet</servlet-name> <url-patter

我一直在尝试学习JSF,有时我看到URL是
*.JSF
,有时是
*.xhtml
/faces/*
。有人能告诉我吗?当我使用Facelet创建JSF时,文件扩展名是
.xhtml
,那么
.JSF
URL扩展名从何而来?

.JSF
扩展名是
FacesServlet
在JSF1.2期间的位置,通常映射在
web.xml

<servlet-mapping>
    <servlet-name>facesServlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>facesServlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
这将更改
FacesServlet
以定位
page.xml
instad of(默认)
page.xhtml

<servlet-mapping>
    <servlet-name>facesServlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>facesServlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
最近,JSF/Facelets 2.0使用了
*.xhtml
映射。在JSF/Facelets 1.x中,不可能使用与物理文件相同的映射扩展名。这将导致一个无限循环。但是由于JSF/Facelets 2.0,这是可能的,并且允许您通过
http://localhost:8080/webapp/page.xhtml

<servlet-mapping>
    <servlet-name>facesServlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>facesServlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

小脸蛋
*.xhtml
这样,您就不需要配置一些安全限制来隐藏原始源文件,以备最终用户在URL中将例如
.jsf
更改为浏览器地址栏中的
.xhtml
时使用。只有工具(IDE和插件)和学习资源仍然需要赶上提倡的从
*.jsf
*.xhtml
的转变。根据JSF 2.3,默认情况下,
FacesServlet
也将在
*.xhtml
上自动注册(紧挨着
/faces/*
*.faces
*.JSF
)。这是后端口到Mojarra 2.2.11

另见:

我明白了,您能告诉我web.xml中的映射是如何发生的吗?当servletcontainer启动时,它解析web.xml,加载所有servlet,记住映射,然后在每次请求时它都会检查url是否与servlet映射匹配,然后调用servlet。另请参阅一个粗略的示例。这个答案非常好,可能应该在JavaEE手册中:)@Bailey:实际上在servlet一章中有解释。因此,学习JSF基本上需要基本的知识。然而,JavaEE6教程的处理时间晚于JSF(第15章,而JSF在第4章中处理)。