자바 웹 개발 워크북 – 개발환경

독서평

제가 주로 .net 언어를 사용하여 개발하였고 실무로 web 개발은 오래되다 보니 java를 사용한 web 개발 트렌드를 다시 공부할 필요가 있었습니다.
때마침 프리렉에서 ‘자바 웹 개발 워크북’이 출간되었기에 최근 기술에 대해 공부할 겸 읽어 보았습니다.

책 내용은 웹 어플리케이션을 만들기 위한 초기 기술에서 부터 최근의 기술까지 실무에서 필요한 부분들만 정리해 놓았습니다. 저같은 경우에는 한꺼번에 다양한 기술을 습득할 시간적 여유가 없기 때문에, 실무에서 사용할 부분들만 정리된 책을 원했는데 이러한 부분이 저에게는 잘 맞아떨어진 것 같습니다.

또한 프리렉에서 동영상 강의를 제공하며 책에 없는 부분이나 추가되는 기술 사항에 대해 차차 강의할 예정이라고 하네요.

제 1장 웹 애플리케이션의 이해

1.1 데스크톱 애플리케이션
1.1.1 데스크톱 애플리케이션 실습
1.1.2 데스크톱 애플리케이션의 문제점
1.2 클라이언트·서버 애플리케이션
1.2.1 계산기 서버 실행
1.2.2 계산기 클라이언트 실행
1.2.3 계산기 서버의 콘솔창 내용 확인
1.2.4 클라이언트·서버 구조의 장점
1.2.5 문제점과 개선방안
1.3 다중 클라이언트의 요청 처리
1.3.1 멀티 스레드 적용 실습
1.3.2 문제점과 개선방안
1.4 클라이언트·서버 아키텍처의 진화
1.4.1 전통적인 클라이언트·서버 아키텍처
1.4.2 개선된 클라이언트·서버 아키텍처
1.5 웹 애플리케이션 아키텍처의 특징
1.5.1 웹 애플리케이션 실습
1.5.2 웹 애플리케이션의 특징
1.5.3 문제점과 개선방안
1.6 정리

제 2장 웹 프로그래밍 기초 다지기

2.1 HTTP 프로토콜의 이해
2.1.1 HTTP 모니터링
2.1.2 HTTP 프록시 실행
2.1.3 HTTP 요청
2.1.4 HTTP 응답
2.1.5 HTTP 클라이언트 만들기
2.1.6 콘솔창의 출력 크기를 늘리거나 제한을 없애기
2.2 GET 요청
2.2.1 웹 애플리케이션 프로젝트 생성, 배치, 실행
2.2.2 GET 요청 1 – 웹 브라우저 주소창에 URL을 입력하는 경우
2.2.3 GET 요청 2 – 링크를 클릭하는 경우
2.2.4 GET 요청 3 – 입력폼의 method 속성값이 get인 경우
2.2.5 GET 요청의 데이터 전달 형식
2.2.6 GET 요청의 쓰임새
2.2.7 문제점과 개선방안
2.3 POST 요청
2.3.1 POST 요청의 장점 – 입력값을 URL에 노출하지 않는다.
2.3.2 POST 요청의 HTTP 프로토콜 확인
2.3.3 POST 요청의 단점 – 요청 결과를 공유할 수 없다.
2.3.4 문제점과 개선방안
2.4 파일 업로드
2.4.1 파일 업로드를 위한 <form> 태그 설정
2.4.2 멀티파트 방식의 POST 요청 프로토콜 분석
2.5 정리

제 3장 서블릿 프로그래밍

3.1 CGI 프로그램과 서블릿
3.1.1 CGI의 이해
3.1.2 서블릿 Servlet
3.2 서블릿, JSP vs. Java EE vs. WAS
3.2.1 Java EE 기술들
3.2.2 WAS의 이해
3.3 웹 프로젝트 준비
3.3.1 웹 프로젝트 생성
3.3.2 웹 프로젝트 폴더 구조
3.4 서블릿 만들기
3.4.1 서블릿 작성
3.4.2 javax.servlet.Servlet 인터페이스
3.4.3 서블릿 배치 정보 작성
3.4.4 서블릿 실행
3.4.5 URL과 서블릿 매핑
3.4.6 서블릿 구동 절차
3.4.7 웰컴 파일들
3.5 웹 애플리케이션 배치
3.5.1 Eclipse를 통한 자동 배치
3.5.2 톰캣 실행 환경의 임시 배치 폴더
3.5.3 운영 서버에 배치하기
3.6 GenericServlet의 사용
3.6.1 GenericServlet이 없던 시절
3.6.2 GenericServlet의 용도
3.6.3 계산기 서블릿 작성
3.6.4 ServletRequest
3.6.5 ServletResponse
3.6.6 CalculatorServlet 배치 및 테스트
3.6.7 GET 요청으로 넘어온 매개변수 값의 인코딩 설정
3.6.8 @WebServlet 애노테이션을 이용한 서블릿 배치 정보 설정
3.6.9 @WebServlet 애노테이션의 주요 속성
3.7 정리

제 4장 서블릿과 JDBC

4.1 데이터베이스에서 데이터 가져오기
4.1.1 회원 목록 조회 구현
4.1.2 서블릿 배치 정보 설정
4.1.3 ‘회원 목록 조회’ 서블릿 테스트
4.2 HttpServlet으로 GET 요청 다루기
4.2.1 회원 목록 화면에 ‘신규 회원’ 링크 추가
4.3 HttpServlet으로 POST 요청 다루기
4.3.1 doPost() 오버라이딩
4.3.2 회원 등록 테스트
4.4 요청 매개변수의 한글 깨짐 처리
4.4.1 한글 깨짐 현상
4.4.2 한글 입력값이 깨진 이유
4.4.3 한글 깨짐 해결책
4.4.4 GET 요청 매개변수의 한글 깨짐 해결책
4.5 리프래시
4.5.1 자동으로 회원 목록을 출력하기
4.6 리다이렉트
4.6.1 리다이렉트 실습하기
4.7 서블릿 초기화 매개변수
4.7.1 회원 정보 조회와 변경
4.7.2 회원 목록 페이지에 상세 정보 링크 추가
4.7.3 DD파일에 서블릿 초기화 매개변수 설정
4.7.4 회원 상세 정보 출력하는 서블릿 작성
4.7.5 회원 정보 변경하기
4.7.6 애노테이션으로 서블릿 초기화 매개변수 설정
4.8 컨텍스트 초기화 매개변수
4.8.1 컨텍스트 초기화 매개변수의 선언
4.8.2 컨텍스트 초기화 매개변수의 사용
4.9 필터 사용하기
4.9.1 필터
4.9.2 필터 만들기
4.9.3 필터의 구동
4.9.4 필터의 배치
4.10 정리

제 5장 MVC 아키텍처

5.1 MVC 이해하기
5.1.1 올인원 All-in-one 방식과 문제점
5.1.2글로벌 환경과 MVC 아키텍처
5.1.3 MVC 이점
5.1.4 MVC 구동 원리
5.2 뷰 컴포넌트와 JSP
5.2.1 JSP를 사용하는 이유
5.2.2 JSP 구동 원리
5.2.3 JSP의 구동 과정 확인
5.2.4 HttpJspPage 인터페이스
5.2.5 JSP 객체의 실체 분석
5.2.6 HttpJspBase 클래스의 소스
5.2.7 JSP 프리컴파일
5.3 JSP의 주요 구성 요소
5.3.1 JSP로 만드는 계산기 실습
5.3.2 템플릿 데이터
5.3.3 JSP 전용 태그 – 지시자
5.3.4 JSP 전용 태그 – 스크립트릿
5.3.5 JSP 내장 객체
5.3.6 JSP 전용 태그 – 선언문
5.3.7 JSP 전용 태그 – 표현식
5.4 서블릿에서 뷰 분리하기
5.4.1 값 객체(VO) = 데이터 수송 객체(DTO)
5.4.2 뷰 분리하기 실습
5.4.3 값 객체 생성
5.4.4 서블릿에서 뷰 관련 코드 제거
5.4.5 뷰 컴포넌트 만들기
5.4.6 회원 목록 테스트
5.5 포워딩과 인클루딩
5.5.1 포워딩과 인클루딩 실습
5.5.2 포워딩
5.2.3 인클루딩
5.6 데이터 보관소
5.6.1 ServletContext의 활용
5.6.2 HttpSession의 활용 – 로그인
5.6.3 HttpSession의 활용 – 로그인 정보 사용
5.6.4 HttpSession의 활용 – 로그아웃
5.6.5 ServletRequest의 활용
5.6.6 JspContext의 활용
5.7 JSP 액션 태그의 사용
5.7.1 JSP 액션 태그 – <jsp:useBean>
5.7.2 <jsp:useBean>의 활용
5.7.3 JSP 액션 태그의 존재 의의
5.8 EL 사용하기
5.8.1 EL 표기법
5.8.2 JSP에서 제공하는 EL 기본 객체
5.8.3 리터럴 표현식
5.8.4 값 표현식
5.8.5 연산자
5.8.6 예약 키워드
5.8.7 EL 활용 – 회원 정보 페이지
5.9 JSTL 사용하기
5.9.1 JSTL 라이브러리 준비
5.9.2 JSTL 주요 태그의 사용법
5.9.3 JSTL 활용 – 회원 목록 페이지에서 자바 코드 없애기
5.10 DAO 만들기
5.10.1 DAO 사용하기
5.10.2 DAO 생성
5.10.3 서블릿에서 DAO 사용하기
5.11 ServletContextListener와 객체 공유
5.11.1 ServletContextListener의 활용
5.11.2 리스너 ServletContextListener 만들기
5.11.3 기존의 서블릿 변경하기
5.11.4 AppInitServlet 제거
5.12 DB 커넥션풀
5.12.1 DB 커넥션풀
5.12.2 DB 커넥션풀 만들기
5.12.3 MemberDAO에 DB 커넥션풀 적용하기
5.12.4 ContextLoaderListener에서 DBConnectionPool 생성 및 DAO에 주입
5.13 DataSource와 JNDI
5.13.1 javax.sql 확장 패키지
5.13.2 DataSource
5.13.3 DataSource의 적용
5.13.4 서버에서 제공하는 DataSource 사용하기
5.14정리

제 6장 미니 MVC 프레임워크 만들기

6.1 프런트 컨트롤러의 도입
6.1.1 프런트 컨트롤러 패턴
6.1.2 프런트 컨트롤러를 통해 회원 목록 출력
6.1.3 프런트 컨트롤러 만들기
6.1.4 MemberListServlet을 페이지 컨트롤러로 만들기
6.1.5 프런트 컨트롤러를 통한 회원 목록 페이지 요청
6.1.6 MemberAddServlet을 페이지 컨트롤러로 만들기
6.1.7 회원 등록 테스트
6.2 페이지 컨트롤러의 진화
6.2.1 프런트 컨트롤러와 페이지 컨트롤러의 호출 규칙 정의
6.2.2 호출 규칙 정의
6.2.3 페이지 컨트롤러를 위한 인터페이스 정의
6.2.4 페이지 컨트롤러 MemberListServlet을 일반 클래스로 전환
6.2.5 프런트 컨트롤러 변경
6.2.6 회원 등록 페이지 컨트롤러에 Controller 규칙 적용하기
6.2.7 회원 등록 요청을 처리하기 위해 DispatcherServlet 변경
6.2.8 회원 등록 페이지의 실행 테스트
6.3 DI를 이용한 빈 의존성 관리
6.3.1 의존 객체의 관리
6.3.2 의존 객체를 외부에서 주입
6.3.3 MemberDao와 DataSource
6.3.4 MemberListController에 MemberDao 주입
6.3.5 페이지 컨트롤러 객체들을 준비
6.3.6 프런트 컨트롤러의 변경
6.3.7 인터페이스를 활용하여 공급처를 다변화 하자
6.3.8 MemberDao 인터페이스 정의
6.4 리플랙션 API를 이용하여 프런트 컨트롤러 개선하기
6.4.1 신규 회원 정보 추가 자동화
6.4.2 DataBinding 인터페이스 정의
6.4.3 페이지 컨트롤러의 DataBinding 구현
6.4.4 프런트 컨트롤러의 변경
6.4.5 ServletRequestDataBinder 클래스 생성
6.4.6 리플랙션 API
6.5 프로퍼티를 이용한 객체 관리
6.5.1 실습 시나리오
6.5.2 프로퍼티 파일 작성
6.5.3 ApplicationContext 클래스
6.5.4 ContextLoaderListener 변경
6.5.5 web.xml 파일에 프로퍼티 경로 정보 설정
6.5.6 DispatcherServlet 변경
6.6 애노테이션을 이용한 객체 관리
6.6.1 애노테이션 활용
6.6.2 애노테이션 정의
6.6.3 애노테이션 적용
6.6.4 프로퍼티 파일 변경
6.6.5 ApplicationContext 변경
6.6.6 Reflections 라이브러리 준비
6.7 실력 향상 훈련
6.7.1 데이터베이스 모델
6.7.2 프로젝트 관리 시스템
6.7.3 훈련 1 프로젝트 목록 페이지 구현
6.7.4 훈련 2 프로젝트 등록 구현
6.7.5 훈련 3 프로젝트 변경 구현
6.7.6 훈련 4 프로젝트 삭제 구현
6.7.7 메뉴의 추가
6.8 정리

제 7장 퍼시스턴스 프레임워크의 도입

7.1 mybatis 소개
7.1.1 mybatis 사용하기
7.1.2 mybatis 사용 준비
7.2 mybatis 적용
7.2.1 mybatis 구동하기
7.2.2 mybatis 프레임워크의 핵심 컴포넌트
7.2.3 DAO에서 SqlSessionFactory 사용
7.2.4 SQL 맵퍼 파일 작성
7.2.5 ApplicationContext 변경
7.2.6 SqlSessionFactory 객체 준비
7.2.7 mybatis 설정 파일 준비
7.2.8 db.properties 파일 작성
7.3 SQL 맵퍼 파일
7.3.1 SQL 맵퍼 파일 작성
7.3.2 mybatis의 SELECT 결과 캐싱
7.3.3 SQL 문의 입력 매개변수 처리
7.4 mybatis 설정 파일
7.5 로그 출력 켜기
7.5.1 mybatis 설정 파일에 로그 설정 추가
7.5.2 로그 출력 테스트
7.6 동적 SQL의 사용
7.6.1 동적 SQL 엘리먼트
7.6.2 프로젝트 목록 페이지에 정렬 링크 추가
7.6.3 프로젝트 목록 컨트롤러 변경
7.6.4 ProjectDao 인터페이스 변경
7.6.5 <set> 엘리먼트의 활용
7.6.6 MySqlProjectDao 클래스 변경
7.6.7 동적으로 생성된 UPDATE 문 확인
7.7 실력 향상 훈련
7.7.1 훈련. 회원 관리에 mybatis 적용
7.8 정리

제 8장 스프링 IoC 컨테이너

8.1 스프링 IoC 컨테이너 사용 준비
8.1.1 의존성 주입(DI)과 역제어(IoC)
8.1.2 Gradle 프로젝트 준비
8.1.3 Gradle 프로젝트를 웹 프로젝트로 만들기
8.1.4 스프링 프레임워크 관련 라이브러리 가져오기
8.1.5 실습 프로젝트 정리
8.1.6 Gradle 빌드
8.2 Gradle 빌드 파일 분석
8.2.1 Gradle 플러그인이란?
8.2.2 Gradle Java 플러그인
8.2.3 jar 작업과 제어 속성 – jar {}
8.2.4 의존 라이브러리를 가져올 저장소 설정 – repositories {}
8.2.5 프로젝트에서 사용할 의존 라이브러리 지정 – dependencies {}
8.2.6 테스트 정보 설정 – test {}
8.2.7 아카이브 파일(.jar) 배포 – uploadArchives {}
8.2.8 Gradle Eclipse 플러그인
8.3 XML 기반 빈 관리 컨테이너
8.3.1 ApplicationContext 인터페이스
8.3.2 스프링 빈 컨테이너 ClassPathXmlApplicationContext 사용
8.3.3 name 속성으로 빈 이름 지정하기
8.3.4 익명 빈 선언
8.4 생성자와 프로퍼티 설정
8.4.1 호출할 생성자 설정
8.4.2 프로퍼티 설정
8.4.3 <bean>의 속성을 이용하여 생성자 및 프로퍼티 설정하기
8.5 의존 객체 주입
8.5.1 의존 객체 설정하기
8.5.2 개별 인스턴스 주입하기
8.6 컬렉션 값 주입
8.6.1 배열 프로퍼티의 값 주입
8.6.2 Map과 Properties 값 주입
8.7 팩토리 메서드와 팩토리 빈
8.7.1 스태틱 팩토리 메서드를 이용한 간접 객체 생성
8.7.2 인스턴스 팩토리 메서드를 이용한 간접 객체 생성
8.7.3 스프링 규칙에 따라서 팩토리 빈 만들기
8.8 빈의 범위 설정
8.8.1 싱글톤과 프로토타입
8.9 날짜 값 주입
8.9.1 SimpleDateFormat 클래스와 인스턴스 팩토리 메서드 활용
8.9.2 커스텀 프로퍼티 에디터 활용
8.10 애노테이션을 이용한 의존 객체 자동 주입
8.10.1 @Autowired 적용
8.10.2 @Autowired의 required 속성
8.10.3 @Qualifier로 주입할 객체를 지정하기
8.10.4 @Autowired + @Qualifier = @Resource
8.11 빈 자동 등록
8.11.1 @Component가 붙은 클래스를 자동으로 찾기
8.12 Gradle 적용
8.12.1 Gradle 적용 준비
8.12.2 Gradle 설정에 의존 라이브러리 추가
8.12.3 Gradle 빌드
8.12.4 톰캣 서버에 웹 애플리케이션 배치 및 실행
8.13 스프링 IoC 컨테이너 적용
8.13.1 mybatis 관련 의존 라이브러리 추가
8.13.2 Gradle 빌드
8.14 정리

부록 01 신입 개발자 오리엔테이션

1.1 메인 프레임의 시대
1.2 클라이언트/서버의 시대
1.3 웹의 시대
1.4 N-스크린과 클라우드의 시대

부록 02 JDBC와 데이터베이스

2.1 데이터베이스가 없던 그 시절
2.2 데이터베이스의 등장
2.3 데이터베이스의 사용
2.4 ODBC로 개발자에게 자유를
2.5 JDBC Type 1 – ODBC와 연결
2.6 JDBC Type 2 – DBMS 벤더 API 호출
2.7 JDBC Type 3 – 미들웨어 서버를 경유
2.8 JDBC Type 4 – DBMS 프로토콜로 직접 연결

부록 03 MySQL DBMS 설치

3.1 MySQL 서버 설치
3.1.1 설치 파일 내려받기
3.1.2 MySQL 서버 설치
3.1.3 스키마 생성
3.1.4 study 사용자로 로그인
3.1.5 테이블 생성 테스트

부록 04 개발 환경 구축

4.1 JDK 설치
4.1.1 JDK 내려받기
4.1.2 JDK 설치 실행
4.1.3 JDK 경로 설정
4.1.4 환경 변수 등록 확인
4.2 이클립스 설치
4.2.1 이클립스 내려받기
4.2.2 설치 파일 압축 풀기 및 실행
4.2.3 기본 문자 집합을 UTF-8로 설정하기
4.3 톰캣 서버 설치
4.3.1 톰캣 서버 내려받기와 설치
4.3.2 톰캐 서버의 실행과 접속 테스트
4.3.3 톰캣 서버의 폴더 구조
4.3.4 이클립스에 톰캣 서버 정보 등록
4.3.5 톰캣 실행 환경 준비
4.4깃허브에서 실습 소스 가져오기
4.4.1 이클립스에 깃허브 저장소 등록
4.4.2 프로젝트 임포트 하기
4.4.3 웹 애플리케이션 배치 및 실행 테스트
4.4.4 톰캣 서버의 포트 번호 바꾸기

부록 05 Gradle과 Groovy

5.1 Gradle
5.1.1 Groovy 이클립스 플러그인 설치
5.1.2 Gradle 이클립스 플러그인 설치
5.2 Groovy
5.2.1 Groovy 실행 원리
5.3 Groovy 문법 요약

 

개발환경 설정 캡쳐

CC BY-NC-ND 2.0 KR

이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-변경금지 2.0 대한민국 라이선스에 따라 이용할 수 있습니다. 크리에이티브 커먼즈 라이선스

저작권과 관련된 파일요청 및 작업요청을 받지 않습니다.

댓글 남기기