|
SSISO Community검색 |
|
SSISO Community메뉴 |
|
SSISO Community카페 |
|
블로그 카테고리 |
|
|
struts-config.xml로 검색한 결과 |
|
등록일:2008-02-25 17:24:39 작성자: 제목:struts-config.xml 구성 |
|
1. struts-blank 의 struts-config.xml 을 보면서 기본적인 흐름을 보겠습니다
struts-blank.war file 안에 구성이 미리 되어 있는 struts-config.xml 을 기본으로 설명을 하겠습니다
다시 한 번 의미를 생각해보시겠어요?
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
<form-beans>
</form-beans>
<global-exceptions>
</global-exceptions>
<global-forwards>
<forward name="welcome" path="/Welcome.do"/>
</global-forwards>
<action-mappings>
<action path="/Welcome" forward="/pages/Welcome.jsp"/>
</action-mappings>
<controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>
<message-resources parameter="MessageResources" />
<plug-in className="org.apache.struts.tiles.TilesPlugin" >
<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
<set-property property="moduleAware" value="true" />
</plug-in>
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>
</struts-config>
참고
그리고 부모 요소 (<!ELEMENT web-app>) 인 web-app 안에 씌여져 있는 () 안의 요소들 - 자식 요소 는
기록된 순서대로 사용되어야 한다는 것을 의미합니다
이해를 돕기 위해서 * , ? , + 의 의미를 요약하겠습니다
No Symbol : 자식 element 는 반드시 한 번 나와야 한다는 의미입니다 부모요소 내에서 단 한번만 나옵니다
+ : 자식 요소는 부모 요소에서 한 번 이상 나올 수 있다는 의미입니다
* : 자식 요소는 부모 요소 내부에서 한 번도 나오지 않거나 여러 번 나올 수 있습니다 ( 가장 자주 사용됩니다 )
? : 자식 요소는 부모 요소 내부에서 한 번도 사용되지 않거나 한 번 나올 수 있습니다 ( 빈번하게 사용됩니다 )
위의 참고 자료를 바탕으로 아래의 dtd 를 분석해 보시겠어요?
<!ELEMENT struts-config (display-name?, description?, data-sources?,
form-beans?, global-exceptions?, global-forwards?,
action-mappings?, controller?, message-resources*, plug-in*)>
위의 요소들로 struts-config.xml 이 구현이 되어 있습니다
각각의 요소에 관해 간단한 설명을 하겠습니다
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 안에 지정한 경로 )
위의 과정으로 요청에 응답을 하게 됩니다
위에서 제가 분홍색으로 표시된 부분을 보시다시피
각각의 요소들이 위의 과정에서 사용이 됩니다
위의 과정은 struts 로 구현된 application 에서 요청을 처리하는 기본입니다.
잘 읽고 정리해두시길 바랍니다. [:2008년 03월 28일 09:55:13 수정되었습니다.:] |
|
|
|
|
|