struts2-blank예제소스의 xml정의에 대해 이해해 보도록 하겠습니다.

너무 깊게 들어가진 않습니다. 왜냐면 저두 자세히는 모르니까요...^^;

 

서버기동 하자마자 디폴트로 열리는 화면의 움직임은 다음과 같습니다.

서버기동 -> web.xml -> Struts.xml -> example.xml -> HelloWorld.action -> HelloWorld.java -> HelloWorld.jsp

 

web.xml

: 웹서버가 기동될때 처음읽는 파일임.  (웹어플리케이션의 전반적인 요소들을 주로 정의 하는곳임.)

참고 :아파치 홈페이지 http://struts.apache.org/2.0.14/docs/webxml.htm에는 

  filter-class 에 org.apache.struts2.dispatcher.FilterDispatcher라고 정의 되어있음.

capture04.png

 

 

Struts.xml

 :액션을 정의 하는곳

어떠한 액션이 일어났을경우 Struts.xml에 정의 되어 있지 않으면 화면이 제대로 열리지 않는다.

액션패스의 변경사항이나 새로운 액션패스를 설정할때에 꼭 정의 해 주어야 할곳이다.

capture.png  

<package name="default" namespace="/" extends="struts-default">

- struts2-blank의 최상의 루트를 정의함.(http://localhost:8080/struts2-blank/)에 해당함

 

<default-action-ref name="index"/>

- 주소창에서 http://localhost:8080/struts2-blank/를 입력했을때 디폴트 액션정의 여기에서는 디폴트 액션이 index가 됩니다.

  즉, 주소창에서 http://localhost:8080/struts2-blank/를 입력하면 index액션이 움직인다는 뜻이죠.

  index액션 정의 한것을 보면 type="redirectAction" 이고 param actionName과 param namespace를

  각각 HeloWorld, /example를 정의했습니다.

<action name="index">
     <result type="redirectAction">
         <param name="actionName">HelloWorld</param>
         <param name="namespace">/example</param>
    </result>
</action>

풀어보면 index액션이 일어났을경우 redirectAction을 /example/HelloWorld로 하겠다는 뜻입니다.

 

근데 여기서보면 /example/HelloWorld가 정의 가 없습니다. 어디에 있을까요?

<include file="example.xml">:Struts.xml에서 example.xml을 포함시키고 있다는게 정의 되어있네요

그럼 example.xml로 가보겠습니다.

 

 

 

example.xml

capture01.png

 

<package name="example" namespace="/example" extends="default">

- 패키지이름은 example이고 namespace가 /example가이고 상속은 default를 상속한다.

(즉, Struts.xml에 정의 되어있는 패키지 default를 상속한다는 뜻이된다.)

 

여기에 보면 Struts.xml에 없었던 HelloWorld액션이 여기에 정의 되었다.

<action name="HelloWorld" class="example.HelloWorld">
     <result>/example/HelloWorld.jsp</result>
</action>

 

액션 HellowWorld 일 경우 액션클래스는 example.HelloWorld를 사용하고 보여질 jsp는

example/HelloWorld.jsp 이다 라고 정의 해놓았다.

 

위에 내용들을 총정리해보면

주소창에서 http://localhost:8080/struts2-blank/를 입력하면

index액션 -> HelloWorld액션이 HelloWorld.java -> HelloWorld.jsp가 움직 인다는걸 알수 있다.

 

다음 시간에는 액션클래스와 화면(jsp)에 대해 알아보도록 하겠습니다.

감사합니다.