Ответ 1
Расширение .jsf
, где FacesServlet
часто по умолчанию отображается в web.xml
.
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
Расширение .xhtml
имеет файл фактический Facelets, так как вы физически размещены в webcontent вашего webapp, например. Webapp/WebContent/page.xhtml
.
Если вы вызываете эту страницу с расширением .jsf
, например. http://localhost:8080/webapp/page.jsf
, тогда будет вызываться FacesServlet
, найти файл page.xhtml
и проанализировать/отобразить его компоненты JSF. Если FacesServlet
не вызывается, то конечный пользователь получит исходный исходный код XHTML (который можно увидеть правой кнопкой мыши, View Source).
Иногда используется расширение *.faces
или /faces/*
foldermapping. Но это происходило со времен JSF 1.0/1.1. Вы можете выбирать и использовать любое сопоставление, которое вы хотели бы позволить прослушивать FacesServlet
, даже если это ничего не говорит *.xyz
. Сама фактическая страница всегда должна иметь расширение .xhtml
, но это настраивается следующим <context-param>
в web.xml
:
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xml</param-value>
</context-param>
Это изменит FacesServlet
, чтобы найти page.xml
instad (по умолчанию) page.xhtml
.
Совсем недавно с использованием 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>*.xhtml</url-pattern>
</servlet-mapping>
Таким образом вам не нужно настраивать некоторые ограничения безопасности, чтобы скрыть исходные исходные файлы для случаев, когда конечный пользователь меняет, например, .jsf
в URL-адресе .xhtml
в адресной строке браузера. Только инструментальные средства (IDE и плагины) и учебные ресурсы по-прежнему нуждаются в том, чтобы догнать защищенный переход от *.jsf
до *.xhtml
. Согласно JSF 2.3, FacesServlet
по умолчанию будет авторегистратором на *.xhtml
тоже (рядом с /faces/*
, *.faces
и *.jsf
). Это передано Mojarra 2.2.11.
См. также:
- Установить домашнюю страницу по умолчанию через < приветственный файл > в проекте JSF
- JSF возвращает пустую/непроверенную страницу с помощью обычного/исходного источника XHTML/XML/EL вместо отображаемого HTML-вывода
- В чем разница между созданием JSF-страниц с расширением .jsp или .xhtml или .jsf
- Какие файлы XHTML мне нужно ввести /WEB -INF, а какие нет?