Попробуйте изучить JSF, и иногда я вижу, что URL .jsf, а иногда и .xhtml. Может кто-то заполнит мои знания, пожалуйста? Когда я создаю JSF с использованием Facelet, расширение файла .xhtml, и откуда происходит расширение URL .jsf?
JSF Facelets: Иногда я вижу URL-адрес .jsf и иногда .xhtml. Зачем?
Ответ 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, а какие нет?