스트럿츠 2.3 프로그래밍 (자바 웹 애플리케이션 개발을 위한 오픈소스 프레임워크)

스트럿츠 2.3 프로그래밍 (자바 웹 애플리케이션 개발을 위한 오픈소스 프레임워크)

$66.10
Description
이 책은 스트럿츠2가 추구하는 직관성과 간결함의 철학을 따른다. 웹 애플리케이션을 개발할 때 꼭 알아야 할 가장 기본적인 웹의 작동 원리를 설명하며, 초보 웹 개발자가 프레임워크의 윤곽을 어렵지 않게 파악하도록 도와준다. 이번 개정판에서는 스트럿츠 2.3버전에 맞춰 내용을 개정했으며, 최신 트렌드를 위한 Ajax, JSON, RESTful 웹 서비스에 대한 내용을 반영했다. 표준 기반의 웹 애플리케이션 개발을 위한 예제를 새롭게 구성했으며, 고급 웹 개발을 위해 스트럿츠2의 아키텍처에 대한 자세한 설명과 현 실무에서 가장 많이 사용되는 데이터베이스 프로그래밍에 대한 내용을 보충했다.
저자

현철주

저자 현철주는 경희대학교 문리대 물리학과를 졸업했다. 전산 전공자가 아니지만 컴퓨터로 뭔가 재미있는 일을 만들고 싶었던 열망이 현재까지 개발자로 활동하고 있게 만들고 있다. 나에겐 전산이란 것은 늘 좋은 취미였고, 심지어 95년도 당시 대우그룹의 자회사인 대우정보시스템에 입사하며 전산이 주업무가 되었지만, 매우 오픈 마인드를 가지고 있던 팀장 덕분에 일을 일로서가 아니고 프로그래밍을 즐길 수 있었다. 앞으로의 컴퓨팅에서도 기계 냄새가 아닌 따뜻한 사람 냄새를 맡을 수 있는 뭔가 재미나고 유용한 일들을 해낼 수 있을 거라는 믿음을 갖는 한 사람으로 남고 싶다. 대학 재학 중 카이스트 부설 시스템 공학센터(SERI)의 교육과정을 이수했다. 졸업 후 비트 전산 교육센터에서 윈도우즈 과정을 수료했고, 이후 대우정보시스템에서 네트워크 기반 문자인식 이미지 처리 시스템을 개발했으며, 문서 자동 입력 시스템 등 금융, 공공기관, 자동차 회사 등의 프로젝트를 수행했다. 또한 EDMS 솔루션을 개발했고, 자바 기반의 대학 종합 정보화 사업의 아키텍트 및 물류 시스템 PM 및 개발 업무에서 스트럿츠 기반의 자체 프레임워크를 이용해 시스템 개발 작업을 수행하면서 오픈소스에 관심을 갖기 시작했다. 2007년 아첸 소프트웨어를 창업하여 1년간 월간 마이크로소프트웨어에 스트럿츠2 관련 기사를 기고했으며, 다수의 비즈니스 시스템 개발 및 컨설팅과 함께 아첸 자바 커뮤니티(artszen) 사이트를 운영하고 있다.2011년부터 지식경제부와 정보통신산업진흥원(NIPA)이 주관하는 소프트웨어 산업의 미래를 이끌어갈 국가 인재양성 프로그램인 SW Maestro의 멘토로 활동중이며, 최근 모바일 개발 환경에서 자바 오픈소스 프레임워크를 보다 효율적으로 사용할 수 있는 연구를 계속하고 있다.

목차

1부_기본

1장 스트럿츠2란 무엇인가?
______1.1 스트럿츠2의 배경과 달라진 점
______1.2 스트럿츠2 들여다보기
______1.3 스트럿츠2의 핵심: 액션과 리절트
______1.4 스트럿츠2의 컨트롤러: 필터 디스패처
______1.5 웹 요청 처리에 대한 기본 지식___
______1.6 정리

2장 기본 예제를 통해 스트럿츠2와 친해지기
______2.1 문자열 출력
______2.2 문자열 목록 출력
______2.3 객체 출력
______2.4 객체 목록 출력
______2.5 날짜 출력
______2.6 정리

3장 다양한 태그 컴포넌트 다루기
______3.1 스트럿츠2 구성요소 미리보기
_________3.1.1 인터셉터 개요
_________3.1.2 인터셉터 스택이란?
_________3.1.3 리절트의 종류
_________3.1.4 환경설정의 개요
_________3.1.5 태그 라이브러리의 종류
______3.2 태그 사용을 위한 필수지식
_________3.2.1 액션, 인터셉터, 밸류 스택과 태그의 관계
_________3.2.2 비 문자열 속성
_________3.2.3 태그의 value 속성은 객체다!
_________3.2.4 표현식 언어의 표기법
_________3.2.5 OGNL이란?
______3.3 문자열 입출력
______3.4 문자열 상자 사용하기
______3.5 날짜 입출력 컴포넌트 사용하기
______3.6 태그를 이용한 페이지 링크
______3.7 체크박스 만들기
______3.8 셀렉트박스 만들기
______3.9 조건 처리 태그를 사용해 영화 순위목록 페이지 만들기
______3.10 태그를 이용해 분리된 리스트 합치기
______3.11 정리

2부_심화

4장 스트럿츠2 아키텍처

______4.1 스트럿츠2 아키텍처 개념도
______4.2 필터 디스패처의 역할
______4.3 액션 프록시 / 액션 인보케이션
_________4.3.1 액션 프록시와 액션 인보케이션의 관계
_________4.3.2 액션 인보케이션의 역할
______4.4 액션 컨텍스트
______4.5 액션 매퍼
_________4.5.1 기본 액션 매퍼
_________4.5.2 커스텀 액션 매퍼
_________4.5.3 레스트풀 액션 매퍼
_________4.5.4 레스트풀2 액션 매퍼
_________4.5.5 혼합 액션 매퍼
______4.6 인터셉터
_________4.6.1 인터셉터의 개념
_________4.6.2 인터셉터 인터페이스
_________4.6.3 인터셉터의 종류
_________4.6.4 인터셉터의 파라미터 오버라이딩
_________4.6.5 인터셉터와 필터의 차이
_________4.6.6 인터셉터의 기능별 분류
_________4.6.7 인터셉터 분석: 프리페어 인터셉터
______4.7 액션
_________4.7.1 액션의 개념
_________4.7.2 액션의 상관관계
_________4.7.3 액션 체인
_________4.7.4 액션의 다중 호출
______4.8 리절트
_________4.8.1 리절트의 개념
_________4.8.2 리절트 타입
_________4.8.3 프리 리절트 리스너
______4.9 정리

5장 스트럿츠2 환경설정
______5.1 환경설정 파일 개요
_________5.1.1 web.xml에 정의할 수 있는 내용
_________5.1.2 struts.xml 소개
_________5.1.3 struts.properties 소개
_________5.1.4 struts-default.xml 소개
_________5.1.5 velocity.properties 소개
______5.2 관리적인 요소의 환경설정
_________5.2.1 빈 설정
_________5.2.2 상수 설정
_________5.2.3 패키지 설정
_________5.2.4 네임스페이스 설정
_________5.2.5 인클루드 설정
______5.3 요청 처리 요소의 환경설정
_________5.3.1 인터셉터 설정
_________5.3.2 액션 설정
_________5.3.3 리절트 설정
_________5.3.4 와일드카드를 이용한 액션, 액션 메소드, 리절트 설정
______5.4 예외 처리 요소의 환경설정
______5.5 성능 튜닝
______5.6 애노테이션
_________5.6.1 액션 애노테이션
_________5.6.2 인터셉터 애노테이션
_________5.6.3 유효성 검사 애노테이션
_________5.6.4 타입 변환 애노테이션
______5.7 정리

6장 스트럿츠2 태그를 이용한 손쉬운 Ajax 구현
______6.1 Ajax의 개념과 스트럿츠2의 Ajax 구성
_________6.1.1 Ajax의 개념
______6.2 Ajax의 기능을 이용한 메뉴 만들기
______6.3 자동 요청 기능을 이용한 리얼타임 인기 검색어 출력
______6.4 탭 패널 컴포넌트를 이용한 세미나 목록과 일정
______6.5 트리 컴포넌트를 이용한 컴퓨터 부품 목록 출력
______6.6 정리

7장 파일 업로드/다운로드
______7.1 파일 업로드
_________7.1.1 아파치 커먼스 IO, FileUpload 컴포넌트 다운로드와 설치
_________7.1.2 파일 업로드 크기 설정
_________7.1.3 파일 업로드를 위한 액션 클래스와 태그 구성
_________7.1.4 단일 파일 업로드 예제 만들기
_________7.1.5 배열을 이용한 다중 파일 업로드 예제 만들기
_________7.1.6 리스트를 이용한 다중 파일 업로드 예제 만들기
______7.2 파일 다운로드
_________7.2.1 다운로드 액션에서 사용하는 프로퍼티
_________7.2.2 struts.xml에서 다운로드 액션 정의하기
_________7.2.3 텍스트 파일을 스트림 형식으로 출력하는 예제 만들기
_________7.2.4 파일 다운로드 예제 만들기
______7.3 정리

8장 유효성 검사
______8.1 스트럿츠2의 유효성 검사
_________8.1.1 유효성 검사 규칙 정의
_________8.1.2 넌필드 유효성 검사자와 필드 유효성 검사자
_________8.1.3 유효성 검사의 단락
______8.2 예제로 배우는 유효성 검사
_________8.2.1 기본 유효성 검사를 이용한 퀴즈 예제 만들기
_________8.2.2 클라이언트 유효성 검사를 이용한 퀴즈 예제 만들기
_________8.2.3 필드 유효성 검사를 이용한 예제 만들기
_________8.2.4 넌필드 유효성 검사를 이용한 예제 만들기
______8.3 애노테이션을 이용한 유효성 검사
______8.4 스트럿츠2 유효성 검사자 요약
_________8.4.1 required 유효성 검사자
_________8.4.2 requiredString 유효성 검사자
_________8.4.3 int 유효성 검사자
_________8.4.4 double 유효성 검사자
_________8.4.5 date 유효성 검사자
_________8.4.6 expression 유효성 검사자
_________8.4.7 fieldexpression 유효성 검사자
_________8.4.8 email 유효성 검사자
_________8.4.9 url 유효성 검사자
_________8.4.10 visitor 유효성 검사자
_________8.4.11 conversion 유효성 검사자
_________8.4.12 stringlength 유효성 검사자
_________8.4.13 regex 유효성 검사자
______8.5 정리

3부_활용

9장 애플리케이션의 국제화

______9.1 국제화
_________9.1.1 애플리케이션의 국제화란?
_________9.1.2 Locale 클래스
______9.2 스트럿츠2의 리소스 번들
_________9.2.1 액션 리소스 번들
_________9.2.2 부모 클래스 리소스 번들
_________9.2.3 인터페이스 리소스 번들
_________9.2.4 패키지 리소스 번들
_________9.2.5 글로벌 리소스 번들
_________9.2.6 리소스 번들의 검색 순서
_________9.2.7 UTF-8 리소스 번들 사용하기
_________9.2.8 리소스 번들 활용
_________9.2.9 커스텀 리소스 번들
_________9.2.10 리소스 번들 포맷 사용하기
______9.3 정리

10장 스트럿츠2 플러그인
______10.1 사이트메쉬 플러그인을 이용한 페이지 레이아웃 적용
_________10.1.1 사이트메쉬 개요
_________10.1.2 사

출판사 서평

이 책은 스트럿츠2가 추구하는 직관성과 간결함의 철학을 따른다. 웹 애플리케이션을 개발할 때 꼭 알아야 할 가장 기본적인 웹의 작동 원리를 설명하며, 초보 웹 개발자가 프레임워크의 윤곽을 어렵지 않게 파악하도록 도와준다. 이번 개정판에서는 스트럿츠 2.3버전에 맞춰 내용을 개정했으며, 최신 트렌드를 위한 Ajax, JSON, RESTful 웹 서비스에 대한 내용을 반영했다. 표준 기반의 웹 애플리케이션 개발을 위한 예제를 새롭게 구성했으며, 고급 웹 개발을 위해 스트럿츠2의 아키텍처에 대한 자세한 설명과 현 실무에서 가장 많이 사용되는 데이터베이스 프로그래밍에 대한 내용을 보충했다.

결하지만 강한 심장을 가진 자바 웹 개발 프레임워크의 표준
- 직관적이고 진보적인 웹 애플리케이션 프레임워크
- 간편한 개발환경 구축, 수월한 개발, 뛰어난 확장성
- 모바일 환경과 친밀하게 연동할 수 있는 레스트풀 서비스 지원

자바 웹 애플리케이션 전문 개발 프레임워크인 스트럿츠2는 MVC 아키텍처 기반의 개발과 오픈소스 프레임워크의 정착을 이끌었다.
스트럿츠2의 목적은 직관적인 개발, 따라서 더욱 쉽고, 빠르고, 안정적인 웹 애플리케이션 개발을 하자는 것이다. 이를 위해 오픈 소스의 베스트 프랙티스를 주저함없이 받아들이는 오픈 마인드를 실현하고 있다. 스트럿츠2는 여전히 발전하고 있으며 최근 모바일 환경과 오픈 API 환경을 쉽게 지원할 수 있도록 레스트 서비스를 보강하고 있다. POJO 기반의 엔터프라이즈 서비스를 지원하는 애플리케이션을 쉽게 만들고 싶다면 스트럿츠2의 간결함을 철학으로 하는 아키텍처와 플러그인 형식으로 접목할 수 있는 다양한 오픈소스 프레임워크를 지원하는 특징과 자바 웹 개발 초보자라도 쉽게 접근할 수 있도록 최소화한 설정 기능은 더욱 큰 매력으로 다가올 것이다.

이 책은 개발환경 구축부터 스트럿츠2의 주요 아키텍처까지 충분한 설명을 하고 있으며, 많은 예제를 통해 스스로 깨달을 수 있도록 구성하였다. 이 책을 읽고 스트럿츠2만을 배우는 것이 아니라 웹 개발에 대한 기초를 닦을 수 있도록 힘썼다. 이번 개정판에서는 최신 트렌드를 위한 Ajax, JSON, RESTful 웹 서비스에 대한 내용을 반영했다. 표준 기반의 웹 애플리케이션 개발을 위한 예제를 새롭게 구성했고, 또한 고급 웹 개발을 위하여 스트럿츠2의 아키텍처에 대한 자세한 설명과 현 실무에서 가장 많이 사용되는 데이터베이스 프로그래밍에 대한 내용을 보충했다. 퍼시스턴스 레이어를 구성하는 방법, 순수 JDBC 프로그래밍뿐만 아니라 스프링과 아이바티스 프레임워크을 스트럿츠2에서 연동하는 방법을 소개하고 있어, 프로젝트 개발에 직접적인 도움을 줄 수 있는 내용을 포함하고 있다.

개정판에서 달라진 점
스트럿츠2가 2.1.x 버전에 이르러 적지 않은 변화를 맞이함에 따라, 초판에서 소개한 예제들이 제대로 실행되지 않는 경우가 발생했다. 이는 스트럿츠2를 새롭게 배우려는 분들과 이미 초판을 통해 스트럿츠2를 이용하는 분들에게 걸림돌이 됐다.

스트럿츠2의 새로운 버전에서 달라진 점과 2.0.x 버전에서 2.1.x 버전으로 업그레이드하는 방법의 전체적인 윤곽을 알아보려면, 부록 C ‘스트럿츠2의 버전 업데이트’에서 설명하고 있으니 꼭 읽어보길 바란다.

초판에서는 스트럿츠2에 직접적으로 관련이 없는 내용은 과감하게 생략했다. 그러나 개정판에서는 최대한 실무와 가까운 환경에서 스트럿츠2를 이용한 웹 애플리케이션 개발 방법을 함께 배울 수 있게 도움을 주고자 했다.

첫째, 새로운 버전의 기능을 문제없이 적용할 수 있도록 책 전반에 걸쳐 변경된 내용을 수정했다.

둘째, 초판에서 스트럿츠2의 기능을 배우고 스트럿츠2 태그의 사용법을 자연스럽게 알아갈 수 있도록 구성했던 예제들을 최대한 그대로 사용했지만, 화면을 구성할 때 표준 기반으로 작업할 수 있도록 EL과 JSTL을 사용해 화면을 구성하는 방법을 예제마다 별도로 소개한다. 웹 애플리케이션을 개발하는 사람이라면 EL과 JSTL 관련 지식이 꼭 필요하기 때문에 좀 더 체계적인 학습을 위해 부록에 EL과 JSTL 사용법을 추가해뒀으니 좋은 참고 자료가 되길 바란다.

셋째, 새롭게 추가된 여러 플러그인 중 유용한 것을 선별해 소개한다. 애노테이션을 이용해 설정을 최소화하는 방법과 응답을 JSON 형식으로 쉽게 변환할 수 있는 JSON 플러그인 등을 추가로 소개하고 있다.

네 번째 변화는 좀 더 활용적인 측면에 중점을 두었다. 실무에서 널리 사용하는 기술을 다뤄보고, 각 기술의 기본적인 개념을 이해할 수 있게 집약적인 자료를 소개하고 있다.

또한 스트럿츠2와 스프링 프레임워크의 연동을 위해 스프링 프레임워크를 사용하는 이유와 핵심 개념을 간략하게 다뤘다.

그리고 최근 모바일 웹이 핫 이슈가 되는 상황에서 레스트풀(RESTful) 웹 서비스의 사용이 매우 적절한 통신 방식으로 떠오르고 있다. 레스트풀 웹 서비스를 쉽게 이해할 수 있게 기본적인 개념을 소개하며, 스트럿츠2를 이용해 레스트풀 웹 서비스를 개발하는 방법을 설명한다.

웹 애플리케이션은 결국 동적인 데이터를 처리하는 것이 목적이므로, 가장 많이 사용하는 데이터베이스 액세스 방법을 기초적인 부분부터 차근히 소개하여 오픈 소스 프레임워크를 연동해 효율적으로 개발할 수 있게 한다. 서비스 계층과 데이터 액세스 계층의 설계 방법과 JDBC API를 이용한 서비스 계층과 데이터 액세스 계층 구성 방법, 그리고 아이바티스, 스프링 프레임워크를 함께 사용해 진보된 형식의 아키텍처를 이용한 각 계층의 구성 방법도 소개한다. SQL 매퍼 프레임워크인 아이바티스를 설명하고, 스프링을 이용한 선언적 트랜잭션 처리를 위한 AOP의 개념도 소개한다.

실무에 가까운 주제를 다루면 내용이 제법 무거워질 수 있기 때문에 최대한 간결함을 유지하고자 노력했고, 스트럿츠2뿐만 아니라 웹 애플리케이션을 개발할 때 필요한 개념을 익힐 수 있는 기회를 만들어보려 노력했다.

이 책에서 다루는 내용

■ 스트럿츠2 개발 환경 구축
■ 웹 개발 기본 개념
■ 스트럿츠2의 기본 핵심 개념: 액션, 리절트, 인터셉터
■ 표준 기반의 웹 개발을 위한 스트럿츠2 활용 방법 (예제 포함)
■ 스트럿츠2의 핵심 아키텍처
■ 스트럿츠2와 데이터베이스 연동(스프링, 아이바티스 연동)
■ Ajax 활용방법
■ RESTful 웹 서비스
■ 파일 처리, 유효성 검사, 국제화
■ 스트럿츠2 태그 레퍼런스
■ 다양한 플러그인 사용법

예제 파일


<스트럿츠2 예제 프로젝트>
- 기본 출력 (문자열, 객체 값, 리스트 형식의 데이터)
- 기본 입출력 (문자열, 객체 값, 날짜 형식 데이터 등)
- 어노테이션을 이용한 개발 (액션, 리절트 정의 생략 가능)
- Ajax
- 스트럿츠2 기본 태그 라이브러리 이용
- 파일 업로드, 다운로드
- 유효성 검사
- 국제화
- JDBC 프로그래밍
? 스프링/아이바티스(iBatis)연동
- 플러그인 (JSON, REST, Sitemesh, JasperReport 등)
- 예외처리
- 스트럿츠2 태그 레퍼런스 예제

이 책의 대상 독자
이 책의 독자는 이미 다양한 분야와 기술에 익숙한 사람일 수도, 첫 입문자일 수도 있다. 자신의 관심 사항에 맞도록 1부에서는 기초적인 내용을 위주로, 2부부터는 심화된 내용으로 구성했다.
자바 웹 프로그래밍을 경험해 본 독자라면 예제를 통해 스트럿츠2로 웹 애플리케이션을 개발하는 방법을 학습하는 데 큰 어려움이 없을 것이다. 스트럿츠2를 배우기 위해 기타 다른 프레임워크 또는 스트럿츠1에 대한 선지식이 필요하지 않다. 스트럿츠2는 스트럿츠1의 업그레이드 버전이 아닌 새로운 아키텍처를 기반으로 하고 있기 때문이다.

이 책의 구성
이 책의 1부는 초보 개발자라도 스트럿츠2를 사용해 쉽게 웹 애플리케이션을 개발할 수 있도록 구성했다. 스트럿츠2의 아키텍처를 깊이 이해하고 있지 못하더라도 예제를 실습하다 보면 스트럿츠2의 기본적인 개념을 자연스럽게 익힐 수 있다.

2부는 스트럿츠2의 아키텍처를 자세하게 다룬다. 1부를 통해 스트럿츠2의 기본적인 사용법을 익혔더라도, 이를 충분히 활용하려면 스트럿츠2의 내부 아키텍처를 이해해야 한다. 2부를 통해 스트럿츠2가 내부적으로 어떻게 동작하는지 자세하게 알아볼 수 있다.

3부는 스트럿츠2를 활용하는 기술에 대해 다룬다. 국제화를 지원하는 웹 애플리케이션을 만드는 법, 다른 유용한 오픈 소스를 플러그인 방식으로 스트럿츠2와 함께 활용할 수 있는 방법과 스트럿츠2 프레임워크와 데이터베이스와 연동하는 방법을 소개하고, 스트럿츠2의 태그 라이브러리 사용법을 살펴볼 것이다.

끝으로 4부는 부록으로서, 이 책에서 제공하는 예제를 실습하는 데 필요한 개발 환경을 구축하는 방법과 국제화 지원을 위한 국가별 ISO-639-1 코드, 스트럿츠2 새로운 버전의 업데이트 내용과, 표준 기반의 작업에 도움을 주기 위해 EL과 JSTL의 사용법을 요약식으로 정리했다. 스트럿츠2 애플리케이션을 개발하는 데 도움이 될 것이다.

이 책을 읽는 독자 중에는 다양한 분야와 기술에 이미 익숙한 사람도 있고, 이제 막 자바 웹 애플리케이션 개발의 첫걸음을 뗀 새내기도 있을 것이다. 각자의 관심사항에 맞게 책을 읽어나갈 수 있게 1부에서는 기초적인 내용 위주로 다뤘고, 2부부터는 심화된 내용을 학습할 수 있도록 구성했다.

저자 서문
초기 혼돈스러웠던 웹 개발 시절 스트럿츠1을 처음 접하고 웹 애플리케이션 개발에 대한 훌륭한 가이드를 제공받으며, 이전에는 크게 흥미를 느끼지 못했던 오픈 소스에 대한 관심이 커졌다. 이후 여러 오픈 소스를 접하며 그들의