2013-08-12 3 views
2

서블릿과 JSP에 많은 시간을 보내고 난 후에 JSF에 대해 뭔가 배우려고합니다. 기본적인 것을 배웠고 몇 가지 간단한 예제를 만들었으며 '워크 플로우'에 대한 기본 이데아이지만 javax.faces.webapp.FacesServlet을 이해할 수 없습니다.JSF and Libraries Unclarity

<servlet> 
    <servlet-name>Faces Servlet</servlet-name> 
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.jsf</url-pattern> 
    </servlet-mapping> 

나는 "서블릿 얼굴"이 바로 XML과 그것이이 경우, 클래스와 결합됩니다 것을 단지 '내부'이름의 알고 : javax.faces.webapp.FacesServlet합니다. 하지만이 수업은 어쨌든 어디 있니?! 이클립스를 사용 중이며 새 다이나믹 프로젝트, GlassFish 4.0을 서버로, JSF 2.0을 구성 (선택된 라이브러리 없음)으로 만들었으며 어느 항아리도 가져 오지 않았습니다. 어떻게 작동 할 수 있습니까? 그리고 JBoss에서 같은 것을 실행하려고하면 javax.faces-2.2.2.jar 파일을 가져와야합니다.

이 라이브러리는 작동하지만 GlassFish에 이미 포함되어있을 수 있지만 다른 서버에 내 응용 프로그램을 배포하려고하면 문제가 발생합니까? JBoss 또는 Websphere와 같습니다. 간단히 말해서

: JSF 기술로 작업 할 때 전제 조건은 무엇인가 :

감사합니다.

+0

이러한 링크 (이 순서로 읽음)는 JSF를 더 잘 이해하는 데 도움이 될 수 있습니다. http://stackoverflow.com/questions/2095397/what-is-the-difference-between-jsf-servlet-and -jsp, http://stackoverflow.com/tags/servlets/info 및 http://stackoverflow.com/questions/3541077/design-patterns-web-based-applications/ – BalusC

답변

7

javax.faces.webapp.FacesServletServlet 인터페이스를 구현하는 클래스입니다. 응용 프로그램에서 인식 되려면 web.xml에 <servlet>으로 추가해야합니다. 이것은 기본적으로이 구성에서 수행됩니다

<servlet> 
    <servlet-name>Faces Servlet</servlet-name> 
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

지금, 우리는 얼굴 서블릿 이름을 사용하여 web.xml 파일에서이 클래스를 참조 할 수 있습니다. 다음으로 할 일은이 서블릿에서 처리 할 URL을 정의하는 것입니다. 이것은이 구성에서 수행됩니다

<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.jsf</url-pattern> 
</servlet-mapping> 

그래서, 어떤은 GET 또는 접미사 얼굴 서블릿에 의해 처리됩니다 JSF로 끝이 응용 프로그램 서버에 POST 요청. 서블릿 매핑에 다른 URL 패턴을 사용할 수 있습니다. 여기에 더 자세히 설명되어 있습니다. JSF Facelets: Sometimes I see the URL is .jsf and sometimes .xhtml. Why?

내 서버를 다른 서버에 배포하려고하면 어떤 문제가 발생합니까? JBoss 또는 Websphere와 유사합니까? 응용 프로그램 서버가 Java EE 5 호환 서버 인 경우

, 당신은 JSF 1.2의 형태 인 Mojarra 구현을 사용하여이 서블릿에 액세스 할 수 있습니다. Java EE 6 호환 서버의 경우 이는 JSF 2.x 용 Mojarra 구현에 있습니다 (정확한 버전을 알기 위해 응용 프로그램 서버의 참고 사항을 확인하십시오). 현재 GlassFish 4를 사용하면 JSF 2.2 용 Mojarra를 사용할 수 있습니다.

응용 프로그램 서버가 Java EE 호환 서버가 아닌 경우. Tomcat의 경우 웹 응용 프로그램의 WEB-INF/lib 폴더에 수동으로 라이브러리를 추가해야합니다. 추가 할 라이브러리는 무엇입니까? JSF 버전 및 요구 사항 (추가 정보)에 따라 다릅니다.

JSF 기술을 사용할 때 필요한 전제 조건은 무엇입니까?

이 내용은 StackOverflow JSF wiki입니다.거기에서 촬영 :

최소 요구 사항

  • JSF 1.0 및 1.1이 필요 서블릿 2.4/JSP 2.0 및 Java 1.4의 최소.
  • JSF 1.2는 Servlet 2.4에서 작동하지만 최소한 Servlet 2.5와 함께 사용되는 JSP/EL 2.1이 필요하므로 Servlet 2.5가 필요합니다. Facelets 1.x로 JSP 2.1을 기본보기 기술로 대체하면 Servlet 2.4에서 JSF 1.2를 사용할 수 있습니다. Java 1.5 이상이 필요합니다.
  • 기본적으로 Facelets 2.x에서 사용하는 JSF 2.0에는 최소한 서블릿 2.5와 호환되는 EL 2.1이 필요하므로 모든 서블릿 2.5 이후에 필요합니다. 자신 만의 EL 2.1 API/impl을 제공한다면 이론적으로는 Servlet 2.4에서 JSF 2.0을 실행할 수 있습니다. Java 1.5 이상이 필요합니다.
  • JSF 2.1은 Servlet 3.0 특정 기능을 사용하지만 Servlet 2.5와의 하위 호환이 가능합니다. Servlet 3.0 기능은 선택 사항입니다.
  • 타사 라이브러리가 없어도 표준 Servlet 3.0 API를 내부적으로 사용하는 새로운 파일 업로드 구성 요소 때문에 JSF 2.2에 최소한의 Servlet 3.0이 필요합니다. 최소 Java 1.6이 필요합니다.

Servlet 2.4 컨테이너의 예는 Tomcat 5.5.x, JBoss AS 4.x 및 Sun Java Application Server입니다.

Servlet 2.5 컨테이너의 예는 Tomcat 6.0.x, JBoss AS 5.x 및 GlassFish 2.x입니다.

Servlet 3.0 컨테이너의 예는 Tomcat 7.0.x, JBoss AS 6.x 및 7.x 및 GlassFish 3.x입니다.

Servlet 3.1 컨테이너의 예는 Tomcat 8.0.x, WildFly 8.x 및 GlassFish 4.x입니다.

+0

Excelent answer! 그것은 많은 오해를 해결했습니다! 고맙습니다! – erasmus77