Program Club

때로는 JSF URL이 * .jsf, 때로는 * .xhtml, 때로는 / faces / *라는 것을 알 수 있습니다.

proclub 2020. 12. 30. 08:21
반응형

때로는 JSF URL이 * .jsf, 때로는 * .xhtml, 때로는 / faces / *라는 것을 알 수 있습니다. 왜?


JSF를 배우려고했는데 URL이 *.jsf가끔 *.xhtml또는 /faces/*입니다. 누군가 내 지식을 채울 수 있습니까? Facelet을 사용하여 JSF를 만들 때 파일 확장자는입니다 .xhtml. .jsfURL 확장자는 어디에서 왔습니까?


.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확장자 가 있어야 하지만에서 다음 <context-param>으로 구성 할 수 있습니다 web.xml.

<context-param>
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    <param-value>.xml</param-value>
</context-param>

이것은 (기본값)의 instad FacesServlet를 찾기 위해 변경됩니다 .page.xmlpage.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옆에 자동 등록됩니다 . 이것은 Mojarra 2.2.11로 백 포트되었습니다./faces/**.faces*.jsf

또한보십시오:

참조 URL : https://stackoverflow.com/questions/3008395/sometimes-i-see-jsf-url-is-jsf-sometimes-xhtml-and-sometimes-faces-why

반응형