'Framework'에 해당되는 글 1건

  1. 2012.02.20 스트럿츠란??
2012. 2. 20. 16:56
스트럿츠란? 이라는 제목으로 과하게 달아놨지만 사실상으로 보면 스트럿츠는 JAVA로 MVC패턴을 구현하다보니 어려운 점이 많이서 나오게된 프레임워크가 스트럿츠라고 말해도 과언이 아니다. JSP만으로 MVC패턴을 구사하기에는 사실상 어려움이 많다. JAVA로 구현하는 MVC패턴에서 크게 벗어나지는 않았다. 이 장에서는 일단 JAVA의 MVC는 잊도록 하고 스트럿츠의 MVC로 설명을 하겠다 . 하지만 두 방식 다 각각의 방식을 따르는 것은 아니다. 전체적인 흐름은 같으나 프로그램 코드의 방식이 다를뿐이다. 하지만 흐름을 이해하는것은 스트럿츠가 한 눈에 들어오기 떄문에 스트럿츠부터 설명을 하려는 것이다. 웹프로그램은 웹프로그램이기 때문에 자바안에서 하던 프레임워크를 사용하던 같은 방식으로 같은 페이지가 나오기 때문이다. 단지 필자의 생각은 스트럿츠의 경우 자바보다 보안적인 측면에서 조금 모자라단 생각이 들기때문이다. 실제적으로 스트럿츠와 EJB를 같이 사용하는 공기업이나 금융권을 제외하고 보안적으로 우선시 하는 기업이라면 스트럿츠만 사용하기보단 자바로 웹페이지를 구현하고 자바의 서블릿기술을 기반으로 하는 기업들이 많다. 필자의 생각은 그냥 그렇다. 스트럿츠는 쉬우니깐 이걸 배우면서 프로그램의 로직이나 흐름도를 이해하고 스트럿츠를 이용해 만든 페이지를 자바와 서블릿 기술을 이용해서 똑같이 만들 수 있다면 더 좋은 조건으로 회사를 들어갈 수 있지 않을까 생각한다. 문론 기본디는 탄탄히 뒷바침 되어 있어야 할 것이다. 그러면 스트럿츠에 대해 설명을 하겠다. 이번장은 중요하기 때문에 꼼꼼히 읽으면서 로직의 흐름이 어떻게 될까 생각해봤으면 좋겠다.

 

 

스트럿츠란? MVC패턴을 지원하는 웹 어플리케이션 프레임워크를 말한다. 웹 어플리케이션을 기능 및 모듈 단위로 분리하여 확장성을 높이고 유지보수를 용이하게 해준다. 스트럿츠 이외에도 스프링, 아이바티스(IBATIS), 타일즈(TILES) 등이 있다.

 

스트럿츠2는 웨 워크와 스트럿츠가 결합한 형태의 프레임워크다.

-서블릿 방식을 사용하던 기존의 스트럿츠와는 달리 스트럿트2 에서는 필터방식을 사용.

-Action을 부를 POJO(Plan Old Java Object)로 구현할 수 있음.

 

말로 설명을 거창아게 했지만 그림을 보면서 설명을 하자면.


스트럿츠는 설정파일인 Web.xml이외에도 struts.xml이라는 설정파일을 갖는다.

Web.xml은 URL관련하여 설정을 하는 파일이다. web.xml설정을 잘못한다면 아얘 익스플로러에서 응답을 하지 못한다.

반면에 struts.xml은 액션에 대한 전반적인 관리를 하는 파일이다. 액션이란 웹페이지 상에서 다음페이지로 넘어갈 떄 이루어지는 행동의 명령이라고 할 수 있다.

그림을 보고 설명을 한다면!!

웹페이지 상에서 사용자의 요청(액션)이 이루어지면 xml파일에서 액션명을 확인하고 자바클래스파일을 호출하고 파일내의 메서드(비지니스 로직)를 호출한다. 호출 후 자바에서 이루어진 작업을 기반으로 reslut페이지를 xml로 부터 정보를 받아 view페이지(jsp페이지)를 호출한다.

이 구조만 이해한다면 스트러츠의 반을 알고 있다고 해도 과언이 아닌것 같다. 처음에 이 구조를 이해햐기는 힘들겠지만 이 그림을 반복해서 보면 이해가 빠를 것이다.

 

다시 한번 설명하자면



- 사용자가 서버측으로 요청하면 http://localhost:9000/HelloWorld.action 과 같은 URL로 요청이 넘어온다.

- 스트럿츠 2에서는 환경설정파일을 참조(ref)하여 넘어온 요청을 어떤 액션으로 처리하는지 결정한다.
- 액션이 결정되었으면 비즈니스 로직을 호출하여 요청에 대한 작업을 수행하고 그 결과를 다시 스트럿츠로 넘겨준다.

- 비즈니스 로직으로부터 결과를 받아온 스트럿츠는 환경설정파일을 참조(ref)하여 로직이 처리한 결과물과 매치되는 적합한 출력물(리절트)을 선택한다.

- 적합한 리절트가 선택되었으면 해당하면 jsp파일 뷰 페이지를 사용자의 웹 브라우저에 띄워준다.


설정了 !!
Posted by bluetails