Java2EE Framework/Struts1.3

스트럿츠(struts) 1.3

본클라쓰 2009. 9. 3. 16:37

 

스트럿츠는 크레이그 맥클레이헌(Craig R.McClanahan)에 의해 개발되어 2000년 ASF(The Apache Software Foundation)에 기증되어 아파치 프로젝트 일부로 진행되고 있는 MVC 모델2에 기반한 프레임워크이다. MVC 모델2를 지원하는 대표적인 프레임워크로 웹 애플리케이션의 전반적으로 다양한 기능을 제공한다.

 

MVC 패턴이란 모델, 뷰, 컨트롤러로 어플리케이션의 분리를 기반으로 한다. 로직은 시스템의 상태를 나타내는 로직과 상태를 변경시키는 로직으로 구분할 수 있는 데, 시스템의 상태는 나타내는 로직은 비즈니스 로직이고, 상태를 변경시키는 로직은 컨트롤러로 구분할 수 있다.

 

스트럿츠에는 비즈니스 로직을 어떻게 구성하는지는 개발자에게 맡긴다. 스트럿츠가 신경쓰는 부분은 상태를 변경시키는 로직이다. 즉, 요청이 들어왔을 때 어떤 비즈니스 로직을 수행하여 어떤 내용을 출력할 것인가를 결정하는 부분을 상태를 변경시키는 로직으로 보고 스트럿츠는 이 부분을 컨트롤러로 구분한다.

 

컨트롤러는 사용자의 요청을 받아 요청에 필요한 비즈니스 로직을 수행한 후 결과에 따라 어떤 뷰를 통해 결과를 출력할지 결정하고 전송하는 역할을 담당한다. 즉, 스트럿츠는 모델과 뷰를 연결해 주기 위한 유연한 서블릿 기반의 컨트롤러를 제공한다.

 

 

 

스트럿츠의 특징

 

MVC 모델2 방식이 적용된 스트럿츠는 모델과 뷰를 연결해 주는 잘 디자인되고 유연한 서블릿 기반의 컨트롤러를 제공한다. 스트럿츠 컨트롤러를 사용하면 설정파일을 통해 사용자 요청에 해당하는 컨트롤러를 호출한 후 모델 클래스를 수행한 후 결과에 따라 뷰를 자동으로 연결시켜준다. 또한, 뷰 영역에 방대한 양의 태그 라이브러리를 제공한다.

 

스트럿츠는 컨트롤러 영역에서 개발자가 작성해야 할 부분은 컨트롤러 인터페이스를 구현하여 정의한 컨트롤러에 호출할 모델 영역과 뷰 영역을 매칭시켜 주는 것이다. 또한, 스트럿츠에서 모델 영역은 개발자가 직접 작성해 사용해야 한다.

 

모델 영역은 스트럿츠가 관여하는 부분이 아니다. 즉, 스트럿츠는 MVC 패턴의 컨트롤러를 구현하기 위한 프레임워크이며 컨트롤러 영역에 중점을 둔 프레임워크이다. 모델 영역의 구현은 개발자에게 맡기고 컨트롤러와 뷰 영역에서 잘 디자인 된 통합 프레임워크이다.

 

 

 

스트럿츠 프레임워크가 사용되는 이유

 

자바의 서블릿은 빠르고 강력한 웹 프로그래밍 언어이다. 하지만 서블릿은 프로그램 코드안에 태그를 작성하는 방식을 사용하기 때문에 정교한 웹 페이지를 제작하기에는 부족하고 페이지를 수정하기 위해서는 프로그램 코드를 다 코쳐야 하기 때문에 유지보수가 매우 힘들다.

 

이에 자바측에서는 JSP를 내놓았다. JSP는 스크립트 언어로 HTML 페이지내에 프로그램 코드를 넣는 방식으로 사용된다. 하지만 이 방법도 페이지 변경에 매우 불리한 구조였다. 프로그램 코드와 HTML 태그가 뒤 섞여있어 페이지를 수정하기 어렵게 만들었다.

 

이런 문제를 해결하기 위해 등장한 것이 모델2 방식의 MVC 패턴이다. 이 패턴은 모델, 뷰, 컨트롤러를 분리시켜 사용자의 요청을 컨트롤러 영역에서 받아 해당 비즈니스 로직을 수행한 후 결과물을 해당 JSP 페이지로 보내는 패턴이다. 즉, 모델과 뷰를 분리시켜 관리하며 컨트롤러가 그 중간에서 인터페이스의 역할을 하는 것이다. 이 때 모델 영역과 컨트롤러 영역은 서블릿이 담당하고 뷰 영역은 JSP로 작성하는 것이 모델2 방식의 핵심이다.


이런 모델2 방식을 지원해주는 표준 프레임워크가 스트럿츠이다. 스트럿츠는 컨트롤러 컴포넌트만 있는 것이 아니라 뷰영역에 해당하는 컴포넌트도 같이 제공한다. 즉, 다양한 컴포넌트를 지원하는 프레임워크이다.