리절트 개요와 종류

Posted by 단순대왕 Struts2 : 2014. 12. 11. 15:59

6. 리절트 개요와 종류

리절트는 struts2 프레임워크에서 액션이 실행된 이후에 사용자에게 어떠한 결과를 보여주어야 하는지를 결정한다.

리절트를 사용하기 위해서는 액션이 반환하는 특정한 문자열을 사용하는데 이는 리절트를 식별하기 위한 용도로

사용되며 이를 리절트 코드라 한다.

리절트 코드에 따른 리절트 설정은 <result/>요소에 의해서 이루어진다.

- name: 액션 메소드에서 리턴한 문자열을 지정한다. 디폴트는 success

- type: struts-default 패지키에 선언되어 있는 result-type을 사용하여 리절트 타입을 지정한다. 디폴트 dispatcher

)

<result name=”success” type=”dispatcher”>/helloWorld.jsp</result>

리턴한 문자열이 success이면 dispatcher 타입의 result가 실행한다. dispatcher helloWorld.jsp를 포워딩한다.

 

리절트 타입

설명

chain

어떤 한 액션을 다른 액션에 체이닝한다.

dispatcher

기본 리절트 타입으로 jsp를 랜더링한다.

freemarker

Freemarker 템플릿을 랜더링한다.

httpheader

설정된 HTTP 헤더 응답을 반환한다.

redirect

사용자에게 특정한 리다이렉션한다.

redirectAction

특정 액션으로 리다이렉션한다.

stream

Raw data를 브라우저로 전달한다. 파일이나 그림에 대한 다운로드 기능을 구현할 때 사용.

velocity

벨로시티 템플릿을 랜더링한다.

xslt

XML을 브라우저 화면에 랜더링한다. XSL 템플릿을 통해 변환한다.

plaintext

컨텐트를 플레인 텍스트로 반환한다.

 

6.1. 사용자 정의 리절트

사용자 정의 리절트 타입을 생성하기 위해서 Result 인터페이스를 사용한다.

Result 인터페이스는 Serializable을 확장하고 execute() 메소드를 갖는다. 리절트는 액션 인보케이션에 의해서

액션이 실행되고 난 후에 실행된다.

ActionInvocation 파라미터는 사용자에게 넘겨줄 최종적인 응답을 생성하기 위해서 알아둘 필요가 있는 모든

결과를 제공한다.

 

6.2. chain - 체인 리절트를 활용한 액션 체인

액션을 실행한 후에 다른 액션에서 이전 요청의 정보와 액션의 상태 값을 유지하여 계속해서 사용해야 할

경우가 생긴다. 이러한 경우에는 액션 체인을 사용하여 다른 액션을 호출할 수 있다.

특정 액션이 다른 액션을 호출하려면 액션끼리 체인을 형성해야 하는데 이러한 경우 사용하는 것이

체인 리절트이다.

구현) struts.xml

<struts>

<package name="ActionResult" extends="struts-default">

<action name="UserRegFormChain">

<result>/form/userRegForm.jsp</result>

</action>                   

<action name="UserRegLoginAction" class="action.UserActionModelDrivenPreparable">

  // 인터셉터의 순서 중요

<interceptor-ref name="prepare" />

<interceptor-ref name="modelDriven" />

<interceptor-ref name="params" />

 

<result name="success" type="chain">

<param name="actionName">LoginAction</param>

<!--<param name="namespace">/</param>-->

</result>

</action>

<action name="LoginAction" class="action.LoginAction">

<interceptor-ref name="chain" />

<interceptor-ref name="params" />

<result name="success">/form/userRegSuccess.jsp</result>

</action>

</package>   

</struts>

 

6.3. dispatcher redirect 리절트 타입

Dispatcher는 스트럿츠2의 기본 리절트 타입으로 jsp와 같은 웹 리소스로 포워딩한다.

redirect 리절트 타입은 response.sendRedirect(“…”) 메소드를 호출한 것과 같은 효과.

redirect 리절트 타입은 리다이렉트할 URL을 응답으로 웹 브라우저에 보낸다. URL로 새롭게 서버와 연결이

되므로 request가 새롭게 생성되는 것을 의미한다. 웹브라우저에 나타나는 URL도 바뀐다.

반면 dispatcher request가 유지된다. 서버와 새롭게 연결되는 것이 아니므로 처음 접속했던 request 정보를

가지고 있다. Dispatcher는 요청 처리를 다른 웹 리소스로 위임하는 것이므로 웹 브라우저에 요청 URL

바뀌지 않는다.

 

6.4. redirectAction 리절트 타입

redirectAction 리절트 타입은 actionName 파라미터를 사용하여 리다이렉트 대상이 될 액션 이름을 지정한다.

구현)

<action name=”UserRegAction” class=”action.UserRegAction”>

  <interceptor-ref name=”params”/>

  <result name=”success” type=”redirectAction”>

    <param name=”actionName”>LoginAction</param>

    <param name=”userId”>${userId}</param>

    <param name=”message”>${message}</param>

  </result>

    </action>

    <action name=”LoginAction” class=”action.LoginAction”>

      <interceptor-ref name=”params”/>

      <result name=”success”>/userRegSuccess.jsp</result>

    </action>

'Struts2' 카테고리의 다른 글

태그 라이브러리  (0) 2014.12.11
스트럿츠2 아키텍쳐  (0) 2014.12.11
도메인 오브젝트  (0) 2014.12.11
Action  (0) 2014.12.11
struts.xml  (0) 2014.12.11