PART 01 Ajax를 구성하는 기본 구성요소 Chapter 01 Ajax 프로그래밍을 위한 기본 지식 ... 14 Section 1 Ajax의 개요 ... 14 (1) Ajax란 무엇인가? ... 14 (2) Ajax의 기본이 되는 요소 기술들 ... 17 (3) Ajax 이용의 장점 ... 19 (4) 인터넷으로 통신하는 경우 기본이 되는 HTTP의 구조 ... 20 (5) 서버와 비동기통신의 구조 ... 21 (6) 웹 브라우저의 이벤트 ... 22 (7) XHTML ... 23 (8) DynamicHTML(DHTML) ... 25 (9) JavaScript ... 26 (10) CSS(Cascading Style Sheet) ... 27 (11) HTML, CSS, JavaScript의 역할 분담 ... 29 (12) DOM(Document Object Model) ... 30 (13) 리치 클라이언트에 대하여 ... 31 Section 2 작업환경 설정 ... 32 (1) 자바 다운로드와 설치 - JDK(Java Development Kit) 설치 ... 33 (2) 톰캣(Tomcat)의 다운로드와 설치 ... 44 (3) 개발 툴 설치 ... 51 학습정리 ... 57 Chapter 02 기본적으로 알아야 할 JavaScript ... 58 Section 1 JavaScript의 개요 ... 58 Section 2 함수(Function) ... 59 실습 : ajaxTest 웹 어플리케이션 폴더 작성 ... 60 실습 : ch02 폴더 작성 ... 63 (1) 사용자 정의 함수 작성 ... 64 (2) 알아두어야 할 내장 함수(Implicit Function) ... 65 실습 : alert() 함수를 사용한 메시지상자 호출 ... 66 실습 : confirm() 함수를 사용한 메시지상자 호출 ... 69 실습 : prompt() 함수를 사용한 입력상자 호출 ... 72 Section 3 객체에 따른 메소드와 이벤트(Event) ... 77 (1) 이벤트(Event)와 이벤트 핸들러(Event Handler) ... 77 (2) 객체에서 발생하는 중요 이벤트와 메소드 ... 78 Section 4 객체지향 자바스크립트 ... 81 (1) prototype프로퍼티 사용 ... 81 실습 : Mammal, Human, Ape 클래스의 상속 관계를 자바스크립트에서 정의하고 사용하기 ... 82 (2) 자바스크립트에서 정보 은닉 ... 86 학습정리 ... 88 Chapter 03 DOM(Document Object Model) ... 90 Section 1 DOM(Document Object Model)의 개요 ... 90 Section 2 DOM(Document Object Model)의 사용 ... 91 실습 : ch03 폴더 작성 ... 91 (1) HTML과 자바스크립트, 그리고 CSS를 사용한 기본 구조 ... 92 실습 : DOM 구조 연습에 사용할 domTestl.html 작성 ... 92 (2) 프로퍼티와 메소드를 포함한 클래스의 선언 ... 96 실습 : 프로퍼티와 메소드를 포함한 클래스의 선언 ... 97 (3) 클래스의 객체에 메소드 추가 ... 101 실습 : 프로퍼티와 메소드를 포함한 클래스의 선언 ... 101 (4) prototype.js를 사용한 클래스의 선언 ... 105 실습 : 프로퍼티와 메소드를 포함한 클래스의 선언 ... 105 (5) 클래스를 상속해서 서브 클래스 생성 - 클래스의 상속 ... 110 실습 : 클래스를 상속해서 하위 클래스 생성 ... 111 (6) 상속 관계에서 같은 이름의 메소드 재정의 - 메소드 오버라이딩(overriding) ... 116 실습 : 상속 관계에서 같은 이름의 메소드 재정의 ... 116 (7) 슈퍼 클래스의 메소드를 호출해서 사용 ... 120 실습 : apply() 메소드를 사용해서 슈퍼 클래스의 메소드 호출 ... 120 (8) 추상 클래스를 상속받는 서브 클래스의 구현 ... 124 실습 : 추상 클래스의 추상 메소드를 오버라이딩 ... 125 (9) DOM 트리 객체의 태그를 생성 및 변경 ... 132 실습 : DOM 트리 객체를 사용해서 태그 노드의 추가와 제거 ... 132 (10) 사용자의 동작(마우스 이벤트)에 의해 페이지 스타일 변경 ... 141 실습 : 사용자의 동작으로 페이지의 스타일시트 변경 ... 142 (11) 키보드에서 입력받아(키보드 이벤트에 의한) 페이지의 스타일 변경하기 ... 149 실습 : 키보드로부터 입력받아 페이지의 스타일 변경하기 ... 150 Section 3 활용 예제 - 콘텐츠의 위치 이동하기 ... 158 실습 : 콘텐츠를 임의의 위치로 이동 ... 158 학습정리 ... 166 PART 02 XMLHttpRequest(XHR) 객체를 사용한 서버 연동 Chapter 04 XMLHttpRequest(XHR) 객체 ... 168 Section 1 XMLHttpRequest(XHR) 객체의 개요 ... 168 (1) 개요 ... 168 (2) XMLHttpRequest(XHR) 객체 생성 ... 169 Section 2 XMLHttpRequest(XHR) 객체의 메소드와 프로퍼티 ... 171 (1) XMLHttpRequest(XHR) 객체의 메소드 ... 171 (2) XMLHttpRequest(XHR) 객체의 프로퍼티 ... 174 Section 3 XMLHttpRequest(XHR) 객체를 사용한 서버에 요청 보내기 ... 176 (1) XMLHttpRequest 객체를 사용한 서버와 클라이언트의 통신 구조 ... 176 (2) HTTP 메소드 ... 178 (3) XMLHttpRequest 객체를 사용한 Ajax 프로그래밍의 이해 ... 179 실습 : ch04 폴더 작성 ... 179 실습 : IFRAME을 사용한 비동기적 통신 ... 180 실습 : XMLHttpRequest 객체를 사용한 비동기 통신 ... 183 학습정리 ... 188 Chapter 05 서버와의 연동 ... 192 Section 1 GET 방식과 POST 방식으로 서버에 요청 전송 ... 193 (1) GET 방식으로 요청 보내기 ... 193 실습 : ch05 폴더 작성 ... 196 실습 : GET 방식으로 요청을 보내는 프로그램 ... 197 실습 : 환경 변수 CLASSPATH에 servlet-api.jar 추가 ... 203 실습 : GET 방식으로 요청 파라미터를 보내는 프로그램 ... 204 (2) POST 방식으로 요청 보내기 ... 214 실습 : POST 방식으로 요청을 보내는 프로그램 ... 217 실습 : POST 방식으로 요청 파라미터를 보내는 프로그램 ... 223 Section 2 서버로부터의 응답결과 처리 ... 234 (1) 응답결과를 문자열로 처리 ... 234 (2) 응답결과를 XML로 처리 ... 235 실습 : 서버의 응답결과를 XML 문서 객체로 받아서 처리 ... 240 Section 3 JSON(JavaScript Object Notation) ... 247 (1) JSON(JavaScript Object Notation)의 개요 ... 247 (2) JSON 문서 처리 방식 ... 249 실습 : JSON 문서를 읽어서 처리 ... 249 Section 4 이클립스에 GWT를 설치해서 Ajax 개발환경 설정 ... 254 (1) 이클립스 및 WTP 설치 ... 255 (2) GWT(Google Web Toolkit)와 Googlipase 설치 ... 265 (3) Ajax 프로젝트를 작성 ... 270 학습정리 ... 291 Chapter 06 Ajax를 적용한 기본적인 기법들 ... 296 Section 1 자동갱신 페이지 구현 1 ... 296 실습 : GWT를 사용한 자동 갱신페이지 구현 ... 296 실습 : [ajaxTest2] 프로젝트에 [ch06] 폴더 추가 ... 303 실습 : 직접 자바로 로직을 기술해서 자동 갱신페이지 구현 ... 303 Section 2 선택에 의해 변경되는 동적 리스트 구현 ... 315 실습 : 항목을 선택하면 해당 항목의 하위 항목만 동적으로 리스트에 표시 ... 315 Section 3 진행막대(Progress bar) 구현 ... 324 실습 : 사이트에 작업의 진행막대 표시 ... 325 Section 4 자동 갱신페이지 구현 2 - 페이지의 일부분만 갱신 구현 ... 337 실습 : 페이지의 일부분만 갱신 구현 ... 337 Section 5 해당 항목의 설명 부분 구현 ... 349 실습 : 팝업 영역에 해당 항목의 내용 표시 ... 350 Section 6 검색어의 자동 완성 기능 구현 ... 362 실습 : 검색어의 자동 완성 기능을 제공하는 목록 구현 ... 362 학습정리 ... 374 PART 03 Ajax와 DB의 연동을 통한 어플리케이션 구축 Chapter 07 데이터베이스 ... 376 Section 1 데이터베이스의 개요 및 설치 ... 376 (1) 개요 ... 376 (2) 데이터베이스 설치 ... 377 실습 : MySQL 설치(http://dev.mysql.com/downloads/) ... 377 Section 2 SQL 쿼리의 개요 ... 395 (1) SQL 쿼리의 개요 ... 395 실습 : CREATE문을 사용해서 테이블을 생성 ... 397 실습 : Drop문을 사용해서 테이블을 제거 ... 400 실습 : INSERT문을 사용한 테이블에 레코드 추가 ... 402 실습 : SELECT문을 사용한 테이블의 레코드 검색(조회) ... 404 실습 : UPDATE문을 사용한 테이블에 저장되어 있는 레코드 수정 ... 406 실습 : DELETE문을 사용한 테이블에 저장되어 있는 레코드 삭제 ... 407 Section 3 JDBC를 사용한 JSP와 데이터베이스의 연동 ... 409 (1) JDBC(Java Database Connectivity) ... 409 (2) JDBC를 사용한 프로그래밍과 데이터베이스의 연동 ... 410 실습 : 이클립스의 프로젝트에 JDBC를 사용할 수 있도록 외부 JAR 추가 ... 418 실습 : ch07 폴더 작성 ... 423 실습 : JDBC를 사용한 자바계열 프로그래밍과 데이터베이스 연동 예제 ... 424 Section 4 자카르타 DBCP API를 이용한 커넥션 풀 사용 ... 426 (1) 커넥션 풀(Connection Pool)의 개요 ... 426 (2) 자카르타(Jakarta) DBCP API를 이용한 커넥션 풀 ... 428 실습 : 이클립스의 프로젝트로 커넥션 풀 관련 3개의 jar 파일 가져오기 ... 431 실습 : server.xml에 DBCP에 관한 정보 설정 ... 435 실습 : 이클립스에서 [ajaxTest2]-[Web Contents]-[WEB-INF] 폴더 안에 있는 web. xml 파일에 JNDI 리소스 사용 설정 ... 439 실습 : JSP 페이지에서 DBCP API 커넥션 풀 사용 예제 ... 441 Section 5 이클립스에 [Database Explorer]뷰를 사용한 데이터베이스의 직접 제어 ... 443 (1) 데이터베이스 서버와 JDBC 드라이버 ... 445 (2) [Database Explorer] 뷰에서 데이터베이스 접속 ... 445 실습 : [Database Explorer] 뷰에서 데이터베이스 접속하기 ... 446 (3) [SQL Scrapbook Page]와 [Data Output] 뷰 ... 448 실습 : [SQL Scrapbook Page]을 작성해 보자 ... 449 학습정리 ... 452 Chapter 08 데이터베이스를 연동한 Ajax 적용 기법 ... 456 Section 1 데이터베이스와 연동한 자동 갱신페이지 구현 1 ... 456 실습 : [ajaxTest2] 프로젝트에 [ch08] 폴더 추가 ... 456 실습 : 뉴스목록 자동 갱신페이지 구현 ... 457 실습1 : newsList 테이블 생성 및 레코드 추가 ... 459 실습2 : 데이터베이스와 연동하는 자바빈 작성 ... 462 실습3 : Ajax의 기능을 사용하기 위한 관련 파일의 작성 ... 471 Section 2 데이터베이스와 연동하여 선택에 의해 변경되는 동적 리스트 구현 ... 477 실습 : 선택 항목의 하위 항목만 동적으로 리스트에 표시 ... 477 실습1 : addressList 테이블 생성과 레코드 추가 ... 478 실습2 : 데이터베이스와 연동하는 자바빈 작성 ... 481 실습3 : Ajax의 기능을 사용하기 위한 관련 파일의 작성 ... 487 Section 3 데이터베이스와 연동한 자동 갱신페이지 구현 2 ... 493 실습 : 전체 페이지에서 사용자 인증 부분만 갱신해서 표시하는 페이지 ... 493 실습1 : member 테이블 생성 및 레코드 추가 ... 495 실습2 : 데이터베이스와 연동하는 자바빈 작성 ... 497 실습3 : Ajax의 기능을 사용하기 위한 관련 파일의 작성 ... 504 Section 4 데이터베이스와 연동하여 해당 항목의 설명 부분 구현 ... 515 실습 : 목록의 제목에 마우스 포인트 위치 시 툴팁에 해당 항목의 내용 표시 ... 515 실습1 : pictureList 테이블 생성 및 레코드 추가 ... 517 실습2 : 데이터베이스와 연동하는 자바빈 작성 ... 520 실습3 : Ajax의 기능을 사용하기 위한 관련 파일의 작성 ... 526 Section 5 데이터베이스와 연동한 검색어의 자동 완성 기능 구현 ... 532 실습 : 검색어의 자동 완성 기능을 제공하는 목록 구현 ... 532 실습1 : searchWord 테이블 생성 및 레코드 추가 ... 534 실습2 : 데이터베이스와 연동하는 자바빈 작성 ... 536 실습3 : Ajax의 기능을 사용하기 위한 관련 파일의 작성 ... 541 학습정리 ... 549 Chapter 09 웹 어플리케이션에서 활용되는 Ajax 기법 ... 550 실습 : [ajaxTest2] 프로젝트에 [ch09] 폴더 추가 ... 550 Section 1 뉴스목록의 표시 및 뉴스에 의견달기 시스템 ... 551 (1) newsList 테이블에 필드 추가 및 레코드 수정 ... 553 실습 : newsList 테이블에 필드 추가 및 레코드 수정 ... 553 (2) 데이터베이스와 연동하는 자바빈 작성 ... 555 (3) Ajax의 기능을 사용하기 위한 관련 파일의 작성 ... 571 Section 2 회원관리 시스템(인증된 회원을 위한 서비스 시스템) ... 599 (1) member 테이블에 필드 추가, 레코드 수정과 clubList 테이블의 생성, 레코드 추가와 클럽에 가입한 회원을 관리하기 위한 테이블을 생성 ... 601 실습 : member 테이블에 필드 추가 및 레코드 수정 ... 601 (2) 데이터베이스와 연동하는 자바빈 작성 ... 608 (3) Ajax의 기능을 사용하기 위한 관련 파일의 작성 ... 624 부록 : 작업 결과를 메인 페이지로 연결 프로그래밍 유틸리티 Appendix A : 실시간 검색어, 회원인증, 뉴스리스트 표시를 메인페이지로 연결 ... 660 Appendix B : Firefox의 추가 기능을 사용한 HTML Validator(HTML 검증기) ... 670 Appendix C : JSLint를 사용한 자바스크립트 문법 검사 ... 677 Appendix D : 테스트 툴인 JsUnit로 자바스크립트 테스트 ... 679