책 이미지
책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 웹 서비스/웹 프로그래밍
· ISBN : 9788992939997
· 쪽수 : 308쪽
책 소개
목차
▣ LESSON 0 | 프롤로그
- 웹 애플리케이션 개발 기술은 어디서 배우는가?
- 왜 여러분은 웹 애플리케이션 개발 기술을 배우지 못하는 것일까?
- 대상 독자
- 이 책을 읽을 때 필요한 사전 지식
- 가장 효율적으로 기술을 배우는 방법
▣ LESSON 1 | 웹 애플리케이션이란 무엇인가?
1.1 데스크톱 애플리케이션
1.2 웹 애플리케이션
1.3 정리
▣ LESSON 2 | 웹은 어떻게 발전했는가?
2.1 WWW의 탄생과 보급
- 전 세계의 컴퓨터를 연결하는 인터넷
- 인터넷 보급의 견인차 월드 와이드 웹과 모자이크
- WWW의 탄생
- 현대 웹 브라우저의 시조인 NCSA 모자이크
2.2 웹을 뒷받침하는 기술의 발명
- 웹 서버와 웹 클라이언트
- 왜 클라이언트와 서버로 나누는가?
- '그 리소스는 어디에 있지?' - URL
- HTTP
2.3 CGI의 탄생
- 동적인 콘텐츠에 대한 요구
- CGI의 탄생
- 웹의 폭발적인 보급
2.4 서블릿의 등장
- CGI를 둘러싼 문제점
- 자바/서블릿의 탄생
- 자바로 애플리케이션을 개발할 때의 이점
2.5 JSP의 탄생
- 서블릿의 문제점
- 발상의 전환! JSP의 탄생
2.6 웹 애플리케이션 프레임워크의 시대
- 서블릿과 JSP의 문제점
- 웹 애플리케이션 프레임워크의 탄생
2.7 정리
▣ LESSON 3 | HTTP를 이해하자
3.1 왜 HTTP를 알아야 하는가?
3.2 웹 브라우저와 웹 서버의 통신을 엿보자
- 피들러 설치
- HTTP 통신을 엿보자
- HTTP 요청을 엿보자
- HTTP 응답을 엿보자
- HTTP에서는 한 번에 리소스 하나를 취득한다
- 파일명을 생략했을 경우의 요청
3.3 정보는 어떻게 인터넷의 대해를 건너는가?
- 인터넷상의 주소-IP 주소
- IP 주소에 의지해 정보를 보내는 TCP/IP
- IP 주소는 누가 결정하는가?
- 글로벌 IP 주소와 사설 IP 주소
- 호스트명을 IP 주소로 변환하는 DNS
- DNS는 어떻게 구현되는가?
- 호스트 내의 수신처를 결정하는 포트 번호
3.4 웹 서버에 요청을 어떻게 전달하는가?
- GET 메서드를 이용한 매개변수 전달
- 애플리케이션 측의 매개변수 받기
- POST 메서드를 이용한 매개변수 전달
- GET과 POST 중 어느 쪽을 사용해야 할까?
- 한글은 어떻게 전달해야 하는가?
3.5 정리
▣ LESSON 4 | CGI에서 웹 애플리케이션으로
4.1 배달 피자 주문 사이트를 만들자
4.2 화면 구성
4.3 화면 모형
4.4 로그인 인증 기능
- PHP로 인증 기능을 만들자
- 인증 기능의 동작을 확인하자
- 리다이렉트 동작의 HTTP 통신을 확인하자
4.5 로그인 상태를 어떻게 기억할 것인가?
- 상태 유지 프로토콜과 무상태 프로토콜
- 무상태인 HTTP상에서 상태를 어떻게 표현할 것인가?
- 쿠키를 이용해 상태를 보존한다
- 실제 쿠키 이용을 확인한다
4.6 안전하게 상태를 보존하기 위한 기술 -세션
- 쿠키를 둘러싼 문제점
- 은행의 창구 업무를 통해 세션을 이해하자
- 계좌 개설 업무의 진행 상황을 어떻게 관리하는가?
- 세션으로 처리 진행 상황을 관리한다
- 세션의 상태를 어디에 보존할 것인가?
- HTTP에서의 세션 ID 전달 방법
- 실제 웹 애플리케이션에서의 세션 ID 활용
- 세션 ID를 이용한 사용자 식별
4.7 피자 펜토미노의 완성
4.8 정리
▣ LESSON 5 | 웹 애플리케이션의 구성 요소
- 왜 웹 애플리케이션의 구성을 이해해야 하는가?
5.1 웹 서버와 웹 클라이언트의 시대
- WWW의 여명기
- CGI의 시대
5.2 데이터베이스 서버의 등장
- 대량의 정보를 어떻게 관리할 것인가?
- 데이터베이스 관리 시스템의 등장
- 데이터베이스에 대한 조작
- 데이터베이스를 이용한 정보의 관리
- 데이터베이스에서 정보를 추출한다
- 필요한 정보를 SQL로 데이터베이스에 전달한다
- 데이터베이스와 클라이언트의 관계
- 데이터베이스 서버의 분리
- 웹 애플리케이션과 데이터베이스의 통신
5.3 애플리케이션 서버의 등장
- 서블릿이나 JSP는 어디에서 작동하는가?
- 서블릿/JSP를 작동시키기 위한 애플리케이션 서버
- 웹 서버와 애플리케이션 서버의 연동
- 웹 서버와 애플리케이션 서버의 분담
- 웹 서버와 애플리케이션 서버 연동의 이점
- 여러 톰캣에 전송하기
- 웹 서버의 기능을 가진 애플리케이션 서버
5.4 웹 시스템의 삼층 구성
- 최소 구성의 웹 시스템
- 일반적인 구성
- 웹 시스템의 삼층 구성
5.5 정리
▣ LESSON 6 | 웹 애플리케이션을 효율적으로 개발하는 방법
6.1 서블릿/JSP만으로는 부족한가?
- 웹 애플리케이션 개발의 표준 ? 자바
- 서블릿과 JSP의 연동
6.2 서블릿/JSP를 이용한 피자 펜토미노의 로그인 처리 구현
- JSP를 통한 로그인 화면 표시
- 서블릿의 호출
- 로그인 서블릿의 처리
- 포워드와 리다이렉트의 차이
- 요청 스코프에서의 정보 전달
- JSP의 요청 스코프에서 정보를 꺼내기
- 왜 요청 스코프가 필요한가?
- 세션 스코프와 요청 스코프의 차이
6.3 웹 애플리케이션의 아키텍처
- 로직과 디자인의 분리
- 소프트웨어의 건축 양식
- 피자 펜토미노의 구조를 살펴보자
- MVC 모델에 따른 웹 애플리케이션의 아키텍처
- MVC 모델에서의 처리 흐름
6.4 프레임워크를 통한 아키텍처의 구현
- 프레임워크란 무엇인가?
- 스트러츠를 이용한 MVC 모델의 구현
- 스트러츠를 이용한 피자 펜토미노의 로그인 처리
- JSP에서의 로그인 처리 액션 호출
- 로그인 처리 액션에서의 로그인 확인 처리
- 상품 목록 화면으로 이동
6.5 레이어 패턴에 따른 데이터 액세스 계층의 분리
- 모델을 어떻게 구현할 것인가?
- JDBC를 이용해 데이터베이스에서 정보를 가져온다
- 레이어 패턴에 따른 데이터 액세스 계층의 분리
- DAO 패턴을 이용한 데이터 액세스 레이어의 구현
6.6 O/R 매핑 프레임워크를 이용한 데이터 액세스 레이어 구현
- O/R 매핑 프레임워크의 필요성
- RDB와 객체의 임피던스 불일치
- 아이바티스를 이용한 O/R 매핑의 실제
- 데이터 매퍼와 SQL 맵 파일을 이용한 O/R 매핑 처리
- Dao 프레임워크를 이용한 DAO의 작성
6.7 프레임워크 이용의 장점과 단점
- 프레임워크 이용의 장점
- 프레임워크 이용의 단점
6.8 정리
▣ LESSON 7 | 보안을 확보하기 위한 방법
7.1 왜 보안을 확보해야 하는가?
- 웹 애플리케이션이 지켜야 할 보안
7.2 웹 애플리케이션에 대한 대표적인 공격 수법과 그 대책
- SQL 인젝션
- 크로스 사이트 스크립팅(XSS)
- 세션 하이재킹
- 크로스 사이트 요청 위조
- 강제 브라우징
- 디렉터리 접근 공격
7.3 설계ㆍ실행의 실수에 기인한 오작동이나 보안 문제를 막기 위한 대책
- 뒤로 가기 버튼 대책
- 이중 폼 제출 대책
- hidden 매개변수를 이용할 때의 주의점
- 디버그 정보를 출력하지 않는다
- 전역 변수에 정보를 담지 않는다
7.4 정리
▣ LESSON 8 | 맺음말
- 감사의 말
- 제5쇄 증쇄에 즈음해
▣ LESSON 9 | 부록
9.1 참고 서적ㆍ사이트
책속에서
하면 먼저 PC통신을 떠올렸으며, 주로 전화선을 이용해 모뎀으로 통신을 했기에 속도는 턱없이 느렸다. 지금은 '겨우' 몇 메가바이트이지만, 그때는 '무려' 몇 메가바이트였다. 게다가 전화 요금 체계에 시분제가 적용됨에 따라 유선 통신 요금의 부담은 지금과는 비교도 되지 않았다. 밤새 PC 통신을 하다가 전화 요금이 십여 만 원씩 나와 고지서를 받고 깜짝 놀란 어머니(혹은 아버지)에게 빗자루로 맞았다는 이야기를 심심치 않게 들을 수 있었던 시절이었다(옮긴이도 빗자루로 맞지는 않았지만 비슷한 경험을 했다). 이렇듯 온라인을 통한 정보 교환에 제약이 많았던 시절이기에 소프트웨어는 패키지 형태로 판매되는 데스크톱 애플리케이션이 주류를 이뤘다. 그러나 ADSL과 VDSL 등 점차 초고속 통신망이 구축되고 인터넷이 일반화되면서 소프트웨어의 흐름은 데스크톱 애플리케이션에서 웹 애플리케이션으로 넘어오고 있다.
이제 웹 애플리케이션은 우리 생활에 없어서는 안 될 필수품이다. 우리는 Gmail이나 각종 포털 사이트의 이메일 서비스를 통해 이메일을 주고받으며, 사고 싶은 물건이 있으면 인터넷에서 최저가를 검색한 다음 인터넷 쇼핑몰에서 구입한다. 내가 타려는 버스가 어디쯤 와 있는지도 인터넷에서 확인할 수 있게 됐다. 모두 웹 애플리케이션의 발달로 가능해진 일들이다.
이 책은 그런 웹 애플리케이션의 개발에 뜻을 두고 있는 분들을 위한 입문서다. 입문서이기에 구체적인 기술을 자세히 다루지는 않지만, 그 대신 웹 애플리케이션을 개발하기 위한 기본적인 지식과 역사, 배경을 친절하게 설명해 준다. 글쓴이가 이 책에서 많은 중점을 둔 부분은 바로 웹 애플리케이션 개발 기술이 오늘에 이르기까지의 역사와 배경에 관한 설명이다. 어떤 기술이 개발된 이유는 그 기술이 필요했기 때문이다. 또한 처음부터 완벽한 기술은 있을 수 없으므로 문제점이 발생하기 마련이고, 그 문제점을 해결하기 위해 또 다른 기술이 탄생한다. 이러한 역사 속에서 현재의 웹 애플리케이션 개발 기술로 발전된 것이며, 앞으로도 새로운 필요성에 따라 신기술이 속속 탄생할 것이다. 그런 역사를 이해한다면 어떤 기술을 어떻게 이용해야 할지 아는 데 많은 도움이 될 것이며, 새로운 기술이 탄생해도 그 기술을 좀 더 빨리 이해할 수 있으리라는 것이 글쓴이의 생각이다. 그리고 옮긴이 역시 글쓴이의 생각에 동의한다.
뭔가를 배울 때 단순히 내용만을 암기하는 것은 큰 도움이 되지 못한다. 그 바탕에 깔려있는 배경을 알아야 응용력이 생기기 마련이다. 독자 여러분도 학교에서 수학 공식을 암기한 경험이 있을 것이다. 참고서에 나와 있는 공식을 무작정 외우기만 하면 똑같은 패턴의 문제가 나왔을 때는 간단하게 숫자만 바꿔바꿔서 빠르게 풀 수 있지만, 조금만 문제를 비틀어도 벽에 부딪치고 만다. 그러나 그 공식이 어떤 과정을 거쳐 나왔는지를 이해한다면 패턴에서 벗어난 문제를 만나더라도 당황하지 않고 이 문제를 어떻게 풀어야 할지 곰곰이 생각하며 풀 수 있게 된다. 어학에서 관용 표현이나 속담 등을 외울 때도 마찬가지다. 그 표현 또는 속담이 어떤 배경에서 나왔으며, 때로는 그 안에 어떤 역사가 담겨 있는지 알면 단순 암기할 때보다 훨씬 이해도 잘 되고 잘 잊어버리지도 않는다. 이와 같이 역사와 배경을 알면 이해도가 훨씬 높아지며, 무엇보다도 배우는 것이 즐거워진다.
다만 이 책은 아무런 지식도 없는 상태에서 웹 애플리케이션 개발 기술을 처음부터 배우려 하는 사람을 위한 책은 아니다. 전문적인 내용을 최대한 배제했다고는 하지만, HTML에 관한 기초 지식과 간단한 프로그래밍 지식 정도는 알고 있다는 가정에서 이야기가 진행된다. 그러나 지금부터 공부를 시작하는 사람도 가벼운 마음으로 읽어 본다면 앞으로 웹 애플리케이션 개발 기술을 공부하기 위해 필요한 개념을 잡는 데 많은 도움이 되리라고 생각한다.
- 옮긴이 서문 중에서