Попытка изучить JSF, и иногда я вижу, что URL *.jsf
и иногда *.xhtml
или /faces/*
. Кто-то может заполнить мое знание? Когда я создаю JSF использование Facelet, расширение файла .xhtml
, таким образом, где делает .jsf
Расширение URL прибывает из?
Расширение .jsf
- это место, где FacesServlet
находится в период JSF 1.2, часто отображаемый в web.xml
.
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
Расширение .xhtml
представляет собой фактический файл Facelets, который вы физически разместили в веб-содержимом своего веб-приложения, например Webapp / WebContent / page.xhtml
.
Если вы вызываете эту страницу с расширением .jsf
, например http: // localhost: 8080 / webapp / page.jsf
, тогда будет вызван FacesServlet
, найдите файл page.xhtml
и проанализируйте / отобразите его JSF компоненты. Если FacesServlet
не вызывается, то конечный пользователь получит необработанный исходный код XHTML (который можно увидеть, щелкнув правой кнопкой мыши, Просмотреть исходный код ).
Иногда используется расширение *. Faces
или отображение папок / faces / *
. Но это было еще во времена JSF 1.0 / 1.1. Вы можете выбрать и использовать любое отображение, которое вы хотите позволить FacesServlet
прослушивать, даже если это ничего не говорит *. Xyz
. Фактическая страница всегда должна иметь расширение .xhtml
, но это можно настроить с помощью следующего
в web.xml
:
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xml</param-value>
</context-param>
Это изменит FacesServlet
на page.xml
вместо (по умолчанию) 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
). Это backported в Mojarra 2.2.11.