Framework/Spring

[MVC] Controller - View : Cookie로 작업 종료 알림

콩이볼 2019. 3. 29. 11:51

View 에서 작업을 실행시키고 종료에 따른 이벤트를 구현할 때는 보통 ajax를 이용했다.

하지만 Controller로 background 작업을 할 때 작업 종료 알림을 받아야 하는 경우가 있다.

(Excel 파일 생성 완료 후 알림)

 

View에서는 Cookie를 생성하고 주기적으로 Cookie를 검사하여 값이 바뀌면 작업을 종료한다.

Controller에서 작업이 끝나면 Cookie의 값을 바꿔 return 해준다. 

 

- 이를 이용해 File Download 중 loading bar나 progress bar 구현이 가능하다.

 

//view.jsp

 

/** javascript 함수 호출 부분**/
setCookie("fileDownloadToken","false"); //Cookie 생성
checkDownloadCheck();// Cookie Token 값 체크


/**
javascript 함수
**/
function setCookie(c_name,value){
	    var exdate=new Date();
	    var c_value=escape(value);
	    document.cookie=c_name + "=" + c_value + "; path=/";
	}

//일정 주기마다 Cookie Token 값  체크
	function checkDownloadCheck(){
		FILEDOWNLOAD_INTERVAL = setInterval(function() {
			 if (document.cookie.indexOf("fileDownloadToken=true") != -1) {
		        $.cookie('fileDownloadToken', null, {
		          expires : 0,
		          path : location.pathname
		        });
		        clearInterval(FILEDOWNLOAD_INTERVAL);
                //작업 종료 시 이벤트
		      }
		    }, 500);
	}

 

//Controller

 

CookieGenerator cg = new CookieGenerator();
cg.setCookieName("fileDownloadToken");
cg.setCookiePath("/");
cg.addCookie(response, "true"); // 값 변경