어떠한 동작이 있다고 하자. 이러한 동작이 마친 뒤에는 특정 동작으로 자동으로 연계되는게 필요한 경우가 있다. 예를 들어서
친구 목록에 친구를 추가하고 다시 갱신된 데이터가 반영된 메인 페이지로 가고 싶다고 하는 경우가 있다. 여기서 주의할 점은
갱신된 데이터가 반영되어 있어야 한다는 것이다. 이는 Control에 의해서 Model 정보다 반영되고 그 뒤에 View로
이동되어야 한다는 것이다. 그렇다면 우리는 이제 result를 다른 action으로 전송 시켜야 하는 것이다.
이
를 위해서 result에 type을 선언하게 되는데, 이 때 forward가 필요한 경우에 type값을 chain으로 지정하도록
한다. 또한 redirect를 원하는 경우에는 redirect-action 값을 type으로 지정하도록 하면 된다. 앞 서 예를
들었던 경우와 같이 주소록을 갱신하고 그 결과를 반영한 메인으로 이동하고자 하는 경우에 아래와 같이 하면 된다.
<action name="update" class="com.thinkfree.s1.action.contact.UpdateContact">
<result name="success" type="chain">main</result>
</action>
Forward- client가 웹브라우저에서 요청시 Forward는 client 에게 보여지지 않는 페이지에서 작업을 하게 된다. 그러므로 client는 페이지의 이동을 모르게 되며, URL또한 변경이 되지 않는다.
Client가 요청을 하게 될 때 생성되는 객체는 계속 사용이 가능하며 다른 페이지 에서도 그 객체를 사용할 수 있다 .
Redirect
- client가 웹브라우저에서 요청시 Redirect 는 client에게 페이지의 이동을 모두 노출시킨다. client가 요청시 새로운 객체를 생성하며 기존의 객체는 사라지게 되며, URL이 페이지 이동시마다 변경된다. 이전의 전송값을 이동한 페이지에서 사용 불가능하다 .