[Servlet 3.0과 JSP 2.2 핵심을 꼭꼭 짚은]
서블릿 & JSP 자바 웹 프로그래밍 완성
- 원서명Servlet & JSP: A Tutorial (ISBN 9780980839623)
- 지은이부디 커니아완
- 옮긴이안세원
- ISBN : 9788960773660
- 30,000원
- 2012년 11월 27일 펴냄 (절판)
- 페이퍼백 | 504쪽 | 188*250mm
- 시리즈 : 웹 프로페셔널
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
[ 소개 ]
서블릿과 JSP는 자바 웹 애플리케이션의 기반 기술이다. 따라서 JSF, 스트럿츠 2, 스프링 MVC 등의 프레임워크를 효과적으로 이용하기 위해서는 반드시 익혀둬야 한다.
이 책은 서블릿 3.0과 JSP 2.2를 기준으로 자바로 웹 개발을 할 때 숙지해야 할 주요 프로그래밍 개념, 설계 모델, 관련 기술을 소개한다. 최신 버전의 서블릿과 JSP에 추가된 새로운 기능도 설명한다. 또한 다양한 예제와 폭넓은 주제를 수록했으므로 프로젝트 진행에 실전적인 도움을 주는 가이드가 될 것이다.
명쾌하고 쉬운 설명을 원한다면 이 책이 탁월한 선택이 될 것이다.
[ 이 책에서 다루는 내용 ]
■ 서블릿 API
■ JSP 문법과 스크립팅 요소
■ 세션 관리
■ 표현식 언어
■ JSTL
■ 커스텀 태그와 태그 파일
■ 필터와 리스너
■ 애플리케이션 설계
■ 커넥션 풀링
■ 의존성 주입
■ 파일 업로드와 파일 다운로드
■ 비동기 처리
■ 보안
■ 배포와 배포 기술서
■ 동적 등록
■ 서블릿 컨테이너 초기자
[ 이 책의 구성 ]
1장 ‘서블릿’은 서블릿 API를 소개하며, 몇 가지 간단한 서블릿도 함께 살펴본다. 서블릿 API는 4개의 자바 패키지로 구성되는데, 1장에서는 javax.servlet과 javax.servlet.http 패키지를 살펴본다.
2장 ‘세션 관리’는 세션 추적, 세션 관리를 다룬다. HTTP는 상태를 갖지 않기 때문에 웹 개발을 할 때 세션 관리는 매우 중요하다. 2장에서는 세션을 다시 찾아내는 방법인 URL 리라이팅(URL rewriting), 숨김 필드(hidden field), 쿠키(cookies), HTTPSession 객체를 소개한다.
3장 ‘JSP’에서는 JSP 문법의 구성 요소인 지시어, 스크립팅 요소, 액션을 다룬다. JSP(JavaServer Pages)는 서블릿을 보완하는 기술이다.
4장 ‘표현식 언어’에서는 JSP 2.0에 추가된 가장 중요한 기능인 표현식 언어(EL, expression language)를 설명한다. EL은 JSP에서 스크립트를 없앨 목적으로 만들어졌다. EL을 이용하면 JSP를 좀 더 효율적으로 작성할 수 있으며, JSP의 길이도 줄일 수 있다. 4장에서는 EL을 이용해 자바빈(JavaBeans)과 유효 범위 객체(scoped objects)에 접근하는 방법을 알아본다.
5장 ‘JSTL’은 JSTL(JavaServer Pages Standard Tag Library)의 주요 라이브러리를 설명한다. JSTL은 커스텀 태그 라이브러리의 모음으로, 맵이나 컬렉션의 반복, 조건부 실행, XML 처리, 데이터베이스 접근과 데이터 조작 등의 일반적인 문제를 해결하는 태그를 제공한다.
6장 ‘커스텀 태그’에서는 커스텀 태그 작성법을 알아본다. JSTL를 이용하면 유효 범위 객체에 접근하는 등 JSP에서 수행하는 대부분의 작업을 처리할 수 있다. 하지만 JSTL이 해결해 주지 못하는 작업을 처리하려면 커스텀 태그(custom tag)를 만들어 사용해야 한다.
7장 ‘태그 파일’에서는 간단하게 커스텀 액션을 작성할 수 있게 JSP 2.0에 추가된 기능인 태그 파일(tag file)을 다룬다. 7장에서는 태그 파일로 커스텀 태그를 작성하는 방법과 유의점을 알아본다.
8장 ‘리스너’는 서블릿에 이벤트 주도 프로그래밍 기법을 적용하는 방법을 다룬다. 서블릿 API에 포함된 이벤트 클래스와 리스너 인터페이스를 알아보고, 리스너를 작성하는 방법과 서블릿/JSP 애플리케이션에 적용하는 방법을 알아본다.
9장 ‘필터’는 필터를 다룬다. 필터는 요청을 가로채 처리하는 웹 객체다. Filter, FilterConfig, FilterChain 등의 필터 API를 살펴보고, Filter 인터페이스를 구현해 필터를 작성하는 방법을 알아본다.
10장 ‘애플리케이션 설계’에서는 모델 2 아키텍처를 설명한다. 아주 간단한 애플리케이션을 뺀 거의 모든 자바 웹 애플리케이션에는 모델 2 아키텍처가 권장된다. 예제를 통해 모델 2 애플리케이션을 구성하는 컴포넌트를 알아본다.
11장 ‘파일 업로드’에서는 서블릿 3의 파일 업로드 기능을 사용하는 방법을 알아보고, 더 나은 사용자 경험을 제공할 수 있는 클라이언트 측 구현 방법을 알아본다.
12장 ‘파일 다운로드’는 프로그램적으로 브라우저에 리소스를 전달하는 방법을 설명한다.
13장 ‘요청과 응답 데코레이팅’에서는 데코레이터 패턴(Decorator pattern)을 적용해 서블릿 요청과 응답 객체의 행위를 변경하는 방법을 알아본다. 서블릿 API는 서블릿 요청과 응답을 래핑하는 클래스를 제공한다.
14장 ‘비동기 처리’는 서블릿 3.0에 추가된 비동기 처리 기능을 다룬다. 서블릿/JSP 애플리케이션에 처리 시간이 오래 걸리는 요청이 있다면 비동기 처리가 유용한 해결책이 될 수 있다. 비동기 처리 기능은 요청 처리 스레드가 다른 요청을 처리할 수 있게 작업을 새로운 스레드에 할당한 후 요청 처리 스레드를 스레드 풀에 반환한다.
15장 ‘보안’은 선언적 방법과 프로그램적 방법을 이용해 자바 웹 애플리케이션에 보안을 적용하는 방법을 다룬다. 15장에서는 보안과 관련된 주요 주제인 사용자 인증(authentication), 권한 검증(authorization), 기밀성(confidentiality), 데이터 일관성(data integrity)과 관련된 내용을 알아본다.
16장 ‘배포’에서는 서블릿/JSP 애플리케이션의 배포 절차와 배포 기술서(deployment descriptor의 구성 요소를 알아본다.
17장 ‘동적 등록과 서블릿 컨테이너 초기자’는 서블릿 3에 추가된 기능 중 두 가지를 다룬다. 동적 등록(dynamic registration) 기술을 이용하면 애플리케이션을 재시작하지 않고도 웹 객체를 동적으로 등록할 수 있다. 또 다른 기능인 서블릿 컨테이너 초기자는 프레임워크 개발자에게는 매우 반가운 기능이다.
18장 ‘스트럿츠 2 소개’에서는 MVC 프레임워크인 스트럿츠 2(Struts 2)를 소개한다. 스트럿츠 2의 기본 컴포넌트, 설정 방법을 알아보고, 간단한 애플리케이션을 만들어본다.
부록 A ‘톰캣’에서는 운영체제별 톰캣(Tomcat) 설치 방법과 설정 방법을 알아본다.
부록 B ‘웹 애노테이션’은 서블릿, 리스너, 필터 등 웹 객체를 설정하는 애노테이션의 전체 목록을 제공한다. 이 애노테이션들은 서블릿 3에 새로 추가됐으며, 애노테이션을 활용하면 배포 기술서 없이도 웹 애플리케이션을 만들 수 있다.
부록 C ‘SSL 인증서’에서는 KeyTool 프로그램을 이용해 개인/공개키 쌍을 만드는 방법과 인증기관을 통해 공개키를 디지털 인증서로 서명하는 방법을 알아본다.
목차
목차
- 1장 서블릿
- 2장 세션 관리
- 3장 JSP
- 4장 표현식 언어
- 5장 JSTL
- 6장 커스텀 태그
- 7장 태그 파일
- 8장 리스너
- 9장 필터
- 10장 애플리케이션 설계
- 11장 파일 업로드
- 12장 파일 다운로드
- 13장 요청과 응답
- 14장 비동기 처리
- 15장 보안
- 16장 배포
- 17장 동적 등록과 서블리 컨테이너 초기자
- 18장 스트럿츠 2 소개
- 부록 A 톰캣
- 부록 B 웹 애노테이션
도서 오류 신고
정오표
정오표
1쇄 수정 사항(2015.06.11 기준)
[ p48 11행 ]
writer.println("</head>"); → 삭제
[ p89 아래에서 3행 ]
writer.println("<tr>" + "<tr>" → writer.println("<tr>"
[ p140 16행 ]
page 지시어의 isELIgnored 요소의 값을 →page 지시어의 isELIgnored 속성의 값을
[ 전 장 용어 수정 ]
초기 매개변수 → 초기화 매개변수
[ p235 아래에서 5행 ]
이때 세선 속성의 → 이때 세션 속성의
[ p.284 아래에서 8행부터 p.285 위에서 5행까지]
(코드를 얇은 글씨에서 굵은 글씨로 표시 변경)
// ProductForm 확인
ProductValidator productValidator =
new ProductValidator();
List
productValidator.validate(productForm);
if (errors.isEmpty()) {
// 모델 생성
Product product = new Product();
product.setName(productForm.getName());
product.setDescription(productForm
.getDescription());
product.setPrice(Float.parseFloat(
productForm.getPrice()));
[ p286 1행 ]
이 객체는 HTLM → 이 객체는 HTML
[ p323 아래에서 4행 ]
response.setCharacterEncoding("utf-8");
response.setContentType("text/html");
PrintWriter writer = response.getWriter();
request.setCharacterEncoding("utf-8");
에서 마지막 줄인 request.setCharacterEncoding("utf-8");를 가독성을 위해 위치 변경.
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html");
PrintWriter writer = response.getWriter();
[ p.340 아래에서 2행]
try-with-reousrces → try-with-resources
[ p.359 7행 ]
(소문자 c에서 대문자 C로 변경)
autocorrect → autoCorrect
[ p438 아래에서 3행 ]
상황 변화에 따라 따른 결과를 → 상황 변화에 따라 다른 결과를