1. data-sources : struts 에서 사용할 데이터 베이스 자원을 기입합니다. 주로 Connection Pooling 을 사용합니다.

2. form-beans :struts 에서는 client 가 웹 브라우저에 입력한 parameter 들을 class 에 매핑시켜 처리하게 해줍니다 그 class 를 기입합니다.

3. global-exceptions : struts 로 구현된 application 에서 발생한 예외를 처리할 수 있는 page 로 forwarding 하는 역할을 합니다. error 처리는 해당 action 에서 exception 요소로 처리하는 것도 가능합니다.

4. global-forwards :모든 action 은 보여지는 화면( jsp page, html ) 등으로 처리된 응답을 보내게 되어 있습니다.여기에 특정한 pattern 으로 처리해야 하는 page 가 있다면 key 값으로 정의하고 action element 에서 활용하는 것이 가능합니다.

5. action-mappings :아마 가장 많이 주의 깊게 작성하는 곳일 될 겁니다. client의 요청을 처리하는 주역할을 하는 action class 를 해당하는  요청에 mapping 하는 element 입니다.

6. controller :struts 의 이전 버전에서는 ActionServlet 을 상속해서 컨트롤러 기능을 오버라이드 해야 했지만, struts 1.1 이 후에는 RequestProcessor 로 많은 기능이 이전되었습니다. 그래서 각각의 application 을 위해서 각각의 controller 를 작성해야 한다면 여기에 RequestProcessor 를 상속한 class 를 기입하여 다양한 controller 의 기능을 구현하는 것이 가능합니다

7. message-resources :각각의 action 이 수행이 될때 error message 가 나올수 있습니다. 이들 각각의 message 들을 지정해 둔 곳이라 보시는 것이 쉬우실 거라 생각합니다.

8. plug-in : 이 element 는 struts 1.1 버전 이후에 나온 개념으로 org.apache.struts.PlugIn interface 를 구현한 class 를 만들어 struts 로 구현한 application 이 구동될 때 동시에 실행되어 다양한 기능을 추가적인 코딩 없이 동적으로 작동하게 해주는 기능입니다. struts 에서 제공하는 Validator 와 Tiles 등이 이러한 plugin 기능을 활용한 것입니다 차후 validator 와 tiles 에 관한 사용법을 강좌에 연재할 계획입니다.

위의 간단한 설명을 잘 읽어두시길 바랍니다.

위의 element 들을 잘 이해하고 RequestProcessor class 내부의 process() 의 내부적인 구조를 잘 이해하는 것이 struts 의 대부분이라 생각하셔도 됩니다.

그래서 요청을 처리하는 것은 다음의 과정으로 이뤄지게 됩니다.

                                                                                                                                         

0. application 이 로딩되면 web container 는 web.xml 을 읽어서 요청을 처리할 준비를 합니다. ( message resource 로딩 --> ActionServlet class 를 control 하는 초기화 parameter 로딩 ---> web.xml 의 서블릿 mapping 정보 로딩 --> struts-config.xml 을 읽어 ServletContext 에 저장 --> data source (커넥션 풀링) 초기화 --> 각 plugin 의 init() 호출)

1. 우선 client 의 요청을 분석한 다음 ActionServlet 이 처리하게 합니다.

2. client 의 request 당 RequestProcessor 의 instance 를 하나씩 생성하여 요청을 처리합니다.

3. 이 때 다양한 요청을 struts-config.xml 의 mapping 정보( action-mappings ) 를 보고 해당 Action class 가 처리하게 합니다.

4. 그리고 이 때 client page 의 정보를 해당하는 Action class 가 처리하게 할 때 각각의 parameter 를 만들어둔 ActionForm class에 mapping 시킵니다. ( form-beans )

5. 이때 해당하는 error 또는 exception 이 발생하면 해당하는 ( global-exceptions ) 처리 class 가 처리한 다음에 경로로 요청을 전달합니다.

6. 그리고 ActionForm 안의 validate() 안에 해당하는 field check 를 마친 다음에 error 가 발생하였다면 message-resources 안에 지정된 message 를 client 단의 web page 에 보여줘서 바른 입력을 하게 합니다.

7. Action class 에서 요청을 처리한 다음에 지정한 경로로 forwarding 처리를 하게 됩니다. ( action 안에 지정한 forward 요소, global-forwards 안에 지정한 경로 )

AND