Programming/Struts2
Struts2 를 파헤쳐 보자 ━─★ 팍팍!!
달나라민군
2010. 5. 14. 13:27
스트럿츠2 특징
• 아파치 스트럿츠는 2000년에 등장하여 자바 기반의 웹 어플리케이션들을 개발하는데 많은 도움을 주며 성장하였다.
• 더 쉽고 간결하게 웹 어플리케이션을 만들며,더욱 풍부한 사용자 인터페이스를 구축하기 위한 웹 프레임워크의 등장이 요구되었다.
• 스트럿츠2는 웹워크의 단순함, 세련미, 개발 툴 친화성의 장점과 struts1을 결합하여 탄생되었다.
•전혀 새로운 프레임워크
• 스트럿츠1과는 전혀 다른 웹워크의 아키텍처를 채용
• 서블릿 의존성에서 벗어난 POJO 기반의 액션
• 테스트 용이성 증가
• 입/출력 처리의 다양화
• 비즈니스와 도메인 객체를 포함한 풍부한 객체 타입을 입/출력 객체로서 사용할 수 있다.
• 다양한 표현언어 EL 지원
스트럿츠2 기본 구조
• 스트럿츠2도 JSTL을 지원하며, OGNL(Object Graph Navigation Language) 라고 불리우는 강력하고 유연한 표현 언어를 지원한다.
•뷰와 값의 연결
• 밸류스택이라는 기술을 사용한다.
• 액션 실행 제어
• 인터셉터 스택
• 전, 후 처리 가능
• Zero Configuration 지향 및 신속한 리로딩
• 환경 설정이 쉬움
• 변경된 환경 적용시 리로딩이 가능하다.
• 강력한 유효성 검사
• XWork의 유효성 검사 프레임워크에 기반
•강력한 태그 및 Ajax 지원
• 재사용성이 높은 UI태그를 제공한다.
• ajax 테마를 지원하는 dojo 프레임워크를 포함하고 있다.
• 다양한 플러그인 기능을 지원한다.
• 다양한 리절트 타입을 지원한다.
• 의존성 주입을 지원한다.
스트럿츠2 기본 개념
•스트럿츠가 제공하는 기본 개념
•스트럿츠가 제공하는 기본 개념
• 액션 Action
• 리절트 Result
• 환경 설정 Configuration
•액션 Action
• 액션이란 스트럿츠2에서 비즈니스 로직을 실행하기 위한 통로 역활을 하는 개념으로서 가장 중심적인 위치에 있다.
• 리절트 Result
• 스트럿츠2가 비즈니스 로직을 수행한 후, 최종 결과를 출력하기 위해 제공하는 것이 리절트이다.
•태그
• 결과 페이지에서는 태그 라이브러리나 여러 문법을 통해서 액션 클래스의 프로퍼티를 접근할 수 있기 때문에 손쉽게 동적인 페이지를 구성할 수 있다.
•환경설정 struts.xml
• 사용자의 요청에 대해 어떤 액션을 수행한 후, 어떤 리절트를 출력해야 하는지 스트럿츠가 알 수 있도록 해야한다.
• 액션과 리절트의 관계를 정의한다.
• 스트럿츠2 자체의 기능 설정을 위해 환경설정 모듈을 제공한다.
스트럿츠2 기본 구조
• 요청 URL과 요청 처리 및 결과 출력의 흐름
•액션과 비즈니스 로직의 관계
•액션 Action
• 스트럿츠2에서 액션은 하나의 자바 클래스이다.
• 액션 클래스는 스트럿츠2가 액션을 실행하기 위한 엔트리 포인트로서 기본 액션 메서드인 execute() 메서드를 가진다.
•기본 액션 메서드인 execute() 메서드는 String 타입을 반환한다.
• 액션 메서드가 반환하는 문자열은 액션 실행이 끝난 후 어떤 리절트를 실행할 지 결정하기 위해 사용된다.
• 액션 메서드가 반환하는 이 문자열 값을 “리절트 코드”라고 부른다.
• 액션을 호출하려면 사용자는 “액션이름.action” 형식을 사용한다.
• 액션이름은 스트럿츠2 환경설정 파일인 “struts.xml” 파일에 정의한다.
•<action /> 요소는 액션을 정의할 때 사용한다.
• <action /> 요소는 name, class, method 속성를 갖는다.
• <result /> 요소는 액션 수행이 완료된 후 실행될 리절트를 정의할 때 사용한다.
• <result /> 요소는 <action /> 요소 사이에 정의하고, name, type 속성를 갖는다.
•스트럿츠2는 다양한 타입의 리절트를 제공한다.
• <result /> 요소에 name 속성을 생략하면 “success”를 기본값으로 사용한다.
•struts.xml
• 웹 어플리케이션의 루트 경로 밑의 ‘/WEB-INF/classes’에 위치한다.
• JSP에서 스트럿츠2 태그 라이브러리를 사용하려면 JSP의 상단에 스트럿츠2 태그 라이브러리 설정 정보를 추가해야 한다.
JSP에서 태그 사용 형식
• 스트럿츠2에서 요청 파라미터를 얻는 방법
• 밸류 스택 ValueStack과 OGNL 이용
• OGNL Object Graph Navigation Language
• JSP에서 스트럿츠2 태그 라이브러리를 사용하려면 JSP의 상단에 스트럿츠2 태그 태그라이브러리 설정 정보를 추가해야 한다.
• 정적 메서드 또는 인스턴스 메서드를 실행하고, 컬렉션 타입의 테이터 또한 사용할 수 있도록 진보된 표현식을 제공한다.
• XWork 내에서 확장된 풍부한 타입 변환 모델을 제공한다.
• 빈의 프로퍼티는 프로퍼티 이름으로 접근할 수 있다.
• 밸류 스택 ValueStack
• 밸류 스택은 XWork와 스트럿츠2의 동적 컨텍스트 기반의 핵심 부분으로 객체의 스택이다.
• 표현식에 사용된 그 이름의 프로퍼티를 갖는 첫 번째 객체를 검색함으로써 동적으로 프로퍼티 값을 찾는다.
• 스트럿츠2는 액션이 실행되는 동안 액션을 스택상에 저장하여 밸류 스택을 구축한다.
• 스트럿츠2는 요청으로부터 처리해야 할 파라미터 값과 액션의 프로퍼티를 밸류 스택을 통해 접근한다.
• 필터 디스패처 FilterDispatcher
• 사용자의 요청을 최초로 처리하는 것은 “필터 디스패처”라고 불리는 스트럿츠2의 컨트롤러이다.
• 필터디스패처는 서블릿 필터다.
• 필터 디스패처는 액션을 실행하기 위한 환경을 구축한다.
• 사용자에게 보낼 응답을 처리한다.
• 필터 디스패처 FilterDispatcher
• 스트럿츠2 웹 어플리케이션을 개발하기 위해 웹 어플리케이션 배치 디스크립터인 web.xml 에 필터 디스패처를 등록해야 한다.
struts.xml 기본 설정
•인클루드 Include
• 패키지 Package
와일드 카드 매핑 Wild Card Mapping