Struts2의 작동 원리

Struts2 Framework Architecture Diagram


 1. Client가 HttpServletRequest를 요청하면 FrontController인 FilterDispatcher가 받는다.

 2. ActionMapper부터 ActionProxy 등을 거쳐 와서 Config 문서인 struts.xml 문서와 추가로 struts.properties 파일을 요구한다. struts.properties는 있으면 로딩하고 없으면 하지 않는다.(없어도 된다)

 3. struts.xml과 strtus.properties문서를  Interceptor가 받아온다. 그리고 Client의 모든 Parameter를 가로챈다.

 4. Interceptor 은 3단계로 나누어져 있다.
1단계에서는 Client의 모든 Paramter를 가로챈다. 
2단계에서는 렌더링 역할을 수행한다.(언어 설정, 보안 설정 등)
3단계에서는 Action의 setter method 를 찾고, 데이터를 푸시하는 역할을 한다.(ActionForm이 필요없다)

 5. Business Logic Controller인 Action에서 setter method 메소드를 받아서 비즈니스로직을 수행한다. 

 6. getter method를 통해 Result로 전달해주거나 받는다. Result에서 적절한 페이지를 선택한다. 이때 Template를 지정한다.(JSP, JSF, Velocity(확장자 : vm), FreeMarker(확장자 : ftl)) 적정할 Template를 잡아서 다시 Interceptor로 보낸다.(getter를 통해서 객체는 머든 상관없다)

 7. 다시 역방향으로 간다. 1단계에서 Result에서 적절한 페이지를 선택할때, 그 페이지를 찾는다. 그리고 그 페이지의 Value Stack(그림에는 없음)을 갖고, Value Stack에다가 데이터를 넣주고 그냥 찍기만 하면 된다.(Spring의 setAttribute 필요없이 받을 수 있다) 

Struts2의 기본적인 작동원리 끝!

+ Recent posts