Top

JSF 인 액션 [표준 UI 프레임워크]

  • 원서명JavaServer Faces IN ACTION (ISBN 1932394125)
  • 지은이Kito Mann
  • 옮긴이이태상
  • ISBN : 8989975875
  • 35,000원
  • 2006년 03월 17일 펴냄
  • 페이퍼백 | 736쪽 | 190*255mm

책 소개

Java EE 5에 정식 포함될 컴포넌트 기술 표준인 JSF(JavaServer Faces)를 설명하는 `JSF 인 액션`은 JSR 252(JavaServer Faces 1.2)의 멤버인 Kito D. Mann이 저술한 『JavaServer Faces in Action 』의 번역서이다. JSF 애플리케이션 제작에 필요한 모든 사항을 다루며, 실전 JSF 예제를 통해 UI 로직 및 애플리케이션 로직을 구현해본다. 자바 웹 애플리케이션에 있어서의 표준 UI 기술로서 널리 사용될 JSF의 모든 것을 알아볼 수 있는 국내 유일한 기술서이다.

JSF(JavaServer Faces)를 사용하면 HTTP 요청과 응답 대신 UI 컴포넌트와 이벤트를 통해 웹 애플리케이션을 효율적으로 개발할 수 있다. 버튼, 텍스트 박스, 체크박스, 데이터 그리드 등과 같은 JSF 컴포넌트들은 사용자의 요청들 사이에 유지되기 때문에, 상태를 관리하기 위한 별도의 번거로운 작업들이 필요 없다. 또한 JSF는 사용자의 입력과 애플리케이션 객체를 동기화 시킴으로써 웹 개발에 있어서의 지루한 또 다른 작업들을 자동으로 처리한다.

JSF 인 액션은 입문서이자 학습서이며, 편리한 참고서이다. 이 책은 많은 예제와 함께 JSF가 무엇인지, 어떻게 작동하는지, 그리고 스트럿츠, 서블릿, 포틀릿, JSP, JSTL 등의 기술 및 또 다른 프레임워크와 어떤 관계가 있는지 설명한다. 또한 표준 컴포넌트, 렌더러, 변환기, 검증기 등을 자세히 다루며, 그것들을 사용하여 탄탄한 애플리케이션을 만드는 방법을 제공한다. 이 책은 여러분이 지금 당장 JSF 애플리케이션 개발을 시작할 수 있도록 도와줄 것이다.


[ 이 책에서 다루는 내용 ]

* JSF 위젯 사용 방법
* 기존의 애플리케이션 및 스트럿츠와 통합하는 방법
* 오라클, IBM, 썬의 JSF 도구 소개
* 커스텀 컴포넌트 및 렌더러의 제작 방법
* 변환기 및 검증기 제작 방법
* 모든 요소를 결합하여 JSF 애플리케이션을 개발하는 방법


▶ 온라인 추가문서(영문본 PDF파일)는 JSF 인 액션을 구입하신 분만 볼 수 있도록 암호화 되어있습니다. 문서를 열 때 입력하실 암호는 본 책의 xxix페이지를 참조하십시오.

저자/역자 소개

[ 저자 소개 ]

Kito D. Mann

키토 맨(Kito D. Mann)은 엔터프라이즈 아키텍처, 교육 지도, 개발 등을 전문적으로 하는 컨설턴트이다. 12살의 어린 나이에 프로그래밍을 시작했고, 자바 관련 기술에 대한 다수의 글을 기고했으며, 사용자 그룹과 컨퍼런스 등에서 강의하기도 했다. 또한 포춘 500에 속하는 여러 기업체에서 컨설팅을 수행했으며, 교육용 애플리케이션 서비스 제공 사업의 최고 아키텍트로도 일했다. 또한 키토는 JSF Central 커뮤니티 웹 사이트의 설립자이며 JSF 1.2와 JSP 2.1 전문가 그룹의 멤버이기도 하다. 존스 홉킨스 대학에서 컴퓨터 과학 학사과정을 졸업했으며, 아내와 앵무새 두 마리, 고양이 네 마리와 함께 코네티컷주 스탬퍼드에서 살고 있다. 그는 여가시간에는 전자음악 장비를 사용한 미완성 작곡을 즐긴다.


[ 저자 서문 ]

저는 항상 글 쓰는 일을 즐겼었습니다. 저는 어떤 점에서는 컴퓨터 과학보다 인류학이 더 쉽다고 느끼는 컴퓨터광 중의 한 사람입니다. 저에게 주어진 수십 권의 책을 실제로 읽었다고 교수들을 확신시킬 수 있었기 때문에 그렇습니다. 1990년대 후반, 결국 저는 잡지에 글을 기고하고 기술 서적의 리뷰를 수행함으로써 소프트웨어 개발에 대한 집념과 함께 저술에 대한 애정에 불을 댕겼습니다. 몇 년간 포춘 500에 속하는 기업들의 재정 컨설팅을 수행한 이후, 2000년도에 첫 번째 모험에 뛰어들었습니다.
조금 늦은 감이 있던 것은 맞습니다. 그러나 저는 잡지에 나와있는 모든 멋진 이야기들에 흥미를 갖고 모험에 뛰어든 친구들이 부러웠습니다. 제가 처음 선택한 것은 교육용 애플리케이션 서비스 제공 사업(최근에 McGraw-Hill에 의해 매입됐습니다)이었으며, 놀랍게도 실질적인 비즈니스 계획을 포함하고 있었습니다. 우리 제품의 핵심적인 부분은 웹 기반의 애플리케이션으로 되어 있으며, 최고 아키텍트인 저의 임무 중의 하나는 그것을 구현하는 일이었습니다(물론 다른 가엾은 영혼들과 함께 말이죠). 제가 직접 만든 웹 애플리케이션 프레임워크를 사용하는 대신, 그 당시에는 최선의 결정이었던 스트럿츠(Struts)를 선택했습니다. 몇 차례의 배포 주기를 통해 개발 업무를 지휘하면서, 저는 스트럿츠의 장단점뿐만 아니라 서로 다른 배경 지식을 가지고 있는 팀원들과 함께 업무에 매우 중요한(mission-critical) 웹 애플리케이션을 개발함에 있어서 관련된 이슈들을 이해하게 됐습니다.
여자친구인 트레이시에게 소홀하면서까지 사력을 다했던 2년을 보낸 후, 저는 일을 그만두고 낯설었던 ‘휴식’이라는 것을 하면서 시간을 보냈습니다. 충분한 휴식을 끝낸 뒤 새로운 기술에 대한 가능한 많은 정보들을 집어삼키다가 우연히 JSR 127인 JavaServer Faces(JSF)를 알게 됐습니다. JSF는 프레임워크의 열광 속에서 점점 발생하는 문제의 해결책으로 보였습니다. 게다가 JSF는 웹 애플리케이션 개발에 있어서의 지루한 많은 자세한 사항들을 추상화하기 때문에, 여러 측면에서 스트럿츠보다 우월하다고 생각했습니다. 저에게 있어서 JSF는 자바 웹 개발 분야에 있어서의 차세대 거물(the Next Big Thing)임이 분명했습니다.
저는 아키텍처 명세나 규약이 아닌 다른 무엇인가를 저술하기를 열망했기 때문에, JSF에 대한 책을 쓴다는 것은 좋은 생각인 것 같았습니다. 저는 매닝(Manning)의 여러 책들을 리뷰한적이 있었기 때문에, 출판사에 연락하여 JSF 서적의 출판에 대해 논의했습니다. 약간의 로비가 있은 후 매닝은 허락을 했고, 그리하여 『JSF 인 액션』 프로젝트가 발족됐습니다. 우리는 표준 규약이 2004년 3월에 완료되기 전까지 급격하게 변경될 것이라는 사실을 알지 못했습니다(만약 저에게 미래를 볼 수 있는 수정 구슬이 있었다면 2003년 초에 그렇게 많은 양의 내용을 쓰지는 않았을 겁니다. 내용을 다시 쓰는 일은 즐겁지는 않았습니다).
마지막 일년 반 동안에는 많은 일들이 일어났습니다. 저는 2003년 3월에 트레이시와 결혼했습니다. (결론적으로 첫 번째 사업을 그만둔 것은 잘한 일 같습니다.) 그 해 하반기에는 유용한 정보와 FAQ를 포함하는, JSF 커뮤니티를 위한 웹 사이트인 JSF Central을 개설했습니다. 마지막으로, 2004년 3월 3일에는 JSF 1.0이 공식 발표됐습니다(5월에는 유지 관리 차원의 버전 1.1이 발표됐습니다). 그 결과, 일상적인 개발 업무를 쉽게 해 줄뿐만 아니라 마이크로소프트의 ASP.NET Web Forms 방식의 써드파티 사용자 인터페이스(UI) 컴포넌트 업계를 촉진시킴으로써 자바 웹 개발 분야에 불을 지피게 됐습니다.
저는 그 끝에서, JSF가 무엇인지, 어떻게 작동하는지, 어떻게 사용하는지의 측면뿐만 아니라 독자적인 UI 컴포넌트를 제작하는 방법까지, 이 두 가지 측면에서 이 책이 촉진제 역할을 하게 되도록 열심히 작업했습니다. 또한 JSF가 어떻게 서로 다른 IDE와 통합되는지에 대한 그림을 그리기 위해 오라클, IBM, 썬의 대표자들과 함께 작업하기도 했습니다. 추가로 이 책의 글은, 점점 성장하고 있는 JSF 생태계에 있어서 유일하게 유리한 위치를 차지하고 있는 JSF Central의 편집장으로서의 저의 역할로부터 많은 영향을 받았습니다.
이제 이 책은 여러분 손에 있습니다. 저는 『JSF 인 액션』이 JSF에 대한 여러분의 열정을 고무시키고, 여러분의 프로젝트에 유용한 도구가 되기를 희망합니다. 그러는 동안 저는 다시 휴식을 가지려고 합니다. 이 책에 대한 의견을 kmann@virtua.com으로 보내주시거나
www.manning.com/mann
에 있는 저자 온라인 포럼에 올려주시기 바랍니다. 그러면 제가 다시 깨어나서 행복하게 그 글들을 읽겠습니다.

- Kito D. Mann


[ 역자 소개 ]

이태상 eclipsians.net


생물정보학(Bioinformatics)의 꿈을 품고 프로그래밍 공부를 시작했다가 연세대학교 생물학과 졸업 후 아예 IT 업계로 뛰어들어, 4년 이상을 J2EE/WebSphere 전문가로 일했으며 현재는 금융권 차세대 시스템 구축에 참여하고 있다. 저서 및 역서로는 ‘Practical EJB Programming with IBM WebSphere(2002, 이인티그레이션)’와 ‘톰캣 최종분석(2005, 에이콘출판사)’이 있으며, J2EE 정보 공유 사이트인 이클립시언즈닷넷(eclipsians.net)을 운영하고 있다.


[ 역자 서문 ]

J2EE 기반의 웹 시스템을 구축하는 대부분의 경우, 특히 C/S 환경에서 J2EE 환경으로 기간계 애플리케이션을 재구축하는 프로젝트의 경우, 항상 아키텍트와 개발자를 고민하게 만드는 것 중에 빼놓을 수 없는 것이 바로 UI 구현 방법의 문제일 것입니다. 중소 규모의 프로젝트에서는 개발자의 막노동을 전제로 하는 자바스크립트와 ActiveX의 남발을, 중급 규모 이상의 프로젝트에서는 표준적인 접근방법은 아예 포기한 채 써드파티 UI 솔루션이나 리포팅 툴(또는 둘 모두)을 도입하는 사례를 많이 봐왔습니다. 전자의 문제점은 UI 구현에 너무 많은 수작업이 동원됨으로써 개발 생산성과 애플리케이션 품질을 현저히 떨어뜨린다는 점이며, 후자의 문제점은 특정 벤더의 제품 및 또 하나의 특정 스크립트 언어에 완전히 의존함으로써 팀의 기술력 향상이나 유지보수성 및 확장성에 도움이 되지 않는다는 점입니다.

J2EE 안에서 근본적으로 다른 두 기술(웹과 자바)이 공존하는 이상, 이 문제를 완벽하게 해결하기란 불가능할 것입니다. 그러나 JSF(JavaServer Faces)는 그 둘 사이의 관계를 훌륭한 컴포넌트 모델로서 엮어주었습니다. 이로써 개발자는 HTML 요소를 완전한 자바 컴포넌트로서 다룰 수 있게 됐으며, 어떤 써드파티 구현체나 컴포넌트를 사용하든 표준적인 방법으로 UI를 구성할 수 있게 됐습니다.

Java EE 5에는 JSF 1.2가 컴포넌트 모델 기술로서 정식으로 포함됩니다. 비록 아직 Java EE 5가 완료(final release)되지는 않았지만, IBM Rational Application Developer나 Oracle JDeveloper 등과 같은 J2EE 통합개발환경들은 이미 JSF를 지원하고 있습니다. 여러분은 이런 개발도구가 제공하는 구현체와 함께 JSF 애플리케이션을 개발할 수도 있으며, 또는 Apache MyFaces나 Sun의 RI 등의 구현체를 사용하여 J2EE 1.4 환경에서 JSF를 사용할 수 있습니다. 개발도구를 사용하지 않는다고 하더라도 JSF는 Struts처럼 쉽게 사용할 수 있습니다. JSF는 UI 컴포넌트 모델이자 동시에 MVC 아키텍처를 지원하는 웹 애플리케이션 프레임워크이기 때문입니다.

JSF 1.2 표준규약 제정에 직접 참여하고 있는 저자의 이 책은 JSF의 거의 모든 것을 다루고 있다고 해도 과언이 아닙니다. 특히 이 책은 개발도구 없이 JSF를 사용하여 개발하는 것을 기준으로 설명하기 때문에, 개발도구가 없이는 JSF를 다루기 힘들다라는 흔한 오해를 불식시켜 줄 것입니다. 이 책을 집어 든, 한 발 앞서가는 여러분의 기술력에 큰 보탬이 되기를 바랍니다.

- 이태상

목차

목차
  • 1부 JSF로의 탐험
  • 1장 JavaServer Faces 소개
  • 1.1 RAD 세상
    • 1.1.1 그렇다면 JSF란 무엇인가?
    • 1.1.2 업계의 지원
  • 1.2 기반 기술
    • 1.2.1 HTTP
    • 1.2.2 서블릿
    • 1.2.3 포틀릿
    • 1.2.4 자바빈
    • 1.2.5 JSP 및 그 밖의 웹 페이지 표현기술
  • 1.3 프레임워크, 프레임워크, 프레임워크
    • 1.3.1 프레임워크가 필요한 이유
    • 1.3.2 그녀는 `모델 2`
    • 1.3.3 JSF와 스트러츠, 그 밖의 프레임워크
  • 1.4 어디서나 존재하는 컴포넌트
  • 1.5 Hello, world!
    • 1.5.1 hello.jsp 분석
    • 1.5.2 goodbye.jsp 분석
    • 1.5.3 HelloBean 클래스 분석
    • 1.5.4 faces-config.xml 파일 설정
    • 1.5.5 web.xml 파일 설정
  • 1.6 요약
  • 2장 JSF의 기초
  • 2.1 핵심 사항
    • 2.1.1 사용자 인터페이스 컴포넌트
    • 2.1.2 렌더러
    • 2.1.3 검증기
    • 2.1.4 기반 빈
    • 2.1.5 변환기
    • 2.1.6 이벤트와 리스너
    • 2.1.7 메시지
    • 2.1.8 네비게이션
  • 2.2 요청 처리 생명주기
    • 2.2.1 단계 1: 뷰 복원
    • 2.2.2 단계 2: 요청 값 적용
    • 2.2.3 단계 3: 유효성 검증 처리
    • 2.2.4 단계 4: 모델 값 갱신
    • 2.2.5 단계 5: 애플리케이션 호출
    • 2.2.6 단계 6: 응답 렌더링
  • 2.3 컴포넌트 식별자 및 클라이언트 식별자의 이해
    • 2.3.1 명명 컨테이너
    • 2.3.2 참조 식별자
  • 2.4 JSF 표현 언어
    • 2.4.1 범위 변수의 이해
    • 2.4.2 내장 변수의 사용
    • 2.4.3 컴포넌트와 함께 EL 사용하기
  • 2.5 요약
  • 3장 워밍업: JSF의 이모저모
  • 3.1 JSF 환경 설정
    • 3.1.1 기본 요구사항
    • 3.1.2 JSF 구현체의 선택
    • 3.1.3 디렉토리 구조
    • 3.1.4 설정
  • 3.2 JSP의 역할
    • 3.2.1 JSP 인클루드 사용하기
    • 3.2.2 JSF를 JSTL 및 그 밖의 JSP 커스텀 태그와 함께 사용하기
  • 3.3 빈의 생성 및 초기화
    • 3.3.1 관리 빈 선언
    • 3.3.2 List와 Map을 관리 빈으로 선언
    • 3.3.3 값 바인딩 표현식으로 값 지정하기
  • 3.4 페이지 바다의 항해
  • 3.5 요약
  • 4장 표준 컴포넌트로 시작하기
  • 4.1 모든 것은 컴포넌트에
    • 4.1.1 HTML 속성 사용하기
    • 4.1.2 패싯의 이해
    • 4.1.3 툴의 강력함
    • 4.1.4 이면에 존재하는 렌더 키트
  • 4.2 공통 컴포넌트 특성
  • 4.3 UIViewRoot로 페이지 제어하기
  • 4.4 UIParameter로 컴포넌트 파라미터 설정하기
  • 4.5 Output으로 데이터 표현하기
    • 4.5.1 HtmlOutputText로 평범한 텍스트 보여주기
    • 4.5.2 <f:verbatim> 태그로 UIOutput 사용하기
    • 4.5.3 HtmlOutputLabel로 입력 레이블 만들기
    • 4.5.4 HtmlOutputFormat으로 파라미터화된 텍스트 만들기
    • 4.5.4 HtmlOutputLink로 하이퍼링크 보여주기
  • 4.6 HtmlGraphicImage로 이미지 보여주기
  • 4.7 HtmlMessage로 컴포넌트 메시지 보여주기
  • 4.8 HtmlMessages로 다수의 애플리케이션 메시지 보여주기
  • 4.9 Panel 컴포넌트로 그룹화 및 레이아웃 만들기
    • 4.9.1 HtmlPanelGroup으로 컴포넌트 그룹화하기
    • 4.9.2 HtmlPanelGrid로 테이블 만들기
  • 4.10 요약
  • 5장 입력 컴포넌트와 데이터 테이블 컴포넌트
  • 5.1 이벤트 리스너 등록하기
    • 5.1.1 값 변경 리스너 선언하기
    • 5.1.2 액션 리스너 선언하기
  • 5.2 공통 컴포넌트 특성
  • 5.3 HtmlForm으로 폼 다루기
  • 5.4 기본 사용자 입력 다루기
    • 5.4.1 HtmlInputText로 기본 텍스트 필드 선언하기
    • 5.4.2 HtmlInputTextarea로 메모 필드 만들기
    • 5.4.3 HtmlInputSecret으로 암호 필드 만들기
    • 5.4.4 HtmlInputHidden으로 히든 필드 만들기
  • 5.5 HtmlSelectBooleanCheckbox로 체크박스 만들기
  • 5.6 아이템 목록 정의하기
    • 5.6.1 단일한 아이템을 위한 UISelectItem
    • 5.6.2 다중 아이템을 위한 UISelectItems
  • 5.7 다중 선택 아이템 다루기
    • 5.7.1 HtmlSelectManyCheckbox로 체크박스 그룹 만들기
    • 5.7.2 HtmlSelectManyListbox로 리스트박스 만들기
    • 5.7.3 HtmlSelectManyMenu로 단일 아이템 리스트박스 만들기
  • 5.8 단일 선택 아이템 다루기
    • 5.8.1 HtmlSelectOneRadio로 라디오 버튼 그룹 만들기
    • 5.8.2 HtmlSelectOneListbox로 단일 선택 리스트박스 만들기
    • 5.8.3 HtmlSelectOneMenu로 콤보 박스 만들기
  • 5.9 애플리케이션 명령 실행
    • 5.9.1 HtmlCommandButton으로 버튼 만들기
    • 5.9.2 HtmlCommandLink로 액션 링크 만들기
  • 5.10 HtmlDataTable로 데이터 집합 표현하기
  • 5.11 요약
  • 6장 국제화, 검증기, 변환기
  • 6.1 국제화와 지역화
    • 6.1.1 지역화 살펴보기
    • 6.1.2 리소스 번들 만들기
    • 6.1.3 컴포넌트와 함께 리소스 번들 사용하기
    • 6.1.4 백엔드 코드의 텍스트에 대한 국제화
  • 6.2 입력값 검증
    • 6.2.1 검증 메소드 사용하기
    • 6.2.2 검증기 사용하기
    • 6.2.3 표준 검증기 사용하기
    • 6.2.4 여러 검증기의 조합
  • 6.3 타입 변환 및 포맷팅
    • 6.3.1 변환기 사용하기
    • 6.3.2 표준 변환기로 작업하기
  • 6.4 애플리케이션 메시지 커스터마이징하기
  • 6.5 요약

  • 2부 사용자 인터페이스 개발
  • 7장 ProjectTrack 소개
  • 7.1 요구사항
  • 7.2 개념적 모델
  • 7.3 사용자 인터페이스
  • 7.4 개발팀
  • 7.5 요약
  • 8장 로그인 페이지 작성: 자바 코드 없이 사용자 인터페이스 개발하기
  • 8.1 시작하기
    • 8.1.1 web.xml의 설정
    • 8.1.2 faces-config.xml의 설정
  • 8.2 로그인 페이지 작성
    • 8.2.1 HtmlGraphicImage와 HtmlOutputText 컴포넌트 추가
    • 8.2.2 폼 추가
  • 8.3 페이지에 멋 내기
    • 8.3.1 버튼 이미지 사용하기
    • 8.3.2 자바스크립트 추가하기
    • 8.3.3 CSS 추가하기
  • 8.4 검증기 추가하기
    • 8.4.1 검증 메시지 커스터마이징
  • 8.5 HtmlPanelGrid를 사용한 레이아웃 개선
  • 8.6 요약
  • 9장 나머지 페이지 작성: 자바 코드 없이 사용자 인터페이스 개발하기
  • 9.1 커스텀 컴포넌트로 헤더 만들기
    • 9.1.1 커스텀 툴바 컴포넌트 사용하기
    • 9.1.2 네비게이션 규칙 설정하기
  • 9.2 패널을 사용한 데이터 테이블 프로토타이핑
    • 9.2.1 `인박스` 페이지
    • 9.2.2 네비게이션 규칙 설정
    • 9.2.3 `전체 보기` 페이지
    • 9.2.4 네비게이션 규칙 설정
  • 9.3 입력 폼 만들기
    • 9.3.1 `프로젝트 승인` 페이지
    • 9.3.2 네비게이션 규칙 설정
    • 9.3.3 `프로젝트 기각` 페이지
    • 9.3.4 네비게이션 규칙 설정
    • 9.3.5 `프로젝트 생성` 페이지
    • 9.3.6 네비게이션 규칙 설정
  • 9.4 `프로젝트 상세보기` 페이지
    • 9.4.1 네비게이션 규칙 설정
  • 9.5 요약
  • 10장 애플리케이션 기능 통합
  • 10.1 JSF 개발 방식의 이해
  • 10.2 애플리케이션 환경 알아보기
  • 10.3 보안 적용을 위한 페이지 재구성
  • 10.4 로그인 페이지
    • 10.4.1 네비게이션 규칙 수정
  • 10.5 헤더
    • 10.5.1 네비게이션 규칙 수정
  • 10.6 데이터 그리드 통합
    • 10.6.1 `인박스` 페이지
    • 10.6.2 `전체 보기` 페이지
  • 10.7 입력 폼 통합
    • 10.7.1 인클루드 수정
    • 10.7.2 `프로젝트 승인` 페이지
    • 10.7.3 `프로젝트 기각` 페이지
    • 10.7.4 `프로젝트 생성` 페이지
  • 10.8 ‘프로젝트 상세보기` 페이지
    • 10.8.1 네비게이션 규칙 수정
  • 10.9 에러 페이지 추가하기
    • 10.9.1 web.xml 수정
    • 10.9.2 네비게이션 규칙 수정
  • 10.10 UI의 국제화 및 지역화
    • 10.10.1 텍스트를 리소스 번들로 옮기기
    • 10.10.2 헤더의 국제화
    • 10.10.3 러시아어를 위한 지역화
  • 10.11 요약

  • 3부 애플리케이션 로직 개발
  • 11장
  • 11.1 서블릿에서 JSF까지
  • 11.2 애플리케이션의 근간
    • 11.2.1 Application
    • 11.2.2 표현식 평가하기
  • 11.3 모든 것이 컨텍스트 안에
    • 11.3.1 FacesContext
    • 11.3.2 FacesMessage
    • 11.3.3 ExternalContext
  • 11.4 이벤트 처리
    • 11.4.1 FacesEvent
    • 11.4.2 액션 이벤트의 처리
    • 11.4.3 값-변경 이벤트의 처리
    • 11.4.4 단계 이벤트의 처리
  • 11.5 컴포넌트의 재조명
    • 11.5.1 UIComponent
    • 11.5.2 UIViewRoot
    • 11.5.3 ValueHolder
    • 11.5.4 EditableValueHolder
    • 11.5.5 SelectItem 및 SelectItemGroup 모델 빈
  • 11.6 요약
  • 12장 애플리케이션 빌드: 설계 및 기초 클래스
  • 12.1 애플리케이션의 계층
  • 12.2 빈(bean) 요리하기
    • 12.2.1 toString의 중요성
    • 12.2.2 직렬화
    • 12.2.3 모든 것이 특성 안에
    • 12.2.4 빈 공개하기
  • 12.3 비즈니스 계층 및 데이터 계층 분석
  • 12.4 애플리케이션 계층 개발하기
    • 12.4.1 상수 다루기
    • 12.4.2 유틸리티 메소드 구성하기
    • 12.4.3 싱글톤 초기화
    • 12.4.4 비즈니스 객체의 적용
  • 12.5 세션 유지를 위한 Visit 객체 작성
  • 12.6 기초 기반 빈 클래스 개발
  • 12.7 요약
  • 13장 애플리케이션 빌드: 기반 빈, 보안, 국제화
  • 13.1 기반 빈 작성
    • 13.1.1 쓰레드 안전성
    • 13.1.2 에러 처리
    • 13.1.3 인증 수행
    • 13.1.4 UIData를 통한 프로젝트의 목록화 및 리스너의 파라미터화
    • 13.1.5 프로젝트 갱신
    • 13.1.6 프로젝트 생성
    • 13.1.7 UIData로 프로젝트 이력 보여주기
    • 13.1.8 JDBC ResultSet과 UIData로 작업하기
  • 13.2 보안 적용하기
    • 13.2.1 컨테이너 기반 보안 vs. 커스텀 보안
    • 13.2.2 커스텀 보안 사용하기
  • 13.3 코드에서의 국제화 지원
    • 13.3.1 리소스 번들을 통한 텍스트의 국제화
    • 13.3.2 메시지의 국제화
  • 13.4 설계 방식의 결정과 대안
    • 13.4.1 비즈니스 계층으로의 접근
    • 13.4.2 기능별로 빈 구성하기
    • 13.4.3 액션 메소드를 기반 빈에서 구현
    • 13.4.4 관리 빈 생성 설비를 통한 기반 빈 특성의 초기화
  • 13.5 요약
  • 14장 스트럿츠 및 기존 애플리케이션과의 통합
  • 14.1 통합의 의미
  • 14.2 JSF를 다른 프레임워크와 통합하는 경우
  • 14.3 요청과 응답의 다양한 얼굴
  • 14.4 JSF와 스트럿츠 애플리케이션의 통합
    • 14.4.1 첫 단계
    • 14.4.2 스트럿츠 JSP 태그 변경
    • 14.4.3 JSF 액션 메소드와 관리 빈 사용하기
    • 14.4.4 누가 누구를 제어하는가?
  • 14.5 스트럿츠를 사용하지 않는 애플리케이션과 JSF와의 통합
  • 14.6 요약

  • 4부 커스텀 컴포넌트, 렌더러, 검증기 및 변환기 작성
  • 15장 JSF 환경: 컴포넌트 개발자의 관점
  • 15.1 UI 확장의 열반으로 가는 세 단계
  • 15.2 UI 컴포넌트 개발
    • 15.2.1 UI 컴포넌트의 제작 여부 결정
    • 15.2.2 클래스와 인터페이스
    • 15.2.3 메소드 바인딩을 사용한 이벤트 처리
    • 15.2.4 등록
    • 15.2.5 JSP와의 통합
  • 15.3 렌더러 개발
    • 15.3.1 렌더러의 작성 여부 결정
    • 15.3.2 Renderer
    • 15.3.3 RenderKit
    • 15.3.4 등록
    • 15.3.5 JSP 통합
  • 15.4 검증기 개발
    • 15.4.1 Validator
    • 15.4.2 등록
    • 15.4.3 JSP 통합
  • 15.5 변환기 개발
    • 15.5.1 Converter
    • 15.5.2 등록
    • 15.5.3 JSP 통합
  • 15.6 국제화 다루기
  • 15.7 UI 확장 컴포넌트의 패키징
  • 15.7 요약

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

p63 세 번째 문단 3행
redisplayCommand의 action 특성과 goodbyeCommand의 actionListener 특성도 모두 복원된다.
→ redisplayCommand의 actionListener 속성과 goodbyeCommand의 action 속성도 모두 복원된다.

p82 표 2.6에서 paramValues 행, 예제 열
#{param.address[2]} → #{paramValues[address][2]}

p150 리스트 4.1 10행
<span style="background-color: grey"> → <span style="background-color: gray">

p161 표 4.14 컴포넌트 태그 행
<f:param value="#{"header[ "User-Agent" ]}"/>

p170 표 4.22 심각도 열
IInfo → Info

p193 표 5.4 JSP 태그 행
<h:input> → <h:inputText>

p209 두 번째 문단 1행
tablindex → tabindex

p228 ◆ 네 번째 항목
◆ 이전 예제에서의 HtmlInputText 대신 각 열에 HtmlOutputText 컴포넌트를 사용함으로써,
→ ◆ 이전 예제에서의 HtmlOutputText 대신 각 열에 HtmlInputText 컴포넌트를 사용함으로써,

p260 표 6.7 K행, 의미 열
시각 → 시간

p263 표 6.9 currency 행, 예제 (한국) 열
8356;2,934.23 → \2,934.23

p342 리스트 9.11
리스트 9.11 reject.jsp: '프로젝트 생성' 페이지의 JSP 소스
→ 리스트 9.11 create.jsp: '프로젝트 생성' 페이지의 JSP 소스

p388 리스트 10.2
,project-input → project-input

p454 15행
"lizard" → "lizards"

p512 5행
sort 액션 리스너 메소드에 의해 저장될 수 있다.
→ sort 액션 리스너 메소드에 의해 정렬될 수 있다.

p517 노트 아래로 네 번째 행
Proejct → Project

p543 노트 아래 첫 번째 행
설계의 예가 아니다 → 구현의 예가 아니다

p557 표 13.2 요약문 (영어), 상세문 (영어) 열 수정


p572 그림 14.1