RedirectAction 접두어는 Action접두어와는 달리 그 액션의 execute() 메소드를 실행시키는게 아니라

struts.xml 에 정의되어 있는 형식대로

test 라는 액션을 리다이렉트 한다.

중요한것은 Action 접두어는 execute() 를 실행시키는것이고,

RedirectAction 접두어는 액션 자체를 리다이렉트 시키는것이다.

<s:submit value="RedirectAction 접두어" name="redirectAction:test"/>

YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST



Redirect 접두어

form 에 지정된 Action 이 아니라 다른 주소로 리다이렉트 할때 쓴다.

리다이렉트와 포워딩 의 차이는 간단하게 

일단 리다이렉트는 브라우저에 다시 요청을 보내라고 시켜서 브라우저에서 다시 요청이 들어오는것이고,
포워딩은 서블릿 자체내에서 페이지를 옮기는것이다.

리다이렉트시에는 브라우저 주소창에 주소가 바뀌지만,
포워딩은 서블릿컨테이너에서 내부적으로 페이지를 바꾼것이기 때문에, 브라우저는 그 사실을 모른다. 
그래서 주소가 바뀌지 않는다.


name="redirect: 다음 리다이렉트 시킬 주소" 를 입력하게되면

리다이렉트가 된다.

<s:submit value="Redirect 접두어" name="redirect:http://winmargo.tistory.com"/>




 


주소창을 잘보면 주소가 바뀐걸 알수있다. 이게 리다이렉트이다. 

YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST



Action 접두어

액션 접두어는 form 에 지정된 action 말고 다른 액션을 지정하고싶을때
쓰는 접두어이다.

name="action:액션명" 을 지정하면 그 버튼은 지정한 액션의으로 서브밋 되어서 

무조건 execute() 메소드를 수행시킨다.

↑↑↑↑↑↑ 라고 했는데, struts.xml 에서 매핑을 다른 메소드로 지정을 해놓으니

그 메소드가 실행이 되는데, 이유는 좀 찾아봐야되겠다..

<s:submit value="Action 접두어" name="action:test"/>

YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


접두어 4 종류


1. 메소드 접두어

Method.jsp
 
<s:form action="call">
<s:textfield name="name"/>
<br>
<s:submit value="Login"/>
<s:submit value="Login" name="method:margo"/>
</s:form>

         

<s:submit value="Login"/>
이 서브밋을 누르게 되면, struts.xml 에 정의된 call.action 이 들어오면 수행될
액션 클래스가 수행될것이다. 만약 struts.xml 에서 메소드를 지정하지 않았다면
자동으로 execute() 가 수행될것이다.


<s:submit value="Login" name="method:margo"/> 
 하지만 submit 의 name 속성에 "method:메소드명" 을 지정하게되면

call.action 이 수행하게될 액션클래스의 메소드가 실행되게 된다.

위 구문처럼 method:margo 하게되면
액션클래스에 margo() 메소드가 실행된다.





일단 제일 처음 예제처럼 method.jsp 에서 두개의 기본 버튼이 생성될것이다.
 






그리고 struts.xml 에서 call 액션에 대한 액션클래스를 매핑한다.







execute() 메소드에서는 "success"를 리턴할것이고, 
margo() 메소드에서는 "margo"를 리턴할것이다. 




 
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST