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"); // 값 변경