코드로 배우는 스프링 웹 프로젝트 (현업 개발을 위한 단계별 실습서 | 개정판)

코드로 배우는 스프링 웹 프로젝트 (현업 개발을 위한 단계별 실습서 | 개정판)

$44.79
Description
이 책은 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를 이용하던 개발 방식을 개선해서 더 적은 양의 코드로 개발을 할 수 있습니다.
저자

구멍가게코딩단

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

목차

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

Part1스프링개발환경구축
1장개발을위한준비
1.1개발환경설정
1.2스프링프로젝트생성
1.3Tomcat을이용한프로젝트실행확인
1.4Lombok라이브러리설치
1.5JavaConfiguration을하는경우
2장스프링의특징과의존성주입
2.1스프링프레임워크의간략한역사
2.2의존성주입테스트
2.3스프링이동작하면서생기는일
2.4스프링4.3이후단일생성자의묵시적자동주입
3장스프링과OracleDatabase연동
3.1오라클설치
3.2SQLDeveloper설치
3.3프로젝트의JDBC연결
3.4커넥션풀설정
4장MyBatis와스프링연동
4.1MyBatis
4.2스프링과의연동처리
4.3log4jdbc-log4j2설정

Part2스프링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.3Controller의파라미터수집
6.4Model이라는데이터전달자
6.5Controller의리턴타입
6.6Controller의Exception처리

Part3기본적인웹게시물관리
7장스프링MVC프로젝트의기본구성
7.1각영역의NamingConvention(명명규칙)
7.2프로젝트를위한요구사항
7.3예제프로젝트구성
7.4데이터베이스관련설정및테스트
7.5Java설정을이용하는경우의프로젝트구성
8장영속/비즈니스계층의CRUD구현
8.1영속계층의구현준비
8.2영속영역의CRUD구현
9장비즈니스계층
9.1비지니스계층의설정
9.2비즈니스계층의구현과테스트
10장프레젠테이션(웹)계층의CRUD구현
10.1Controller의작성
10.2BoardController의작성
11장화면처리
11.1목록페이지작업과includes
11.2목록화면처리
11.3등록입력페이지와등록처리
11.4조회페이지와이동
11.5게시물의수정/삭제처리
12장오라클데이터베이스페이징처리
12.1orderby의문제
12.2orderby보다는인덱스
12.3인덱스를이용하는정렬
12.4ROWNUM과인라인뷰
13장MyBatis와스프링에서페이징처리
13.1MyBatis처리와테스트
13.2BoardController와BoardService수정
14장페이징화면처리
14.1페이징처리할때필요한정보들
14.2페이징처리를위한클래스설계
14.3JSP에서페이지번호출력
14.4조회페이지로이동
14.5수정과삭제처리
14.6MyBatis에서전체데이터의개수처리
15장검색처리
15.1검색기능과SQL
15.2MyBatis의동적SQL
15.3검색조건처리를위한Criteria의변화
15.4화면에서검색조건처리

Part4REST방식과Ajax를이용하는댓글처리
16장REST방식으로전환
16.1@RestController
16.2@RestController의반환타입
16.3@RestController에서파라미터
16.4REST전송방식
16.5다양한전송방식
17장Ajax댓글처리
17.1프로젝트의구성
17.2댓글처리를위한영속영역
17.3서비스영역과Controller처리
17.4JavaScript준비
17.5이벤트처리와HTML처리
17.6댓글의페이징처리
17.7댓글페이지의화면처리

Part5AOP와트랜잭션
18장AOP라는패러다임
18.1AOP용어들
18.2AOP실습
18.3AOP설정
18.4AOP테스트
18.5@Around와ProceedingJoinPoint
19장스프링에서트랜잭션관리
19.1데이터베이스설계와트랜잭션
19.2트랜잭션설정실습
20장댓글과댓글수에대한처리
20.1프로젝트수정

Part6파일업로드처리
21장파일업로드방식
21.1스프링의첨부파일을위한설정
21.2〈form〉방식의파일업로드
21.3Ajax를이용하는파일업로드
22장파일업로드상세처리
22.1파일의확장자나크기의사전처리
22.2섬네일이미지생성
22.3업로드된파일의데이터반환
23장브라우저에서섬네일처리
23.1〈inputtype='file'〉의초기화
23.2업로드된이미지처리
24장첨부파일의다운로드혹은원본보여주기
24.1첨부파일의다운로드
24.2원본이미지보여주기
24.3첨부파일삭제
25장프로젝트의첨부파일-등록
25.1첨부파일정보를위한준비
25.2등록을위한화면처리
25.3BoardController,BoardService의처리
26장게시물의조회와첨부파일
26.1BoardService와BoardController수정
26.2BoardController의변경과화면처리
27장게시물의삭제와첨부파일
27.1첨부파일삭제처리
28장게시물의수정과첨부파일
28.1화면에서첨부파일수정
28.2서버측게시물수정과첨부파일
29장잘못업로드된파일삭제
29.1잘못업로드된파일의정리
29.2Quartz라이브러리설정
29.3BoardAttachMapper수정
29.4cron설정과삭제처리

Part7SpringWebSecurity를이용한로그인처리
30장SpringWebSecurity소개
30.1SpringWebSecurity의설정
30.2시큐리티가필요한URI설계
30.3인증(Authentication)과권한부여(Authorization-인가)
31장로그인과로그아웃처리
31.1접근제한설정
31.2단순로그인처리
31.3커스텀로그인페이지
31.4CSRF(Cross-siterequestforgery)공격과토큰
31.5로그인성공과AuthenticationSuccessHandler
31.6로그아웃의처리와LogoutSuccessHandler
32장JDBC를이용하는간편인증/권한처리
32.1JDBC를이용하기위한테이블설정
32.2기존의테이블을이용하는경우
33장커스텀UserDetailsService활용
33.1회원도메인,회원Mapper설계
33.2CustomUserDetailsService구성
34장스프링시큐리티를JSP에서사용하기
34.1JSP에서로그인한사용자정보보여주기
34.2표현식을이용하는동적화면구성
35장자동로그인(remember-me)
35.1데이터베이스를이용하는자동로그인
36장Java설정을이용하는경우의스프링시큐리티설정
36.1Java설정추가및동작확인
36.2로그인페이지관련설정
36.3로그아웃처리
36.4PasswordEncoder지정
36.5JDBC를이용하는Java설정
36.6커스텀UserDetailsService설정
36.7자동로그인설정(remember-me)
37장어노테이션을이용하는스프링시큐리티설정
38장기존프로젝트에스프링시큐리티접목하기
38.1로그인페이지처리
38.2게시물작성시스프링시큐리티처리
38.3게시물조회와로그인처리
38.4게시물의수정/삭제
38.5Ajax와스프링시큐리티처리
39장로그아웃처리
39.1로그아웃페이지
39.2로그인후'/board/list'로이동하기

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

찾아보기

출판사 서평

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

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

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

[이책의구성과활용방법]
이책의구성은크게다음과같습니다.
PART1:스프링개발환경구축
PART2:스프링MVC설정
PART3:기본적인웹게시물관리
PART4:REST방식과Ajax를이용하는댓글처리
PART5:AOP와트랜잭션
PART6:파일업로드처리
PART7:SpringWebSecurity를이용한로그인처리

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

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