2013-09-02 7 views
3

세션이 Java로 만료되기 전에 사용자에게 경고하는 방법은 무엇입니까?세션이 Java로 만료되기 전에 사용자에게 경고하는 방법?

StackOverflow에서이 질문은 여러 번 논의됩니다. 하지만 제 질문은 약간 다릅니다. 기존 애플리케이션을 수정할 필요가 있습니다. 내 신청서가 아주 큽니다. 사용자의 응답이없는 경우 30 분 후에 세션이 만료됩니다. 세션이 만료되기 전에 알림을 표시하고 싶습니다. 25 분에 말합니다. 사용자에게 세션 만료에 대한 프롬프트를 표시하고 싶습니다.

내 응용 프로그램에는 2000 개가 넘는 jsp가 사용되고 공통 js가 사용되지 않습니다. 그래서 모든 JSP 파일을 세션 타임 아웃을 검사하기위한 자바 스크립트 코드를 포함하도록 변경할 수는 없습니다.

처리 방법은 무엇입니까?

+1

Java가 아닌 Javascript의 클라이언트 측에서이 작업을 수행하는 것이 가장 좋습니다. –

+0

@Stephen C : 답변 해 주셔서 감사합니다. 내 응용 프로그램이 2000 개가 넘는 파일이 있습니다. 모든 2000 페이지에서 자바 스크립트 코드를 만들 수 없습니다. – Elayaa

+1

@Elayaa : 서버에 하나의 자바 스크립트 파일을 유지하고 모든 페이지에서 호출 할 수 있습니다. –

답변

3

iframe을 만들고 jsp 페이지를 그 안에 넣습니다.

상단 페이지에서 iframe이있는 경우 jsp 페이지의 자바 스크립트 모니터를 바꿔야합니다 (https://stackoverflow.com/a/1930942/67566).

jsp 페이지가 25 분 후에 변경되지 않으면 사용자에게 경고 할 수 있습니다.

jsp 페이지에서 ajax 호출을 사용하는 경우 문제가 더 많이 발생하지만 jsp 페이지가 너무 많아서 내가 그렇지 않다고 추정 할 수 있습니다.

+0

감사합니다. 모든 2000 JSP 페이지를 수정하고 싶습니까? 복잡한 것입니다. – Elayaa

+0

@Elayaa - 자바 스크립트가 검사를 수행하므로 JSP 페이지를 수정할 필요가 없습니다. –

-1

SessionListeners을 사용하십시오.

HttpSessionListener을 구현하면 세션이 만료되기 전에 사용자에게 알릴 수 있습니다.

Have a look at this sample example

편집 :

다음은 무시할 수있는 두 가지 방법, 세션을 만들 때 세션이 각각 파괴 될 때 sessionCreated(HttpSessionEvent se)sessionDestroyed(HttpSessionEvent se)이 그들은라고이다. 다음은 샘플 스 니펫입니다.

 public void sessionCreated(HttpSessionEvent se) 
{ 
    HttpSession session = se.getSession(); 
    System.out.print(getTime() + " (session) Created:"); 
    System.out.println("ID=" + session.getId() + " MaxInactiveInterval="+ 
    session.getMaxInactiveInterval()); 
    } 
public void sessionDestroyed(HttpSessionEvent se) 
{ 
    HttpSession session = se.getSession(); 
    // session has been invalidated and all session data 
    //(except Id)is no longer available 

    System.out.println(getTime() + " (session) Destroyed:ID=" 
    + session.getId()); 
} 
private String getTime() 
{ 
    return new Date(System.currentTimeMillis()).toString(); 
} 

이러한 방법으로 논리를 작성할 수 있습니다.

+0

HttpSessionListener는 세션이 생성되거나 소멸되면 호출합니다. 하지만 세션이 만료되기 전에 메시지를 표시하려고합니다. 이 작업을 수행하는 방법? – Elayaa

+0

@ 엘리아야 나는 당신을 도울 수있는 대답을 편집했습니다 – MaheshVarma

+0

@MaheshVarma 당신의 대답이 올바르지 않습니다. sessio가 만료되기 전에 클라이언트 측에서 팝업을 표시하려고합니다! ... –

관련 문제