스프링 MVC로 나만의 웹 애플리케이션을 만들어 보자!
처음부터 끝까지
직접 만들어 보며 익히는 스프링 MVC!
스프링 MVC는 웹 애플리케이션 개발 전용 프레임워크로, 스프링에서 제공하는 많은 기능을 자유롭게 확장해 사용할 수 있으며 영역별로 개발할 수 있다는 장점이 있다. 책에서는 이러한 스프링 MVC를 이용해 도서 쇼핑몰을 처음부터 끝까지 직접 만들어 볼 수 있게 구성했다. 또한, MultipartFile, RESTful 웹 서비스, 스프링 웹 플로우, 스프링 시큐리티, Log4j 등을 사용하기 때문에 다양한 스프링 기능도 함께 익힐 수 있다. 책을 따라 실습하다 보면 스프링 MVC의 개념과 원리를 자연스레 익힐 수 있을 것이다. 스프링 MVC가 처음이거나 스프링 MVC로 직접 웹 애플리케이션을 만들어 보고 싶은 분에게 추천한다.
1장 스프링과 스프링 MVC
1.1 자바 플랫폼 개발 프레임워크의 대세, 스프링
__1.1.1 스프링이란?
__1.1.2 꼭 알아야 할 스프링의 주요 특징
1.2 MVC 패턴 기반의 웹 프레임워크, 스프링 MVC
__1.2.1 스프링 MVC
__1.2.2 스프링 MVC의 구성 요소
1.3 마치며
2장 스프링 MVC 개발 환경 설정과 맛보기 예제
2.1 스프링 MVC 애플리케이션 개발 환경 설정
__2.1.1 자바 설치 및 환경 설정하기
__2.1.2 웹 서버 톰캣 설치하기
__2.1.3 통합 개발 환경 이클립스 설치하기
__2.1.4 스프링 개발을 위한 STS 설치하기
2.2 첫 번째 스프링 MVC 애플리케이션 구현
__2.2.1 프로젝트 생성하기
__2.2.2 프로젝트 실행하기
2.3 마치며
3장 첫 번째 스프링 MVC 애플리케이션 분석: ‘도서 쇼핑몰’ 시작 페이지 만들기
3.1 스프링 MVC의 프로젝트 구조
__3.1.1 프로젝트 구조
__3.1.2 프로젝트 실행 과정
3.2 환경 설정 파일 살펴보기: web.xml
__3.2.1 네임 스페이스와 스키마 선언
__3.2.2 루트 컨텍스트 설정
__3.2.3 서블릿 컨텍스트 설정
3.3 스프링 MVC 환경 설정 파일
__3.3.1 루트 컨텍스트 파일 살펴보기: root-context.xml
__3.3.2 서블릿 컨텍스트 파일 살펴보기: servlet-context.xml
3.4 컨트롤러: HomeController.java
3.5 뷰: hello.jsp
3.6 메이븐 환경 설정 파일: pom.xml
__3.6.1 프로젝트 정보: <project>
__3.6.2 속성 정보: <properties>
__3.6.3 의존성 라이브러리 정보: <dependencies>
__3.6.4 빌드 정보: <build>
3.7 [실습] 도서 쇼핑몰 시작 페이지 만들기
__3.7.1 시작 페이지 만들기
__3.7.2 부트스트랩 CSS를 적용하여 시작 페이지 만들기
__3.7.3 프로젝트 실행 경로 변경
3.8 마치며
4장 스프링 MVC 애플리케이션의 계층적 구조: ‘도서 쇼핑몰’ 계층적 공통 모듈 만들기
4.1 웹 애플리케이션의 계층적 구조
__4.1.1 계층적 구조
__4.1.2 계층적 구조의 구현 과정
4.2 도서 쇼핑몰의 계층적 공통 모듈 만들기
__4.2.1 도서 쇼핑몰 애플리케이션의 계층적 구조
__4.2.2 [실습] 도서 기본 정보가 담긴 도메인 객체
__4.2.3 [실습] 도서 정보를 관리하는 퍼시스턴스 계층
__4.2.4 [실습] 요청한 도서 목록을 반환하는 서비스 계층
__4.2.5 [실습] MVC를 담당하는 프레젠테이션 계층
__4.2.6 [실습] 실행 결과 확인하기
4.3 마치며
5장 컨트롤러 구현: ‘도서 쇼핑몰’에서 도서 목록 출력하기
5.1 컨트롤러 개요
__5.1.1 컨트롤러
__5.1.2 컨트롤러 구현 과정
5.2 컨트롤러 정의
__5.2.1 @Controller를 이용한 컨트롤러 정의
__5.2.2 <context:component-scan> 요소로 컨트롤러 등록
__5.2.3 [실습] @Controller로 컨트롤러를 정의하여 도서 목록 출력하기
5.3 @RequestMapping을 이용한 요청 매핑 경로 설정
__5.3.1 컨트롤러에 @RequestMapping 적용
__5.3.2 [실습] 컨트롤러에 @RequestMapping 작성하기
__5.3.3 메서드에 @RequestMapping 적용
__5.3.4 [실습] 메서드에 @RequestMapping 작성하기
__5.3.5 메서드 수준의 @RequestMapping 단순화
__5.3.6 [실습] 단순화한 @RequestMapping 사용하기
5.4 요청 처리 메서드와 모델 유형
__5.4.1 Model 인터페이스를 이용한 메서드 작성
__5.4.2 ModelMap 클래스를 이용한 메서드 작성
__5.4.3 ModelAndView 클래스를 사용한 메서드 작성
__5.4.4 [실습] ModelAndView 클래스를 사용하여 결과 반환하기
5.5 마치며
6장 요청 처리 메서드의 파라미터 유형: 다양한 조건으로 검색한 도서 목록 출력하기
6.1 경로 변수와 @PathVariable
__6.1.1 경로 변수의 개요
__6.1.2 @PathVariable을 이용한 경로 변수 처리
__6.1.3 [실습] @PathVariable을 이용하여 도서 분야와 일치하는 도서 목록 출력하기
6.2 매트릭스 변수와 @MatrixVariable
__6.2.1 매트릭스 변수의 개요
__6.2.2 @MatrixVariable을 이용한 매트릭스 변수 처리
__6.2.3 [실습] @MatrixVariable을 이용하여 매트릭스 변수 값과 일치하는 도서 목록 출력하기
6.3 요청 파라미터와 @RequestParam
__6.3.1 요청 파라미터의 개요
__6.3.2 @RequestParam을 이용한 요청 파라미터 처리
__6.3.3 [실습] @RequestParam을 이용하여 도서 ID와 일치하는 도서의 상세 정보 출력하기
6.4 마치며
7장 스프링 폼 태그: 도서 등록 페이지 만들기
7.1 스프링 폼 태그 개요
__7.1.1 스프링 폼 태그
__7.1.2 스프링 폼 태그 사용법
__7.1.3 [실습] 스프링 폼 태그로 도서 등록 페이지 만들기
7.2 @ModelAttribute를 이용한 데이터 바인딩
__7.2.1 요청 처리 메서드의 매개변수에 @ModelAttribute 적용
__7.2.2 메서드에 @ModelAttribute 적용
__7.2.3 [실습] @ModelAttribute를 이용하여 새로운 도서 등록하기
7.3 @InitBinder를 이용한 커스텀 데이터 바인딩
__7.3.1 메서드에 @InitBinder 적용
__7.3.2 폼 파라미터의 커스텀 데이터 바인딩
__7.3.3 [실습] @InitBinder를 이용하여 커스텀 데이터 바인딩하기
7.4 마치며
8장 스프링 시큐리티: 로그인/로그아웃 페이지 만들기
8.1 스프링 시큐리티 개요
__8.1.1 스프링 시큐리티
__8.1.2 스프링 시큐리티 태그
8.2 접근 권한과 사용자 권한 설정
__8.2.1 접근 권한을 설정하는 시큐리티 태그
__8.2.2 사용자 권한을 설정하는 시큐리티 태그
8.3 뷰 페이지에 사용하는 시큐리티 태그
__8.3.1 권한 태그: <sec:authorize>
__8.3.2 인증 태그: <sec:authentication>
__8.3.3 [실습] 스프링 시큐리티 태그로 도서 등록 페이지에 접근 권한 설정하기
8.4 로그인과 로그아웃 처리
__8.4.1 <form-login> 태그
__8.4.2 <logout> 태그
__8.4.3 [실습] 스프링 시큐리티 태그로 로그인 페이지 구현하기
__8.4.4 [실습] 스프링 시큐리티 태그로 로그아웃 페이지 구현하기
8.5 마치며
9장 파일 업로드 처리: 이미지 파일 업로드하기
9.1 파일 업로드의 개요
__9.1.1 파일 업로드
__9.1.2 파일 업로드를 위한 웹 페이지
9.2 MultipartFile을 사용한 파일 업로드
__9.2.1 MultipartFile 인터페이스의 개요
__9.2.2 파일 업로드 유형
__9.2.3 [실습] 리소스를 이용한 도서 이미지 출력하기
__9.2.4 [실습] 도서 이미지 파일 업로드하기
9.3 마치며
10장 예외 처리: 도서 검색 오류에 대한 예외 처리하기
10.1 예외 처리의 개요
__10.1.1 예외 처리
__10.1.2 예외 처리 방법의 종류
10.2 @ResponseStatus를 이용한 HTTP 상태 코드 기반 예외 처리
__10.2.1 HTTP 상태 코드의 개요
__10.2.2 @ResponseStatus를 이용한 예외 처리
__10.2.3 [실습] @ResponseStatus를 이용하여 예외 처리하기
10.3 @ExceptionHandler를 이용한 컨트롤러 기반 예외 처리
__10.3.1 @ExceptionHandler를 이용한 예외 처리
__10.3.2 [실습] @ExceptionHandler를 이용하여 예외 처리하기
10.4 @ControllerAdvice를 이용한 전역 예외 처리
__10.4.1 전역 예외 처리를 위한 @ControllerAdvice
__10.4.2 [실습] @ControllerAdvice를 이용하여 예외 처리하기
10.5 마치며
11장 로그 기록: 로그 기록 만들기
11.1 Log4j 개요
__11.1.1 로깅 유틸리티 Log4j
__11.1.2 Log4j의 구조와 로깅 레벨
__11.1.3 로그 환경 설정 파일의 구성
11.2 인터셉터 개요
__11.2.1 인터셉터
__11.2.2 인터셉터 등록
11.3 인터셉터를 이용한 로그 기록
__11.3.1 HandlerInterceptor를 이용한 로그 기록
__11.3.2 [실습] HandlerInterceptor를 사용하여 로그 기록하기
__11.3.3 [실습] 파일로 로그 기록 출력하기
__11.3.4 HandlerInterceptorAdapter를 사용한 로그 기록
__11.3.5 [실습] HandlerInterceptorAdapter를 사용하여 로그 기록하기
11.4 마치며
12장 다국어 처리: 도서 등록 페이지에서 다국어 페이지 만들기
12.1 다국어 처리의 개요
12.2 MessageSource를 이용한 다국어 처리
__12.2.1 메시지 리소스 파일 작성
__12.2.2 MessageSource 환경 설정
__12.2.3 뷰 페이지에 메시지 출력
__12.2.4 [실습] MessageSource를 이용하여 다국어 처리하기
12.3 LocaleResolver와 LocaleChangeInterceptor를 이용한 다국어 변경
__12.3.1 LocaleResolver 환경 설정
__12.3.2 LocaleChangeInterceptor를 이용한 로케일 변경
__12.3.3 [실습] LocaleResolver와 LocaleChangeInterceptor를 이용하여 다국어 변경하기
12.4 마치며
13장 유효성 검사: 도서 등록 페이지의 오류 메시지출력하기
13.1 유효성 검사의 개요
__13.1.1 유효성 검사의 유형
__13.1.2 @Valid를 이용한 유효성 검사
13.2 JSR-380으로 유효성 검사
__13.2.1 JSR-380 애너테이션 선언
__13.2.2 @Valid를 이용한 유효성 검사
__13.2.3 <form:errors> 태그로 오류 메시지 출력
__13.2.4 [실습] JSR-380을 이용하여 유효성 검사하기
13.3 사용자 정의 애너테이션으로 유효성 검사
__13.3.1 사용자 정의 애너테이션 생성
__13.3.2 ConstraintValidator 인터페이스의 구현체 생성
__13.3.3 [실습] 사용자 정의 애너테이션을 이용하여 유효성 검사하기
13.4 Validator 인터페이스로 유효성 검사
__13.4.1 유효성 검사 과정
__13.4.2 Validator 인터페이스의 구현체 생성
__13.4.3 @InitBinder를 선언한 메서드 추가
__13.4.4 [실습] Validator 인터페이스를 사용하여 유효성 검사하기
__13.4.5 [실습] Validator 인터페이스와 JSR-380을 연동해서 유효성 검사하기
13.5 마치며
14장 RESTful 웹 서비스: 장바구니 페이지 만들기
14.1 RESTful 웹 서비스의 개요
14.2 RESTful 방식의 애너테이션
__14.2.1 @RequestBody
__14.2.2 @ResponseBody
__14.2.3 @RestController
__14.2.4 [실습] RESTful 방식의 장바구니 기본 구조 만들기
14.3 RESTful 웹 서비스의 CRUD
__14.3.1 [실습] RESTful 웹 서비스를 위한 장바구니 CRUD 만들기
14.4 마치며
15장 스프링 웹 플로우: 주문 처리 페이지 만들기
15.1 웹 플로우의 개요
__15.1.1 스프링 웹 플로우
__15.1.2 스프링 웹 플로우의 특징
__15.1.3 [실습] 웹 플로우를 적용하는 주문 처리의 기본 구조 만들기
15.2 웹 플로우와 MVC 연동을 위한 환경 설정
__15.2.1 스프링 웹 플로우 환경 설정
__15.2.2 스프링 MVC 환경 설정
__15.2.3 [실습] 웹 플로우 적용을 위한 환경 설정하기
15.3 웹 플로우 구성 요소
__15.3.1 <flow> 요소
__15.3.2 <view-state> 요소
__15.3.3 <transition> 요소
__15.3.4 <end-state> 요소
__15.3.5 <evaluate> 요소
__15.3.6 <action-state> 요소
__15.3.7 <decision-state> 요소
__15.3.8 [실습] 주문 처리를 위한 웹 플로우 정의 파일 만들기
__15.3.9 [실습] 주문 처리를 위한 웹 플로우 페이지 작성하기
15.4 마치며
16장 타일즈: 웹 페이지 모듈화하기
16.1 타일즈 개요
__16.1.1 타일즈
__16.1.2 pom.xml 파일에 의존 라이브러리 등록
__16.1.3 servlet-context.xml 파일에 타일즈 환경 설정
__16.1.4 [실습] 타일즈 적용을 위한 환경 설정하기
16.2 타일즈 레이아웃 정의
__16.2.1 기본 레이아웃 정의
__16.2.2 타일즈 레이아웃 정의 파일 만들기
__16.2.3 타일즈 레이아웃 페이지 만들기
__16.2.4 [실습] 타일즈 레이아웃 정의하기
16.3 타일즈와 웹 플로우 연동
__16.3.1 FlowBuilder 서비스 설정
__16.3.2 ViewResolver 빈 등록
__16.3.3 [실습] 스프링 웹 플로우에 타일즈 연동하기
16.4 마치며
17장 데이터베이스 연동: 도서 목록 CRUD 처리하기
17.1 데이터베이스 설치
__17.1.1 MySQL 설치
__17.1.2 MySQL 기본 명령어
__17.1.3 [실습] 데이터베이스와 테이블 생성 및 데이터 등록하기
17.2 JDBC 연동을 위한 환경 설정
__17.2.1 pom.xml 파일에 의존 라이브러리 등록
__17.2.2 servlet-context.xml에 데이터베이스 환경 설정
__17.2.3 [실습] JDBC 연동을 위한 환경 설정하기
17.3 데이터 검색
__17.3.1 queryForObject() 메서드
__17.3.2 queryForList() 메서드
__17.3.3 query() 메서드
__17.3.4 [실습] CRUD 메서드를 사용하여 도서 목록 조회하기
17.4 데이터 삽입, 수정, 삭제
__17.4.1 삽입, 수정, 삭제
__17.4.2 [실습] CRUD 메서드를 사용하여 신규 도서 삽입하기
__17.4.3 [실습] CRUD 메서드를 사용하여 도서 정보 수정하기
__17.4.4 [실습] CRUD 메서드를 사용하여 도서 삭제하기
17.5 마치며
ㆍ지은이 송미영
독자의견 남기기