강좌 & 팁
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라고 정의 되어있음.
Struts.xml
:액션을 정의 하는곳
어떠한 액션이 일어났을경우 Struts.xml에 정의 되어 있지 않으면 화면이 제대로 열리지 않는다.
액션패스의 변경사항이나 새로운 액션패스를 설정할때에 꼭 정의 해 주어야 할곳이다.
<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
<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)에 대해 알아보도록 하겠습니다.
감사합니다.