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

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

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

현철주

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

목차

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.5OGNL이란?
______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.1web.xml에정의할수있는내용
_________5.1.2struts.xml소개
_________5.1.3struts.properties소개
_________5.1.4struts-default.xml소개
_________5.1.5velocity.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.1Ajax의개념과스트럿츠2의Ajax구성
_________6.1.1Ajax의개념
______6.2Ajax의기능을이용한메뉴만들기
______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.2struts.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.1required유효성검사자
_________8.4.2requiredString유효성검사자
_________8.4.3int유효성검사자
_________8.4.4double유효성검사자
_________8.4.5date유효성검사자
_________8.4.6expression유효성검사자
_________8.4.7fieldexpression유효성검사자
_________8.4.8email유효성검사자
_________8.4.9url유효성검사자
_________8.4.10visitor유효성검사자
_________8.4.11conversion유효성검사자
_________8.4.12stringlength유효성검사자
_________8.4.13regex유효성검사자
______8.5정리

3부_활용

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

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

10장스트럿츠2플러그인
______10.1사이트메쉬플러그인을이용한페이지레이아웃적용
_________10.1.1사이트메쉬개요
_________10.1.2사이트메쉬플러그인라이브러리설치
_________10.1.3사이트메쉬플러그인을사용하기위한환경설정
_________10.1.4데코레이터페이지만들기
_________10.1.5사이트메쉬를활용한메인페이지출력예제만들기
______10.2JFreeChart플러그인을이용한차트출력
_________10.2.1JFreeChart개요
_________10.2.2JFreeChart라이브러리다운로드와설치
_________10.2.3JFreeChart를사용하기위한환경설정
______10.3JasperReport플러그인을이용한보고서출력
_________10.3.1JasperReport개요
_________10.3.2JasperReport리절트타입정의
_________10.3.3JasperReport관련라이브러리다운로드와설치
_________10.3.4도서목록보고서pdf출력예제만들기
______10.4스프링플러그인을사용한의존성삽입
_________10.4.1스트럿츠2에서스프링플러그인의역할
_________10.4.2스프링소개
_________10.4.3스프링의기본개념
_________10.4.4스프링라이브러리다운로드와설치
_________10.4.5스프링을사용하기위한환경설정
_________10.

출판사 서평

이책은스트럿츠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를이용해레스트풀웹서비스를개발하는방법을설명한다.

웹애플리케이션은결국동적인데이터를처리하는것이목적이므로,가장많이사용하는데이터베이스액세스방법을기초적인부분부터차근히소개하여오픈소스프레임워크를연동해효율적으로개발할수있게한다.서비스계층과데이터액세스계층의설계방법과JDBCAPI를이용한서비스계층과데이터액세스계층구성방법,그리고아이바티스,스프링프레임워크를함께사용해진보된형식의아키텍처를이용한각계층의구성방법도소개한다.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을처음접하고웹애플리케이션개발에대한훌륭한가이드를제공받으며,이전에는크게흥미를느끼지못했던오픈소스에대한관심이커졌다.이후여러오픈소스를접하며그들의막강한기능과가능성에눈을뜨기시작했다.

세계곳곳의열정적인개발자와커뮤니티의활동을통해다양하고유용한오픈소스프레임워크가탄생하고,실제시스템개발에큰도움을주고있다.심지어상용벤더도이러한오픈소스프레임워크를상용솔루션에포함시킬정도로그기능과신뢰가더욱두터워졌다.

웹개발의새로운기준을마련하기위해스트럿츠2는스트럿츠1의모습을과감히탈피하고,여러유용한프레임워크의장점을흡수했다.또한스트럿츠2는개발자의의도대로직관적으로개발할수있는쉬운사용법을제공하며,복잡하고반복적인처리는프레임워크가떠안을수있게한다.

스트럿츠2를이용한프로그래밍은간단하고명료해서좋다.

“복잡한처리를위한아키텍처는프레임워크가모두책임질테니,개발자는편안하고쉽게작업하라.”이것이스트럿츠2의철학이아닐까하는생각이든다.이책을읽는여러분은기존의모습과확연히달라진새로운웹애플리케이션개발프레임워크인스트럿츠2의흥미로움에매료될것이다.스트럿츠2는단순하고편리하게개발할수있는환경을제공해주는반면,프레임워크를사용하면서도프레임워크에종속되지않는자유로움을느낄수있는개발을배려하고있다.스트럿츠2는아키텍처의모습에서도많은매력을지니고있지만실제개발을접할때진정그장점을느낄수있다.
-현철주