2009-12-31 3 views

답변

10

HttpSession#getMaxInactiveInterval()setTimeout()을 사용하십시오. 모든 클라이언트 활동 (폴링)에 대한 시간 초과를 연기하고 싶지 않으면 Ajax를 사용할 필요가 없습니다.

기본 예 :

<script> 
    var secondsBeforeExpire = ${pageContext.session.maxInactiveInterval}; 
    var timeToDecide = 15; // Give client 15 seconds to choose. 
    setTimeout(function() { 
     alert('Your session is about to timeout in ' + timeToDecide + ' seconds!') 
    }, (secondsBeforeExpire - timeToDecide) * 1000); 
</script> 

당신이 HTML DOM 트리를 통해 컨텐츠를 제어 할 수있어서, 당신은 사업부와 오버레이가 필요합니다 기본 alert() 대신 다음, 마술 메시지 내부의 시간을 감소하기 동적으로 텍스트를 변경하려면 1 초에 다른 setTimeout()을 사용하십시오.

EL이 작동하려면이 스크립트가 JspServlet에 의해 제공되어야합니다. 따라서 JSP 페이지의 HTML <head>에 스크립트를 넣거나 모든 JS를 별도의 *.js 파일에 포함하려면 JspServlet*.js 요청을 처리해야합니다.

+0

정말 도움이되는 제안 사항입니다. 감사. –

+0

맞습니다. AJAX에 대한 엄격한 필요는 없지만 세션을 업데이트하기 위해'XMLHttpRequest'를 사용하는 것에 대한 좋은 점은 사용자가 타임 아웃을 피하기 위해 이동할 필요가 없다는 것입니다. 예를 들어 양식을 작성할 때이 방법이 유용 할 수 있습니다. –

+0

"JS를 모두 별도의 * .js 파일에 넣으려면 JspServlet에서 * .js 요청을 처리하게해야합니다."- pls로 설명 할 수 있습니까? JS에 익숙하지 않습니다. jsp 페이지가 많기 때문에이 함수를 별도의 * .js 파일에 넣어야합니다. 이런 식으로 작동하려면 어떻게해야합니까? @BalusC –

1

자바/자바 EE는 클라이언트 측 (자바 스크립트 사용)에서 처리해야하기 때문에 여기서는 도움이 될 것 같지 않습니다. 내가 생각할 수있는 한 가지 해결책은 사용자에게 서버의 시간 초과가 발생하기 몇 분 전에 알려주는 일종의 타이머를 설정하는 것입니다. 이것에 대해 인터넷 검색을하는 동안

, 나는 에릭 Pascarello의 Update User's Session with AJAX 블로그 게시물 (그리고 리로디드 버전 Updating User Session with Ajax - Round 2) 바로 이러한 솔루션에 대해 설명합니다 (세션을 업데이트하기 XMLHttpRequest를 사용) 발견했다. 그의 Ajax 세션 관리 스크립트는 here입니다.

+0

BTW 아무 링크도 작동하지 않습니다. –

+0

스크립트에 대한 링크는 괜찮습니다. 다른 두 가지는 웹 아카이브에서 찾을 수 있습니다. https://web.archive.org/web/20081203190028/http://radio.javaranch .com/pascarello/2005/10/25/1130246930301.html –

관련 문제