JSF 정리 News and Tip. 2007/08/14 18:42 http://blog.naver.com/snow2821/30021016979
|
JSF ( Java Server Face )
- 목적
쉽고 빠른 웹 애플리케이션 개발.
개발자가 HTTP 요청이나 응답, 마크업등에 신경을 쓰는 대신, 컴포넌트, 이벤트 기반 빈, 그리고 그것들
간의 상호작용이라는 관점에서 더 생각할 수 있도록 해준다.
- 동작
JSF는 사용자의 입력값을 수집하고 이벤트에 응답하는 자바 객체, 즉 기반 빈(backing Bean) 과
UI 컴포넌트를 자동으로 동기화 시켜준다. 또한 강력한 네비게이션 시스템과 완벽한 다국어 지원을 보장
JSF는 클라이언트가 아닌 서버에서 실행된다.
JSF는 아파치 톰캣, 오라클 애플리케이션 서버, IBM 웹스피어 애플리케이션 서버와 같은 표준 자바
웹 컨테이너에서 실행되며, HTML이나 그 밖의 마크업 언어로 된 내용을 클라이언트에게 전달한다.
스윙 애플리케이션과 같이 행동에 대한 이벤트가 발생하고 데스크탑 애플리케이션 코드에서 직접적으로
이를 처리할 수 있을 것이다.
반면에 클라이언트( 웹브라우저 )는 어떠한 JSF 컴포넌트나 이벤트도 알지 못한다.
클라이언트는 단지 HTML을 보여주는 기능만 수행한다.
용어 | 설명 |
UI 컴포넌트 (컨트롤) | 서버에서 관리되는, 상태를 유지하는 객체로서 최종 사용자와의 상호작용을 위한 기능을 제공한다. UI 컴포넌트는 속성(property), 메소드, 이벤트를 가지는 자바빈(JavaBean)이다. 이 컴포넌트들은 페이지에서 보여지는 컴포넌트들의 트리 구조로서 하나의 뷰(View)를 구성한다. (HTML, XML 등의 마크업언어 일 듯.) |
렌더러(Renderer) | UI 컴포넌트를 화면에 보여주며, 사용자의 입력을 컴포넌트의 값으로 번역하는 책임을 진다. 렌더러는 하나 이상의 컴포넌트와 함께 작동하도록 설계될 수 있고, 하나의 렌더러는 다른 렌더러와 연결될 수 있다. |
검증기(Validator) | 사용자가 입력한 값이 유효한지를 확인하는 책임을 진다. 하나이상의 검증기 사용가능 |
기반 빈(Baking bean) | UI 컴포넌트들의 값을 수집하고 이벤트 리스너 메소드를 구현하는 특별한 자바빈이다. 또한 UI 컴포넌트에 대한 참조를 가지고 있을 수 있다. |
변환기(converter) | 컴포넌트의 값과 화면에 보여주기 위한 문자열 간의 변환을 담당한다. 하나의 UI컴포넌트에 하나의 변환기를 사용할 수 있다. |
이벤트 및 리스너 | JSF는 스윙과 마찬가지로 자바빈의 이벤트/리스너 모델을 사용한다. UI 컴포넌트나 그 밖의 객체에서 이벤트들을 발생시키며, 등록되어 있는 리스너에서 그 이벤트들을 처리한다. |
메시지 | 사용자에게 보여줄 정보이다. 애플리케이션의 어떤 요소든지(기반 빈, 검증기, 변환기등) 사용자에게 보여줄 정보나 에러 메시지를 만들수 있다. |
네비게이션(Navigation) | 어떤 페이지에서 다른 페이지로 이동하는 기능을 말한다. JSF 는 특정 이벤트 리스너와 연결될 수 있는 강력한 네비게이션 시스템을 갖고 있다. |
JSF 흐름도.
1 . JSF 애플리케이션의 버튼을 클릭하면, 웹 브라우저의 요청이 서버로 전송된다.
2. JSF는 이 요청을 이벤트로 변환하여 서버측에 있는 애플리케이션 로직에서 처리될 수 있도록 하며,
또한 개발자가 정의한 서버측의 모든 UI 위젯이 브라우저에서 올바르게 표현될 수 있도록 한다.
JSF Class 구성
JSF 요약
- JSF는 “J2EE 웹 애플리케이션에 사용되는 서버사이드 사용자 인터페이스 컴포넌트 프레임워크”라 정의
- JSF는 기존의 HTML을 컴포넌트화하고, 클라이언트의 상태를 서버에서 관리하며, 브라우저에서 발생한 이벤트를 서버가 제어할 수 있도록 하여 스윙 스타일의 객체지향 웹 애플리케이션 개발이 가능
- 재사용성 가능한 UI 컴포넌트로 UI 작성의 편리성
- UI와 애플리케이션 데이터간의 데이터 변환이 용이함
- server request를 통해 UI 상태를 서버에서 관리
- 클라이언트가 발생시킨 이벤트를 서버 애플리케이션 코드가 관리하는 모델 제공
- Custom UI 컴포넌트 개발의 용이성
- 최신 기술로서 Reference site 부재
- JSF 를 사용하기 위해 많은 라이브러리 참조, 각 라이브러리 및 개발 환경의 버젼 복잡
- JSF 로 구현된 jsp 페이지의 컴파일이 느리며 tag 및 managed bean 사용 시 에러 발생에 대한 디버깅 어려움
- 특정 프로젝트의 UI Custom tag, 및 script 추가 개발 필요
- 좀더 강력한 UI Design tools 필요(상용 tools)
- UI Layer인 JSF에서 Business layer 의 framework 과 연동 고려
- JSF navigation rule 및 managed bean의 설명을 위한 산출물 필요