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 |