12.07.2015 Views

4.3.1.Action의 역할 - Anyframe

4.3.1.Action의 역할 - Anyframe

4.3.1.Action의 역할 - Anyframe

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

11.Preventing Double Form Submission<strong>Anyframe</strong>의 Struts Extensions에서는 Synchronized Token이라는 진보된 방법을 통해 선언적으로 중복Form submit으로 인한 오동작을 방지할 수 있는 기능을 제공한다.11.1.Double Submit의 개념중복 Form Submit은 다음과 같은 경우에 발생할 수 있다.• Browser의 Refresh Button을 사용한 경우• Browser의 Back Button을 사용하여 이전 Page로 이동 후 다시 Form Submit 하는 경우• Browser History을 사용하여 이전 Page로 이동 후 다시 Form Submit 하는 경우• 서버에 영향을 주도록 고의적으로 악의적인 Form Submit을 하는 경우• submit Button을 한번 이상 Click 하는 경우Browser Refresh Button을 사용한 경우에 중복 submit이 발생하는 이유는 Form Submit 이후에 Browse주소창에 보이는 URL에 있다. 예를 들어, "" 을 통해 FormSubmit이 발생하였다라고 가정하자. 이 Form이 전송된 이후에 주소창에 '/submitForm.do'이 남아있고,이 상황에서 Refresh Button을 누르면 동일한 URL이 재전송 되는 것이다. 이러한 상황을 막는 가장 손쉬운 방법은 Form Submit 후에 HTTP Redirect 기능을 사용하는 것이다. 만일 test Form 전송 후에 보여주는 Page가 success.jsp 라고 하면, HTTP Redirect를 사용할 경우 Browse 주소창에 success.jsp가 보일것이다. 이 경우에는 Refresh Button을 눌러도 success.jsp가 다시 로드된다. 이렇게 함으로써 우연히 Browser Refresh Button을 눌렀을 때의 동작 오류를 방지할 수 있다. 하지만 Browser Back Button 등을 사용한 Form Resubmit을 근원적으로 막지는 못하게 된다. 따라서, <strong>Anyframe</strong> 에서는 DefaultActionMapping과 AbstractActionSupport를 제공함으로써, 선언적인 기법으로 Synchronzed Token을 처리하여 중복 Form Submit을 방지할 수 있게 한다. 다음은 Synchronized Token을 이용한 중복 Form Submit 방지 개념도이다.11.2.일반적인 Token 처리일반적으로 Action 클래스에서는 다음과 같은 로직을 통해 중복 Form Submit 여부를 체크할 수 있다.• Action Classboolean valid = isTokenValid(request, true);if (valid) {52

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!