2010-08-04 6 views
4

저는 자바 웹 세상을 처음 접합니다. 그래서 내가 바보 같은 말을하면 용서하십시오.JSP를 닫을 때 액션을 호출하십시오.

저는 struts 2와 함께 작업 중이며 jsp가 닫힐 때 파일 (서버에 위치)을 삭제해야합니다.

신체가 이것을하는 방법을 알고 있습니까?

미리 감사드립니다.

답변

7

window.onunload 제안 사항은 좋지만 AJAX 요청이 서버에 도착한다는 보장은 없습니다. 아는 한, 특정 구성의 특정 IE 버전 만 ajax 요청을 성공적으로 전송합니다. Firefox와 다른 사람들은 그렇게하지 않을 것입니다. 그리고 나서 사용자가 JS를 사용할 수없는 경우에 대해서는 이야기하지 않습니다.

당신은 그것에 의지하고 싶지 않습니다. 오히려 세션 만료에 연결하십시오. HttpSessionListener 또는 HttpSessionBindingListener의 도움으로 세션의 (기존) 속성과 관련된 작업을 수행 할 수 있습니다.

예.

public class CleanupSession implements HttpSessionListener { 

    @Override 
    public void sessionDestroyed(HttpSessionEvent event) { 
     new File(somePath).delete(); 
    } 

    // ... 
} 

(세션 범위에 저장되어있는)에 "로그인 한 사용자"예의 경우

(a <listener>web.xml에 등록) 또는 :

public void User implements HttpSessionBindingListener { 

    @Override 
    public void valueUnbound(HttpSessionBindingEvent event) { 
     new File(somePath).delete(); 
    } 

    // ... 
} 
+0

미안 아직 투표 할 수 없지만 감사합니다. 시도해 보겠습니다. – Ecarrion

+0

반갑습니다. 브라우저 창/탭이 닫히면 세션은 즉시 삭제되지 않습니다. 그 후 30 분 동안 지속됩니다. 그러나 적어도 파일을 삭제하는 가장 확실한 방법입니다. – BalusC

+0

삭제해야하는 파일은 사용자에 따라 다르며 새 클래스를 정의해야하므로 메소드에 어떤 파일을 삭제할지 알리는 데 문제가 있습니다. – Ecarrion

관련 문제