본문 바로가기
스프링 웹 개발

[Double Submit 방지] ajax, submit 더블 써밋 방지_ 자바스크립트

by 배추잠자리 2021. 6. 15.
반응형

ajax와 submit은 연속으로 데이터 요청 시 서버 부하가 일어날 수 있다.

따라서 써밋이 중복적으로 들어가는 것을 방지하는 방법이다.

복사가능한 소스코드는 하단부에 있습니다.

 

여러 방법이 있겠지만 더블써밋 플래그값을 설정하여 하는 방법으로 해보았다.

개발환경은 STS4 스프링 레거시 프로젝트 MVC

 

 

▶ 스프링 레거시 프로젝트 MVC

스프링 레거시 프로젝트 mvc 생성

 

 

 

▶ jsp 예제 소스 작성 [전체소스는 하단부 참고]

 

jsp 예제 소스

 

웹 화면

 

 

▶ 테스트용 컨트롤러 작성

 

컨트롤러 작성

저는 home.jsp를 그대로 사용했기 때문에  리다이렉트:/ 해주겠습니다.

컨트롤러는 개발환경에 알맞게 작성해주세요~

 

 

 

 

▶ 자바스크립트 작성

 

더블써밋 플래그변수로 false 를 부여한 후에 넘기기 버튼을 누르게 되면서 submit을 타게 되면 true가 된다 !

그럼 submit이 처리중일떄 아무리 넘기기버튼을 눌러도 넘기기 중입니다 라고 뜨고,

써밋이 중복되서 실행되지 않게 된다.

 

여러번 클릭하게되면 설정해두었던 alert창이 뜨게 됩니다.

써밋이 처리되고 나면 리로드되기때문에 플래그는 다시 false가 되서 넘기기 버튼이 활성화됩니다.

 

 

▶ alert 넘기기 중입니다.

 

넘기기 버튼 연속으로 클릭 시 나오는 alert

 

 

 

▶ ajax 더블써밋 방지

 

ajax 더블써밋 방지

 

ajax는 리로드 되지않는 비동기이기때문에 ajax처리 후 다시 더블써밋 플래그를 false로 줘야합니다.

ajax 소스코드는 그냥 예제용이고 실질적으로 소스가 돌아가지는 않습니다 !!

 

 

 

 

써밋이 너무 빠르게 지나가서 아무리 클릭해도 넘기기 중이 안뜰경우

 

submit 에 타이머 부여

빠른 써밋때문에 테스트가 불가능하면 submit에 1초를 임의로 줘서 해보셔도 됩니다 !

 

 

 

 

▶ 더블써밋 방지 소스코드 

 

 

 

 

▶ ajax 더블써밋 소스코드 예제

 

반응형

댓글