Top

[웹 프로그래머를 위한]
스프링 MVC 프로그래밍

  • 원서명Pro Spring MVC: With Web Flow (ISBN 9781430241553)
  • 지은이마틴 데니엄, 코엔 세르닐즈, 콜린 예이츠, 세스 래드, 크리스토프 밴플레테렌
  • 옮긴이김인희
  • ISBN : 9788960774773
  • 42,000원
  • 2013년 09월 30일 펴냄
  • 페이퍼백 | 752쪽 | 188*250mm
  • 시리즈 : 오픈소스 프로그래밍

책 소개

이 책은 현재 가장 인기 있는 웹 프레임워크 중의 하나인 스프링 MVC에 대해 소개한다. 스프링의 기본 개념과 일반적인 웹 애플리케이션 아키텍처인 MVC를 시작으로 스프링 MVC 프레임워크의 기본 원리 및 주요 컴포넌트들에 대해 상세하게 설명한다. 또한 스프링 웹 플로우, 스프링 MVC 테스트, REST와 AJAX, 스프링 보안 등 웹 애플리케이션 개발에 부가적으로 필요한 내용도 자세하게 알려준다. 스프링 MVC를 처음 시작하거나 스프링 MVC에 대해 전반적이고 깊이 있는 지식을 얻고자 할 때 이 책은 완벽한 가이드가 될 것이다.

[ 예제파일 다운로드 ]
https://github.com/mdeinum/pro-spring-mvc-code/archive/master.zip


[ 예제파일 다운로드 가능한 깃허브 사이트 ]
https://github.com/mdeinum/pro-spring-mvc-code/


[ 이 책에서 다루는 내용 ]

■ 스프링 MVC 아키텍처
■ DispatcherServlet을 사용한 개발
■ 개발 환경 설정
■ 로컬 웹 서버 및 원격 클라우드 기반 배포 플랫폼 활용
■ 컨트롤러 작성
■ 스프링 MVC에 REST, AJAX 접목
■ 뷰 결정과 구현
■ 스프링 MVC 애플리케이션 테스트
■ 스프링 보안 구현
■ 스프링 웹 플로우로 애플리케이션 작성


[ 이 책의 대상 독자 ]

이 책은 스프링에 익숙하며 스프링 MVC를 좀 더 자세히 이해하고 싶은 사람들을 대상으로 한다. 스프링 MVC가 처음인 사람들을 기준으로 책의 내용이 주로 맞춰져 있지만, MVC 전문가들도 유용한 정보를 얻을 수 있게 했다.
독자 대부분은 스프링 프레임워크의 핵심 부분을 조금이라도 이해한 상태에서(예를 들어 『Pro Spring』을 한 권 읽고 난 후에) 스프링 MVC를 자세히 알아보고자 이 책을 선택한 웹 개발자일 것이다.
스프링에 대해 잘 모르더라도 묵묵히 이 책(특히 2장)을 읽어나가자. 그러다가 뭔가 좀 부족하다고 생각되면 스프링 레퍼런스 가이드나 『Pro Spring 3』(Apress, 2012)을 참고하면 된다.
로드 존슨의 저서이자 스프링 책의 원조인 『Expert One-on-One J2EE Design and Development』(Wrox, 2002)는 발간된 지 꽤 됐지만, 여전히 주옥 같은 내용으로 가득 차 있다.


[ 이 책의 구성 ]

1장, 스프링 개발 환경 구성에서는 샘플 애플리케이션 개발 환경에 꼭 필요한 것이 무엇인지 알려준다. 또한 샘플 애플리케이션(온라인 서점)의 구조와 목표에 대해서도 다룬다.

2장, 스프링 프레임워크의 기본에서는 스프링 프레임워크의 기본 빌딩 블록을 간략하게 설명한다. 또한 의존 관계 주입(DI, Dependency Injection)과 제어의 역전(IoC, Inversion of Control)에 대해서도 다룬다. 스프링을 잘 모른다면 2장을 적극 추천한다.

3장, 웹 애플리케이션 아키텍처에서는 웹 애플리케이션 아키텍처를 약간 에둘러 설명한다. 웹 애플리케이션을 구성하는 (일반적인) 여러 레이어에 대해 알아보고, 모델(Model), 뷰(View), 컨트롤러(Controller)가 조화를 이루는 화음도 들어본다.

4장, 스프링 MVC 아키텍처에서는 스프링 MVC를 본격적으로 다루기 시작한다. MVC가 무엇이고 웹 애플리케이션은 일반적으로 어떻게 구성되는지 설명한다. 또한 스프링 MVC 엔진의 동력원이라 할 수 있는 DispatcherServlet에 대해서도 알아본다.

5장, 컨트롤러 구현에서는 실제 예제 코드를 보여주며 설명한다. 5장은 이전 장들에서 배운 개념을 토대로 컨트롤러를 작성하며, 스프링 @MVC의 내부를 심도 있게 다룬다. 5장의 마지막 부분부터는 샘플 애플리케이션을 만들기 시작한다.

6장, 컨트롤러 구현: 고급 모든 애플리케이션은 핵심 기능은 아니지만 특정 부분에만 들어맞는 기능이 필요한 경우가 있고, 각기 다른 부분에서 동일한 기능이 필요한 경우도 있다. 6장에서는 관점 지향 프로그래밍(AOP, Aspect Oriented Programming)을 소개하고 스프링 MVC가 공통 웹 문제들을 어떻게 쉽게 해결하는지 살펴본다. 또한 스프링 MVC 내부에 대해 더 자세히 알아보고 요구 사항에 맞춰 기존 인프라를 확장하는 방법도 설명한다.

7장, REST와 AJAX에서는 온라인 서점 애플리케이션을 돋보이게 해줄 기능을 소개한다. 또한 컨트롤러를 REST 웹 서비스로 노출해서 다른 쪽에서 이를 통합하는 방법도 알아본다. 이를 위해 REST와 AJAX에 대해 설명하고, 이 기술들을 애플리케이션에 적용해본다.

8장, 뷰 결정과 구현에서는 스프링 MVC가 뷰를 결정하는 방법을 자세히 알아보고 지금까지 배운 내용을 바탕으로 뷰를 구현해본다. ViewResolver 인프라를 다시 살펴보고, 같은 인프라를 재사용해서 동일 모델을 다르게 활용할 수 있게 해주는 스프링 MVC의 강력한 힘을 보여준다.

9장, 스프링 MVC 애플리케이션 테스트 이제 스프링 MVC를 사용해 원하는 것을 코드로 구현할 수 있게 되었으니 테스트를 해볼 차례다. 9장에서는 스프링 MVC 애플리케이션을 어떻게 테스트하고, 특히 무엇을 테스트할지 알아본다. 여러 가지 테스트 전략을 살펴보고 테스트가 필요한 경우만을 골라 테스트하는 방법도 다룬다. 또한 HTML을 어떻게 테스트할지도 배운다.

10장, 스프링 웹 플로우 지금까지 모든 페이지 인터랙션은 단순했고 각 유스케이스는 한두 페이지밖에 필요하지 않았다. 매니저가 다른 유스케이스를 넣기 원하면 어떻게 해야 할까? 이 장에서는 스프링 MVC의 파트너인 스프링 웹 플로우를 소개한다. 스프링 웹 플로우는 클라이언트와의 웹을 통한 대화를 관리하는 훌륭한 기능을 제공한다.

11장, 스프링 웹 플로우 애플리케이션 작성에서는 10장에서 소개한 스프링 웹 플로우와 스프링 웹 플로우가 해결한 문제들을 바탕으로 실제 스프링 웹 플로우 애플리케이션을 작성하는 방법을 배운다.

12장, 고급 스프링 웹 플로우에서는 11장에서 배운 내용을 바탕으로 스프링 웹 플로우를 더 자세히 살펴보고 그 진정한 가치를 파헤쳐본다.

13장, 스프링 보안에서는 스프링에서 확고한 위치를 차지하고 있는 스프링 보안을 사용해 웹 애플리케이션을 해커로부터 보호하는 방법을 알아본다.

부록 A, 클라우드 파운드리: 클라우드에 배포에서는 클라우드(특히 클라우드 파운드리)에 애플리케이션을 배포하는 절차를 설명한다. 클라우드를 사용하면 우리가 선택한 개발 환경과 끊김 없는 통합이 가능하다.


[ 추천의 글 ]

스프링 MVC는 스프링이 제공하는 기술 중에서 가장 늦게 주목 받았습니다. 스프링이 처음 소개됐을 때는 이미 스트럿츠를 비롯한 다양한 자바 웹 기술이 폭넓게 사용되고 있었기 때문에 스프링을 도입하더라도 웹 MVC는 스프링 MVC 대신 다른 익숙한 웹 기술을 사용하는 경우가 대부분이었습니다. 하지만 당시에 인기를 끌던 자바 웹 기술은 지난 10여 년 동안 대부분 개발이 중단되거나 인기를 잃었습니다. 그 사이 웹 개발 기술에 많은 변화가 있었지만 과거의 기술들은 이런 흐름을 대부분 따라가지 못했기 때문입니다. 반면 스프링 MVC는 꾸준히 그 가치를 인정받고 인기를 얻어 지금은 가장 많은 개발자들이 사용하는 자바 웹 기술이 되었습니다. 스프링 MVC는 스프링의 개발철학을 따라 만들어진 기술이기 때문에 웹 기술의 발전에 유연하고 빠르게 대응해 올 수 있었기 때문입니다.

스프링 MVC는 스프링의 정수가 담긴 기술 집약체입니다. 처음에는 간단한 관례와 사용법을 익혀 빠르게 시작할 수 있지만, 스프링 MVC가 제공하는 기술을 본격적으로 활용하고 이득을 얻으려면 내부 아키텍처에 대한 이해와 확장 방법 등을 잘 이해할 필요가 있습니다. 『스프링 MVC 프로그래밍』은 스프링 MVC를 본격적으로 활용하는 데 필요한 모든 영역의 내용을 충실히 담은, 스프링 MVC에 관한 독보적인 책입니다. 스프링 MVC를 웹 개발에 이용하는 개발자라면 반드시 읽고 개발에 참고하시길 추천합니다.
-이일민 / 이프릴 대표, 『토비의 스프링 3』 & 『토비의 스프링 3.1』 저자


내 기억으로 2004년도에 스프링 프레임워크를 처음 배우기 시작한 것 같다. 그 당시 J2EE와 스트럿츠를 주로 사용했고, 이 기술들 때문에 자바 엔터프라이즈 애플리케이션을 개발할 때 무척이나 애를 먹었다. 스프링은 J2EE를 완전히 배제하지 않고 수많은 모범 사례들을 한데 모으고, 제어의 역전 개념을 소개해 J2EE를 최대한 단순하고 효과적으로 사용하는 방법을 제시했다. 스프링의 이러한 점은 나를 단번에 매료시켰다.

스프링은 J2EE의 기존 부분이나 (특히 하이버네이트 같은) 저명한 프레임워크들과 경쟁이 될 만한 솔루션을 만드는 데 쓸데없이 시간을 낭비하지 않았다. 하지만 웹 애플리케이션 개발만큼은 달랐다. 스프링은 스트럿츠 같은 프레임워크를 대체하는 스프링 MVC라는 완전히 실용적인 웹 프레임워크를 만들었다. 그 당시 나는 스프링 웹 플로우(Spring Web Flow)라는 스프링 MVC의 페이지 플로우 컴포넌트에 주목하고 이 컴포넌트를 사용하면 스프링 기반 웹 애플리케이션 개발이 한층 더 강화될 것이라는 믿음을 가졌다. 스프링 MVC와 스프링 웹 플로우는 이 책에서 다루는 주요 주제이기도 하다.

스프링 MVC 설계는 앞서 발표된 프레임워크들에서 얻은 교훈들을 바탕으로 한다. 유연함과 장기간의 생산성 향상은 스프링의 핵심 설계 원칙이다. 스프링 MVC로 애플리케이션을 잘 설계하면 규모가 커지고 요구 사항이 변경돼도 여전히 유지 보수와 관리가 용이하다. 하지만 반드시 좋은 점만 있는 것은 아니다. 스프링에는 초기 학습 곡선이 있으며, 특히 스프링 MVC의 경우에는 학습 곡선이 더 가파르다. 루비 온 레일즈 같은 새로운 프레임워크가 각광받는 이유도 단기간의 생산성에 뛰어나고, 학습 비용이 낮은 데 있다. 스프링 개발자 커뮤니티는 이러한 단점에 주목하고 스프링 MVC 3.0과 3.1을 발표해 이를 많이 개선했다. 앞으로 곧 배우겠지만, 설정보다는 관례(CoC, convention-over-configuration)나 애노테이션 등을 통해 전보다는 스프링 MVC가 더 쉬워졌다. 이러한 모든 개념을 수용해도 이전 버전과 100% 완벽하게 호환되는 점을 보면 스프링 MVC가 얼마나 유연하고 설계 수준이 높은지 알 수 있다. 스프링 MVC의 탄탄한 기본 원리는 장기적으로 봤을 때 큰 득이 되며, 스프링 MVC는 배우기도 쉬워 일거양득의 장점이 있다. 현재 스프링 웹 플로우는 스프링과 비슷한 발전 양상을 보이고 있다.

2004년 이후로 스프링 MVC와 스프링 웹 플로우는 꾸준한 인기를 얻고 있다. 이 두 프레임워크는 이제 더욱 성숙하고 안정된 자바 개발 프레임워크로 성장했다. 이들 프레임워크를 사용해 웹 애플리케이션을 만드는 것은 탄탄한 기초 위에 건물을 짓는 것과 같다.

이 책의 저자인 마틴과 코엔은 스프링 MVC와 스프링 웹 플로우를 실용적으로 접근해서 소개한다. 우선 저자들은 여러분이 생산적인 개발 환경을 구축하고 스프링 MVC와 웹 플로우로 개발을 시작할 수 있게 도와준다. 이게 다가 아니다. 저자들은 기술들을 세부적으로 다루는 데 그치지 않고 독자 여러분이 이 기술들을 좀 더 잘 이해할 수 있게 그 기저에 놓인 상당수의 개념을 설명하는 데 공을 들였다. 또한 이 책은 보안 강화와 웹 애플리케이션 테스트 같은 여러 중요 주제도 다룬다. 이 책을 읽고 나면 스프링 기술을 사용해 실제 웹 애플리케이션을 개발하는 데 어려움이 없을 것이다.

지금까지도 여러 사람들이 스프링이나 내가 2004년도에 스프링에 추가한 작은 컴포넌트를 통해 많은 도움을 받고 있는 것을 보니 흐뭇한 생각이 든다. 스프링 MVC와 스프링 웹 플로우를 배우고자 하는 분들에게 이 책을 적극 추천한다. 개발자들이 이 흥미진진한 스프링 기술을 배울 수 있도록 기여한 저자들의 노고에 박수를 보내고 싶다.
- 어윈 버뱃(Erwin Vervaet) / 스프링 웹 플로우 프로젝트 설립자

저자/역자 소개

[ 저자 소개 ]

마틴 데니엄 (Marten Deinum)
콘스펙트(Conspect)에서 자바 및 소프트웨어 컨설턴트로 일하고 있다. 주로 자바를 사용해 크고 작은 기업들의 소프트웨어를 설계하고 개발했다. 열렬한 오픈소스 사용자이며, 스프링 프레임워크의 오래된 팬이자 사용자이자 지지자다. 또한 소프트웨어 엔지니어, 선임 개발자, 개발 코치, 자바와 스프링 강사 같은 다양한 경력이 있다. 일하지 않거나 스프링 프레임워크 포럼에 올라온 질문에 답변하지 않을 때는 철인 3종 경기에 대비하기 위해 수중 훈련이나 다이빙을 하고, 다른 사람들을 가르치기도 한다.

코엔 세르닐즈 (Koen Serneels)
IBM, 시스코, 오라클 자격증을 가진 시니어 자바 소프트웨어 엔지니어다. 10년 이상 자바(EE), 스프링, 스프링 MVC, 웹 플로우, JSF, 하이버네이트를 사용해 엔터프라이즈 솔루션을 개발해왔다. 시스템 설계와 통합, 데이터 모델링, 관계형 데이터베이스, 보안과 네트워크에 관심이 많다. 벨기에 연방 정부에서 처음으로 일을 시작하면서 레거시와 통합되는 트랜잭션 자바 기반의 애플리케이션을 개발했다. 현재 휴렛팩커드에서 일하고 있으며, 벨기에의 플랑드르 정부에서 자바 소프트웨어 컨설턴트 및 선임 개발자로 있다. 또한 벨기에의 루뱅에 있는 Groep T 공과대학에서 ‘자바 소프트웨어 개발’ 대학원 과정을 가르치고 있다.

콜린 예이츠 (Colin Yates)
웹 기반 개발을 전문으로 하는 J2EE 수석 아키텍트다. 지난 3년간 프리랜서 컨설턴트였고, 잘 정비된 환경과 난잡한 환경 양쪽 모두에서 일을 해왔다. 1997년도에 소프트웨어 엔지니어링으로 대학을 졸업한 후 선임 개발자, 수석 시스템 엔지니어, 멘토, 전문 강사 등 다양한 경력을 쌓았다. 주로 잘하는 것은 다른 사람 멘토링하기, 복잡한 문제를 풀어 관리 가능한 솔루션으로 만들기, 개발 프로세스 최적화다.
자신의 멘토인 피터 덴 한과 데이비드 휴이트의 소개로 2003년 1월에 스프링 프레임워크에 처음 입문한 후로 계속 성공 가도를 달리고 있다.

세스 래드 (Seth Ladd)
소프트웨어 엔지니어이자 스프링 프레임워크 전문 강사이며, 객체지향 및 테스트 가능한 웹 애플리케이션을 전문으로 하는 멘토다. 17세에 웹사이트를 구축해주는 회사를 설립했고, 이제는 실제 직업이 있는 것에 만족하고 있다. 현재는 Camber Corporation에서 일하고 있으며, NEC, 로체스터 공과 대학, 브리보 시스템즈, 국제 정보 컨소시엄의 시스템을 만들고 배포했다. 원격으로 연결된 임베디드 디바이스와 서버에서 자바와 C를 사용해 엔터프라이즈 애플리케이션을 설계하고 개발했다. 발표하고 가르치는 것을 좋아하며, 로컬 자바 유저 그룹과 기업의 개발자 컨퍼런스에 발표자로 자주 나선다. 세스는 아내와 함께 하와이의 카일루아에서 열심히 일하며 지내는 것에 정말로 감사하고 있다.

크리스토프 밴플레테렌 (Christophe Vanfleteren)
2001년부터 자바 소프트웨어 엔지니어로 일하고 있다. 현재 EDS와 HP에서 일하고 있고, 주로 벨기에의 플랑드르 정부의 프로젝트에 참여 중이다. 2006년도에 치른 플랑드르 선거의 예측 시스템과 6백만 시민의 세금 정보를 모으는 플랑드르 재정 플랫폼 같은 대규모 이벤트 기반 애플리케이션을 개발했다. 트랜잭션 비중이 높은 코드부터 자바스크립트 기반 프런트엔드까지 전 분야에 능통하다. 2010년부터 독립 사업자로 일하고 있다.


[ 옮긴이의 말 ]

자바 생태계의 대표 주자인 스프링이 자체 웹 프레임워크인 스프링 MVC를 발표한 후로 스프링 MVC는 지금까지 인기 있는 웹 프레임워크로 각광받고 있습니다. 스프링 MVC는 별다른 설정 없이도 스프링의 강력한 기능을 그대로 사용할 수 있으며, 스프링의 설계 철학을 고스란히 이어받아 유연한 확장을 통해 다양한 요구 사항을 빠르게 처리할 수 있습니다. 하지만 명성만큼 스프링 MVC만을 전적으로 다루는 서적을 찾기가 쉽지 않았는데, 대부분 스프링 서적의 일부분에 포함돼 있어 심도 있는 내용을 효과적으로 전달하기 어려웠습니다.

이 책은 웹 개발자들이 스프링 MVC를 손쉽게 이해하고 배우는 데 초점을 맞추고 있습니다. 스프링의 기본 개념과 일반적인 웹 애플리케이션 아키텍처인 MVC에 대해 소개하고, 스프링 MVC 프레임워크의 기본 원리뿐만 아니라 실제 프로젝트에 어떻게 스프링 MVC를 적용해야 하는지도 자세히 설명합니다. 또한 스프링 MVC의 주요 컴포넌트인 디스패처 서블릿, 컨트롤러, 뷰 등에 대한 자세한 분석을 통해 스프링 MVC 내부에 대한 이해를 돕고 있습니다.

이외에도 REST와 AJAX를 소개해 웹 애플리케이션에 더욱 풍부한 기능을 제공하는 방법을 제시하며, 웹 컨테이너 없이도 스프링 MVC를 효과적으로 테스트할 수 있는 테스트 기법도 알려줍니다. 게다가 스프링 MVC의 부족한 부분인 페이지 내비게이션 기능을 좀 더 쉽게 구현하게 도와주는 스프링 웹 플로우를 소개함으로써 웹 애플리케이션의 페이지 처리를 원활하게 처리하는 데 어려움이 없게 이끌어 줍니다. 그리고 가장 중요하면서도 놓치기 쉬운 웹 애플리케이션의 보안 문제를 스프링 보안을 통해 어떻게 해결해 나가는지도 보여줍니다.

이 책은 스프링 3.1 버전을 기반으로 하고 있지만 스프링 최신 버전과 아무런 문제없이 호환이 되며, 최신 빌드 도구인 그래들을 선택해 프로젝트 관리를 손쉽게 하는 방법을 제시합니다. 이 책의 샘플 프로젝트인 온라인 서점 웹 애플리케이션에 스프링 MVC의 각 기능을 단계적으로 넣어 애플리케이션을 점차 발전시켜 나아가면서 스프링 MVC를 실제로 어떻게 활용해야 하는지 실질적으로 접근하고 있습니다.

스프링 MVC는 스프링의 발전과 맞물려 꾸준히 발전하고 있습니다. 스프링 2.5에 처음 도입돼 지금까지 널리 사용되는 애노테이션을 활용한 전략이 스프링 MVC에도 도입돼 @MVC로 불리고 있다는 점이 단적인 예입니다. 이렇게 계속적으로 발전해 나가는 스프링 MVC를 제대로 이해하려면 그 내부를 꼼꼼하게 들여다봐야 합니다. 이 책은 스프링 MVC의 내부를 자세하게 파헤쳐 동작 원리를 알기 쉽게 설명합니다. 스프링 MVC에 대한 전반적이고 심도 있는 지식을 얻기 원하는 분이나 스프링 MVC로 웹 애플리케이션을 개발해보고 싶은 분에게 이 책이 많은 도움이 되었으면 합니다.


[ 옮긴이 소개 ]

김인희
고려대학교 컴퓨터학과와 카이스트 대학원을 졸업하고 NHN을 거쳐 현재는 캠프모바일에서 근무 중이다. 항상 새로운 것을 습득하려 노력하지만, 기본이 중요하다는 것을 늘 마음속 깊이 새기며 살아가는 개발자다. 번역서로는 『자바와 XML』 1, 2판이 있다.

목차

목차
  • <b><font color="#9F814F">[ 목차 ]</font></b>
  • 1장 스프링 개발 환경 구성
    • 준비
      • JDK
      • 서블릿 컨테이너
      • 통합 개발 환경
    • 샘플 애플리케이션
      • 온라인 서점 샘플 애플리케이션
      • 빌드 시스템
      • 샘플 애플리케이션 빌드
      • 샘플 애플리케이션 배포
    • STS
      • 그래들 프로젝트를 위한 STS 설정
      • STS에 샘플 애플리케이션 불러오기
      • tc 서버를 통한 애플리케이션 실행
      • 애플리케이션 변경
    • 정리
  • 2장 스프링 프레임워크의 기본
    • 스프링 프레임워크
    • 의존 관계 주입
    • ApplicationContexts
      • 리소스 로딩
      • 컴포넌트 스캐닝
      • 스코프
      • 프로파일
      • 스프링 기능 활성화
      • 관점 지향 프로그래밍
    • 웹 애플리케이션
    • 정리
  • 3장 웹 애플리케이션 아키텍처
    • MVC 패턴
    • 애플리케이션 레이어
    • 관심사의 분리
    • 스프링 MVC 애플리케이션 레이어
      • 도메인 레이어
      • 유저 인터페이스 레이어
      • 웹 레이어
      • 서비스 레이어
      • 데이터 액세스 레이어
    • 로마로 통하는 수많은 길
    • 정리
  • 4장 스프링 MVC 아키텍처
    • DispatcherServlet의 요청 처리 과정
    • 요청 처리 과정
      • 요청 처리 컴포넌트 요약
    • DispatcherServlet
      • DispatcherServlet 부트스트랩
      • DispatcherServlet 설정
    • 스프링 MVC 컴포넌트
      • HandlerMapping
      • HandlerAdapter
      • MultipartResolver
      • LocaleResolver
      • ThemeResolver
      • HandlerExceptionResolver
      • RequestToViewNameTranslator
      • ViewResolver
      • FlashMapManager
    • 정리
  • 5장 컨트롤러 구현
    • 컨트롤러 소개
      • 인터페이스 기반 컨트롤러
      • 애노테이션 기반 컨트롤러
      • 뷰 컨트롤러 설정
    • 요청 처리 메소드
      • 스프링 @MVC가 지원하는 메소드 인수 타입
      • 스프링 @MVC가 지원하는 메소드 인수 애노테이션
      • 스프링 @MVC가 지원하는 메소드 리턴 값
    • 애노테이션 기반 컨트롤러 작성
      • 단순한 로그인 컨트롤러
      • 도서 검색 페이지
      • 도서 상세 페이지
    • 데이터 바인딩
      • 데이터 바인딩 커스터마이징
      • 컨트롤러 단위 커스터마이징
      • ModelAttributes
      • 타입 변환
      • 모델 속성의 유효성 검증
    • 국제화
      • 메시지 소스
      • LocaleResolver
      • LocaleChangeInterceptor
    • 정리
  • 6장 컨트롤러 구현 - 고급
    • 스코프가 적용된 빈 사용
      • 카트에 물건 담기
      • 체크아웃 구현
    • 횡단 관심사
      • 인터셉터
      • 예외 처리
      • SimpleMappingExceptionResolver
    • 스프링 @MVC 확장
      • RequestMappingHandlerMapping 확장
      • RequestMappingHandlerAdapter 확장
      • RequestDataValueProcessor 사용
    • 정리
  • 7장 REST와 AJAX
    • REST
      • 리소스 식별
      • 리소스에 대한 작업
    • AJAX
      • 애플리케이션에 AJAX 추가
      • AJAX와 REST 간의 결합
      • 점진적 향상
    • 파일 업로드 처리
      • 파일 업로드 설정
      • 파일 업로드를 처리하는 요청 처리 메소드
      • 예외 처리
    • 정리
  • 8장 뷰 결정과 구현
    • 뷰 리졸버와 뷰
    • 뷰 리졸버
      • BeanNameViewResolver
      • XmlViewResolver
      • ResourceBundleViewResolver
      • UrlBasedViewResolver
      • InternalResourceViewResolver
      • XsltViewResolver
      • ContentNegotiatingViewResolver
      • 커스텀 ViewResolver 구현
    • 뷰 기술
      • JSP
      • JSF
      • 타일즈
      • 벨로시티와 프리마커
      • PDF
      • 엑셀
      • XML과 JSON
      • JasperReports
    • 정리
  • 9장 스프링 MVC 애플리케이션 테스트
    • 테스트 소개
      • 테스트 작성이 항상 귀찮기만 한 이유
      • 프로젝트 내의 테스트 활성화
      • 테스트 종류
    • 기본 유닛 테스트 설정
    • 테스트 코드 커버리지
    • 스프링 테스트 지원 기능 사용
      • 통합 테스트 설정
    • 목 객체 사용
      • 목 객체는 무엇일까?
      • AccountService 테스트
    • MVC 로직 테스트
      • 스프링 목 객체 사용
      • 스프링 MVC 테스트 소개
    • 프런트엔드 테스트 자동화
      • 셀레늄으로 프런트엔드 테스트
      • 셀레늄 테스트 작성
      • 셀레늄 IDE 사용
    • 그래들을 이용한 프런트엔드 테스트
    • 정리
  • 10장 스프링 웹 플로우
    • 웹 플로우가 필요한 이유
      • 플로우 개념
      • 세분화된 스코프
      • 상태 관리 자동화
      • 요청 동기화
      • PRG
      • 내비게이션 제어
      • 웹 플로우가 필요 없는 경우
    • 플로우의 기본 구성 요소
      • 플로우
      • 뷰 상태
      • 상태 전환
      • 평가 액션
      • 표현식
    • 설정
      • 의존 모듈
      • 웹 플로우 설정
      • 스프링 MVC와 스프링 웹 플로우 통합 설정
    • 첫 번째 플로우 작성
      • 홈 페이지 생성
      • 주문 생성 플로우 구현
      • 플로우 전체 모습
    • 정리
  • 11장 스프링 웹 플로우 애플리케이션 작성
    • 웹 플로우 주요 개념
      • 플로우 정의
      • 웹 플로우 스코프
      • 내장 객체
    • 온라인 서점 개선
      • 도서 카테고리 선택
      • 도서와 배송 옵션 선택
      • JSR 303 애노테이션을 사용한 폼 검증
    • 변수 지정과 스코프 접근
      • 플로우 변수
      • 뷰에서 스코프 변수에 접근
      • 프로그래밍으로 스코프에 접근
    • 액션 수행 제어
      • <on-start>
      • <on-end>
      • <on-entry>
      • <on-exit>
      • <on-render>
      • 액션 수행 제어: 서브엘리먼트
    • 전역 전환
    • 서브플로우
    • 온라인 서점 개선
      • 서브플로우에서 인증 구현
      • 결정 상태
      • 액션 상태
      • 결과 이벤트로 작업
      • 주문 생성 플로우의 전체 모습
    • 서브플로우 입출력 매핑
    • 주문 프로세스를 서브플로우로 생성
    • 종료 상태
    • 정리
  • 12장 고급 스프링 웹 플로우
    • 상속
      • 플로우 상속
      • 상태 상속
    • 웹 플로우 커스터마이징 설정
      • 플로우 수행과 대화 스냅샷
      • 표현 언어 파서 변경
    • 웹 플로우 1 이전
    • 예외 처리
      • 예외 전환
      • 커스텀 예외 핸들러
    • 명시적 폼 바인딩
    • 웹 플로우의 AJAX 지원
      • AJAX를 사용하기 위한 웹 플로우 설정
      • 뷰 준비
      • 플로우 변경
      • 스프링 JS와 JQuery를 사용해 뷰에 AJAX 추가
    • 플로우 수행 리스너
      • 플로우 수행 리스너 작성
      • 플로우 수행 리스너 메소드
    • 플로우가 관리하는 퍼시스턴스 컨텍스트
      • 데이터베이스부터 뷰까지
      • 퍼시스턴스 컨텍스트의 생명 연장
      • FMPC 적용
      • 주문 내역 리팩토링
    • 정리
  • 13장 스프링 보안
    • 보안 소개
      • 애플리케이션 보안이란?
      • 일반적인 보안 원칙
      • 앞으로 다룰 내용
    • 예제 애플리케이션 준비
    • 온라인 서점에 보안 적용
      • 스프링 보안 의존성 추가
      • 스프링 보안 활성화
      • 보안 리소스 지정
      • 리소스에 대한 접근 설정
      • 보안 인증 설정
      • 로그인과 로그아웃에 스프링 보안 적용
      • 전체 스프링 보안 설정
    • 데이터베이스로 사용자 정보 이동
    • 플로우 안전하게 보호
      • 플로우에 접근 속성 추가
      • SecurityFlowExecutionListener 설정
    • 전송 보안
    • 지역화
    • 역할 기반 접근 제어
    • 접근 권한 확인
      • 페이지에 태그 라이브러리 사용
      • 코드에 애노테이션 넣기
    • 정리
  • 부록 클라우드 파운드리: 클라우드에 배포
    • 클라우드 컴퓨팅
    • 클라우드 파운드리
    • 애플리케이션 배포
    • 클라우드 파운드리에서 디버깅

도서 오류 신고

도서 오류 신고

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

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

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

정오표

정오표

[ p.165 아래에서 1행 ]
(띄어쓰기 정정)
애노테이션은 org.sp ringframework.stereotype.Controller
→ 애노테이션은 org.springframework.stereotype.Controller

2016. 12. 14 수정사항

[p.232: 아래에서 5행]
그fj므로
->
그러므로

[p.264: 아래에서 3행]
InterceptorRegistory 사용
->
InterceptorRegistry 사용

2016. 12. 15 수정사항

[p.103: 주석4]
http://static.springsource.org/spring/docs/3.1.x/spring-frameworkreference/html/aop.html#aop-atconfigurable
->
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html#aop-atconfigurable

2016. 12. 19 수정사항

[p. 425: 주석 20번 뒤]
웹드라이버(20)로는 selenium-android-driver, selenium-chrome-driverelenium-ie-driver, ...
->
웹드라이버(20)로는 selenium-android-driver, selenium-chrome-driver, selenium-ie-driver, ...