이미 소장하고 있다면 판매해 보세요.
|
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 설정 ___전송 보안 ___지역화 ___역할 기반 접근 제어 ___접근 권한 확인 ______페이지에 태그 라이브러리 사용 ______코드에 애노테이션 넣기 ___정리 부록 클라우드 파운드리: 클라우드에 배포 ___클라우드 컴퓨팅 ___클라우드 파운드리 ___애플리케이션 배포 ___클라우드 파운드리에서 디버깅 ___정리 |
|
자바 생태계의 대표 주자인 스프링이 자체 웹 프레임워크인 스프링 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로 웹 애플리케이션을 개발해보고 싶은 분에게 이 책이 많은 도움이 되었으면 합니다. ---「옮긴이의 말」 |
|
이 책은 현재 가장 인기 있는 웹 프레임워크 중의 하나인 스프링 MVC에 대해 소개한다. 스프링의 기본 개념과 일반적인 웹 애플리케이션 아키텍처인 MVC를 시작으로 스프링 MVC 프레임워크의 기본 원리 및 주요 컴포넌트들에 대해 상세하게 설명한다. 또한 스프링 웹 플로우, 스프링 MVC 테스트, REST와 AJAX, 스프링 보안 등 웹 애플리케이션 개발에 부가적으로 필요한 내용도 자세하게 알려준다. 스프링 MVC를 처음 시작하거나 스프링 MVC에 대해 전반적이고 깊이 있는 지식을 얻고자 할 때 이 책은 완벽한 가이드가 될 것이다.
이 책에서 다루는 내용 ■ 스프링 MVC 컴포넌트의 빌딩 블록(building block) ■ 개발 환경 구성 ■ 스프링 기반 애플리케이션에 웹 프런트엔드(front-end) 넣기 ■ 웹 프런트엔드 테스팅에 대한 실용 가이드 ■ 로컬 웹 서버와 원격 클라우드 기반 배포 플랫폼에 배포하기 ■ 스프링 웹 플로우에 대한 소개 ■ 스프링 웹 플로우를 통한 애플리케이션 작성 방법 이 책의 대상 독자 이 책은 스프링에 익숙하며 스프링 MVC를 좀 더 자세히 이해하고 싶은 사람들을 대상으로 한다. 스프링 MVC가 처음인 사람들을 기준으로 책의 내용이 주로 맞춰져 있지만, MVC 전문가들도 유용한 정보를 얻을 수 있게 했다. 독자 대부분은 스프링 프레임워크의 핵심 부분을 조금이라도 이해한 상태에서 (예를 들어 스프링 책을 한 권 읽고 난 후에) 스프링 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, 클라우드 파운드리: 클라우드에 배포에서는 클라우드(특히 클라우드 파운드리)에 애플리케이션을 배포하는 절차를 설명한다. 클라우드를 사용하면 우리가 선택한 개발 환경과 끊김 없는 통합이 가능하다. |