@ <result /> : 액션이 실행된 이후에 사용자에게 어떠한 결과를 보여줘야 하는지를 결정한다.
- name : 필수, 액션 메서드에서 리턴한 문자열을 지정한다. 디폴트는 "success"
- type : 선택, struts-default패키지에 선언되어 있는 result-type을 사용하여 리절트 타입을 지정한다.
디폴트는 dispatcher이다
@ dispatcher 로 정의된 요소는 MVC의 가장 기본이 되는 패턴인 컨트롤러에서 뷰로 요청을 포워딩 해주는 일을 한다.
@ result는 액션 인보케이션에서 의해서 액션이 실행되고 난 후에 실행된다.
@ Action Chain : 액션을 실행한 후에 다른 액션에서 이전 요청의 정보와 액션의 상태 값을 유지하여 계속해서 사용해야 할 경우 Action Chain 을 사용하여 다른 액션을 호출할 수 있다. 액션끼리 체인을 형성하여 후위 액션을 호출
<action name="UserRegLoginAction" class="action.UserRegAction">
<interceptor-ref name="params"/>
<result name="success" type="chain">
<param name="actionName">LoginAction</param>
<param name="namespace">/ch06</param>
</result>
</action>
<action name="LoginAction" class="action.LoginAction">
<interceptor-ref name="chain" />
<interceptor-ref name="params" />
<result name="success">/jsp/userRegSuccess.jsp</result>
</action>
<interceptor-ref name="params"/>
<result name="success" type="chain">
<param name="actionName">LoginAction</param>
<param name="namespace">/ch06</param>
</result>
</action>
<action name="LoginAction" class="action.LoginAction">
<interceptor-ref name="chain" />
<interceptor-ref name="params" />
<result name="success">/jsp/userRegSuccess.jsp</result>
</action>
@ redirect 리절트타입은 JSP에서 response.sendRedirect("") 메서드와 마찬가지로 리다이렉트할 URL을 응답으로 웹 브라우저에 보내며 URL로 새롭게 서버와 연결되므로 request가 새롭게 생성된다.
<action name="LoginAction2" class="action.LoginAction">
<interceptor-ref name="params"/>
<result name="success" type="redirect">/jsp/loginSuccess.jsp</result>
</action>
<interceptor-ref name="params"/>
<result name="success" type="redirect">/jsp/loginSuccess.jsp</result>
</action>
@ redirectAction : redirect 리절트 타입이 URL을 지정한다면 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">/jsp/userRegSuccess.jsp</result>
</action>
<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">/jsp/userRegSuccess.jsp</result>
</action>
@ 와일드카드(wild card : *)는 <result />요소에도 적용할 수 있다.
@ <global-results /> : 로그인 페이지나 에러페이지 처럼 여러 <action /> 요소에 중복되어 설정되는 것을 피하기 위해 사용됨
<package>
<global-results>
<result name="error">/jsp/error.jsp</result>
</global-results>
</package>