본문 바로가기

출간 도서 소개

11. 코드로 배우는 스프링 웹 프로젝트 [개정판]

[제목] 코드로 배우는 스프링 웹 프로젝트 [개정판]

 

 

[부제] 현업 개발을 위한 단계별 실습서

저자: 구멍가게 코딩단
출판사: 남가람북스
발행일: 2018-09-13
ISBN: 979-11-89184-01-8
가격: 38,000원
페이지: 760
판형: 182*232*30

[저자 소개]

프로그래밍을 좋아하지만, 남들 앞에 나설 용기 없는 10년차 이상 개발자, 현업 관리자, 강사들의 비공개 모임. 어린 시절 구멍가게 앞 아저씨들이 인생의 진리를 가볍게 던졌던 것처럼 프로그래밍의 오의(奧義)를 가볍게 던지고 싶은 사람들의 모임. http://cafe.naver.com/gugucoding을 통해서 독자들과 소통하고 있다. 스프링 외에도 여러 주제에 대한 자료를 제공하며, 저서로는 <스타트 스프링 부트>가 있음.

[책 소개]

이 책은 Spring Framework(이하 스프링)를 사용해서 말 그대로 ‘웹 프로젝트’를 어떻게 진행하는지를 설명하는 책입니다. 웹 프로젝트라고 거창하게 표현하지만, 좀 더 구체적으로는 스프링으로 웹 프로젝트에서 사용되는 게시물 관리를 만들어 보는 것이 주된 목적입니다. 모든 웹 프로젝트는 그 성격에 따라 구성과 구조가 다르기는 하지만 결과적으로는 게시물 관리 모듈의 집합체라고 볼 수 있습니다. 이 책에서는 웹 프로젝트에 사용되는 게시물을 다음과 같은 예제들로 작성합니다.

* 데이터베이스를 활용해서 기본적인 등록, 수정, 삭제, 조회 기능을 구현
* 웹 화면에서 페이징 처리와 검색 처리
* 다양한 종류의 첨부파일을 웹에 게시
* Ajax를 이용하는 데이터 처리
* 쿠키나 세션 등을 이용한 로그인/로그아웃 인증 처리

[상세 페이지]

- 이 책의 대상 독자 -

스프링으로 웹 프로젝트를 진행하기 위해서는 다음과 같은 선행학습이 필요합니다.
* Java 언어에 관한 기본 지식
* Servlet/JSP에 관한 기본 지식 및 실습 경험 - 모델1, 모델2에 대한 기본적인 개념이 필요합니다.
* HTML/JavaScript/CSS에 관한 기본 지식 - jQuery 등을 다뤄본 경험이 있다는 것을 전제로 예제를 작성합니다.
* SQL에 관한 기본 지식 - 오라클 데이터베이스를 이용해 본 경험이 있고, 사용자 생성이나 테이블, 시퀀스 등의 경험이 필요합니다.

이 책은 다음과 같은 개발자를 대상으로 합니다.
* 스프링 프레임워크를 사용해서 자신만의 경험을 쌓으려는 초급 개발자
* 웹 개발 지식과 경험은 있지만, 스프링을 이용한 예제를 작성하는데 어려움을 느끼는 초급 개발자
* 최근에 변화된 스프링을 이용해서 개발하고 싶은 개발자
* 웹 프로젝트를 진행하면서 어떤 개발 단계를 거쳐야 하는지 알고 싶은 개발자

 

- 개정판에서 달라진 점 -

개정판에서는 다음과 같은 점들이 달라지게 되었습니다.
* 스프링의 버전은 5.x 버전을 사용하고, 개발도구는 Spring Tool Suite(이하 STS) 혹은 Eclipse와 Maven으로 작성합니다.
* 기존에 사용하던 XML과 Java Configuration(이하 Java 설정)과 어노테이션 기반의 설정을 이용합니다.
   - 최근 스프링 관련 예제나 프로젝트에서 XML 대신에 Java 설정을 이용할 때가 점점 증가하고 있으므로 이를 반영합니다.
* 데이터베이스는 기존의 MySQL이 아닌 Oracle Database 11g Express Edition 버전을 사용합니다.
* 스프링 시큐리티(Spring Security)를 추가해서 로그인 부분을 처리합니다.
* Lombok 라이브러리를 활용해서 Getter/Setter 등의 코드를 줄여서 최소한의 코드로 프로젝트를 작성합니다.
* MyBatis의 Mapper 인터페이스와 XML을 활용합니다. 기존의 DAO를 이용하던 개발 방식을 개선해서 더 적은 양의 코드로 개발을 할 수 있습니다.

[출판사 리뷰]

현재까지 출간된 스프링 관련 많은 서적들은 주로 스프링의 내부 구조나 원리 등 이론적인 배경에 초점을 두었지만, 이 책은 실무 개발에서 사용하는 도구로서 스프링을 다루고 있습니다. 이 책에서 바라보는 스프링은 다음과 같은 의미가 있습니다.

* 스프링은 이 책의 예제를 만드는 하나의 도구로 사용합니다. 스프링 프레임워크는 다양한 이론과 쓰임새가 있지만, 이 책에서는 하나의 웹 프로젝트를 목표로 두고 이를 완성해 가는 과정을 상세히 설명합니다. 이러한 과정을 통해서 필요한 최소한의 이론과 사용법을 익히게 됩니다.

* 웹 개발자가 스프링을 이용할 때 이를 사용하는 순서에 초점을 둡니다. 스프링은 초기의 설정이 어렵게 다가오기 때문에 각 단계를 진행할 때 어떤 방식으로 테스트를 하고, 어떤 단계를 확인해야 하는지에 중점을 둡니다.

- 이 책의 구성과 활용 방법 -

이 책의 구성은 크게 다음과 같습니다.
PART 1: 스프링 개발 환경 구축
PART 2: 스프링 MVC 설정
PART 3: 기본적인 웹 게시물 관리
PART 4: REST 방식과 Ajax를 이용하는 댓글 처리
PART 5: AOP와 트랜잭션
PART 6: 파일 업로드 처리
PART 7: Spring Web Security를 이용한 로그인 처리

PART 1에서는 스프링을 공부하는 데 필요한 기본적인 지식을 간단하게 소개합니다. 스프링으로 웹 프로젝트를 진행할 때는 단순히 스프링만 사용하는 것이 아니기 때문에 그와 관련된 기반 지식을 함께 공부할 필요가 있습니다. 이 책의 예제는 스프링과 MyBatis, Oracle을 사용해서 프로젝트를 진행하고, 프로젝트 생성은 STS로 생성합니다.
PART 2부터는 각 장의 목표에 맞게 단계별로 개발의 목표와 과정을 설명합니다. 각 장은 개발 단계와 더불어 구현이 필요한 지식을 추가하는 형태로 구성하고 있습니다.

[소스 코드 다운로드 및 Q&A]

소스 코드 다운로드 및 Q&A는 구멍가게 코딩단 카페의 자료실에서 확인할 수 있습니다.

http://cafe.naver.com/gugucoding

[목 차]

이 책을 내며...
코드로 배우는 스프링 웹 프로젝트 v2.0

Part 1 스프링 개발 환경 구축

1장 개발을 위한 준비
1.1 개발환경 설정
1.2 스프링 프로젝트 생성
1.3 Tomcat을 이용한 프로젝트 실행 확인
1.4 Lombok 라이브러리 설치
1.5 Java Configuration을 하는 경우

2장 스프링의 특징과 의존성 주입
2.1 스프링 프레임워크의 간략한 역사
2.2 의존성 주입 테스트
2.3 스프링이 동작하면서 생기는 일
2.4 스프링 4.3 이후 단일 생성자의 묵시적 자동주입

3장 스프링과 Oracle Database 연동
3.1 오라클 설치
3.2 SQL Developer 설치
3.3 프로젝트의 JDBC 연결
3.4 커넥션 풀 설정

4장 MyBatis와 스프링 연동
4.1 MyBatis
4.2 스프링과의 연동 처리
4.3 log4jdbc-log4j2 설정

Part 2 스프링 MVC 설정

5장 스프링 MVC의 기본 구조
5.1 스프링 MVC 프로젝트의 내부 구조
5.2 예제 프로젝트의 로딩 구조
5.3 스프링 MVC의 기본 사상
5.4 모델2와 스프링 MVC
 
6장 스프링 MVC의 Controller
6.1 @Controller, @RequestMapping
6.2 @RequestMapping의 변화
6.3 Controller의 파라미터 수집
6.4 Model이라는 데이터 전달자
6.5 Controller의 리턴 타입
6.6 Controller의 Exception 처리

Part 3 기본적인 웹 게시물 관리

7장 스프링 MVC 프로젝트의 기본 구성
7.1 각 영역의 Naming Convention(명명규칙)
7.2 프로젝트를 위한 요구 사항
7.3 예제 프로젝트 구성
7.4 데이터베이스 관련 설정 및 테스트
7.5 Java 설정을 이용하는 경우의 프로젝트 구성

8장 영속/비즈니스 계층의 CRUD 구현
8.1 영속 계층의 구현 준비
8.2 영속 영역의 CRUD 구현
 
9장 비즈니스 계층
9.1 비지니스 계층의 설정
9.2 비즈니스 계층의 구현과 테스트

10장 프레젠테이션(웹) 계층의 CRUD 구현
10.1 Controller의 작성
10.2 BoardController의 작성

11장 화면 처리
11.1 목록 페이지 작업과 includes
11.2 목록 화면 처리
11.3 등록 입력 페이지와 등록 처리
11.4 조회 페이지와 이동
11.5 게시물의 수정/삭제 처리

12장 오라클 데이터베이스 페이징 처리
12.1 order by의 문제
12.2 order by 보다는 인덱스
12.3 인덱스를 이용하는 정렬
12.4 ROWNUM과 인라인뷰

13장 MyBatis와 스프링에서 페이징 처리
13.1 MyBatis 처리와 테스트
13.2 BoardController와 BoardService 수정

14장 페이징 화면 처리
14.1 페이징 처리할 때 필요한 정보들
14.2 페이징 처리를 위한 클래스 설계
14.3 JSP에서 페이지 번호 출력
14.4 조회 페이지로 이동
14.5 수정과 삭제 처리
14.6 MyBatis에서 전체 데이터의 개수 처리

15장 검색 처리
15.1 검색 기능과 SQL
15.2 MyBatis의 동적 SQL
15.3 검색 조건 처리를 위한 Criteria의 변화
15.4 화면에서 검색 조건 처리

Part 4 REST 방식과 Ajax를 이용하는 댓글 처리

16장 REST 방식으로 전환
16.1 @RestController
16.2 @RestController의 반환 타입
16.3 @RestController에서 파라미터
16.4 REST 전송 방식
16.5 다양한 전송 방식

17장 Ajax 댓글 처리
17.1 프로젝트의 구성
17.2 댓글 처리를 위한 영속 영역
17.3 서비스 영역과 Controller 처리
17.4 JavaScript 준비
17.5 이벤트 처리와 HTML 처리
17.6 댓글의 페이징 처리
17.7 댓글 페이지의 화면 처리

Part 5 AOP와 트랜잭션

18장 AOP라는 패러다임
18.1 AOP 용어들
18.2 AOP 실습
18.3 AOP 설정
18.4 AOP 테스트
18.5 @Around와 ProceedingJoinPoint

19장 스프링에서 트랜잭션 관리
19.1 데이터베이스 설계와 트랜잭션
19.2 트랜잭션 설정 실습

20장 댓글과 댓글 수에 대한 처리
20.1 프로젝트수정

Part 6 파일 업로드 처리

21장 파일 업로드 방식
21.1 스프링의 첨부파일을 위한 설정
21.2 <form> 방식의 파일 업로드
21.3 Ajax를 이용하는 파일 업로드

22장 파일 업로드 상세 처리
22.1 파일의 확장자나 크기의 사전 처리
22.2 섬네일 이미지 생성
22.3 업로드된 파일의 데이터 반환

23장 브라우저에서 섬네일 처리
23.1 <input type='file'>의 초기화
23.2 업로드된 이미지 처리

24장 첨부파일의 다운로드 혹은 원본 보여주기
24.1 첨부파일의 다운로드
24.2 원본 이미지 보여주기
24.3 첨부파일 삭제

25장 프로젝트의 첨부파일 - 등록
25.1 첨부파일 정보를 위한 준비
25.2 등록을 위한 화면 처리
25.3 BoardController, BoardService의 처리

26장 게시물의 조회와 첨부파일
26.1 BoardService와 BoardController 수정
26.2 BoardController의 변경과 화면 처리

27장 게시물의 삭제와 첨부파일
27.1 첨부파일 삭제 처리

28장 게시물의 수정과 첨부파일
28.1 화면에서 첨부파일 수정
28.2 서버측 게시물 수정과 첨부파일

29장 잘못 업로드된 파일 삭제
29.1 잘못 업로드된 파일의 정리
29.2 Quartz 라이브러리 설정
29.3 BoardAttachMapper 수정
29.4 cron 설정과 삭제 처리
 
Part 7 Spring Web Security를 이용한 로그인 처리

30장 Spring Web Security 소개
30.1 Spring Web Security의 설정
30.2 시큐리티가 필요한 URI 설계
30.3 인증(Authentication)과 권한부여(Authorization -인가)

31장 로그인과 로그아웃 처리
31.1 접근 제한 설정
31.2 단순 로그인 처리
31.3 커스텀 로그인 페이지
31.4 CSRF(Cross-site request forgery) 공격과 토큰
31.5 로그인 성공과 AuthenticationSuccessHandler
31.6 로그아웃의 처리와 LogoutSuccessHandler

32장 JDBC를 이용하는 간편 인증/권한 처리
32.1 JDBC를 이용하기 위한 테이블 설정
32.2 기존의 테이블을 이용하는 경우

33장 커스텀 UserDetailsService 활용
33.1 회원 도메인, 회원 Mapper 설계
33.2 CustomUserDetailsService 구성

34장 스프링 시큐리티를 JSP에서 사용하기
34.1 JSP에서 로그인한 사용자 정보 보여주기
34.2 표현식을 이용하는 동적 화면 구성

35장 자동 로그인(remember-me)
35.1 데이터베이스를 이용하는 자동 로그인

36장 Java 설정을 이용하는 경우의 스프링 시큐리티 설정
36.1 Java 설정 추가 및 동작 확인
36.2 로그인 페이지 관련 설정
36.3 로그아웃 처리
36.4 PasswordEncoder 지정
36.5 JDBC를 이용하는 Java 설정
36.6 커스텀 UserDetailsService 설정
36.7 자동 로그인 설정(remember-me)

37장 어노테이션을 이용하는 스프링 시큐리티 설정

38장 기존 프로젝트에 스프링 시큐리티 접목하기
38.1 로그인 페이지 처리
38.2 게시물 작성 시 스프링 시큐리티 처리
38.3 게시물 조회와 로그인 처리
38.4 게시물의 수정/삭제
38.5 Ajax와 스프링 시큐리티 처리

39장 로그아웃 처리
39.1 로그아웃 페이지
39.2 로그인 후 '/board/list'로 이동하기

부록
A Intellij와 Gradle을 이용하는 스프링 환경
A.1 Intellij 버전과 다운로드
A.2 Gradle 설치
A.3 프로젝트 생성
A.4 스프링 프레임워크 추가
A.5 Lombok 플러그인 추가
A.6 Lombok 컴파일 환경
A.7 Log4j 추가
A.8 Tomcat 설정
A.9 스프링 MVC 추가와 XML 파일 생성
A.10 web.xml 생성과 실행 테스트

찾아 보기